julia で株価の推移をplotしてみた

February 12, 2025 – 4:06 pm

julia で日本株の株価データを取得できるか調べてみると、YFinance.jlを使い簡単にできることが分かった。

YFinance.jlは、pythonのyfinanceのjulia版といったところで、これで取得した株価情報dataをDataFrame上に展開することにより、いろいろなことができるようだ。

ひとつのサンプルとして、日経平均の1年間の株価推移をplotしてみた:


juliaの動作環境は以下:

Julia Version 1.11.2
Commit 5e9a32e7af2 (2024-12-01 20:02 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 6 × Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 6 virtual cores)
Environment:
  LD_GOLD = /home/anacon/anaconda3/envs/jupyter_lab/bin/x86_64-conda-linux-gnu-ld.gold

使用Packageの読み込み

using YFinance
using DataFrames
using Dates
using TimeSeries
using Plots

関数get_pricesを用いて日経平均(^N225)の1年間の日変化を求め、DataFrameに展開

tickers="^N225";
df = get_prices.(tickers, range="1y", interval="1d",exchange_local_time=true) |> DataFrame;

DataFrame dfの中身(最初の6行のみ):

6×8 DataFrame
Row	ticker	timestamp	   open   high  low	close	 adjclose  vol
        String	DateTime	   Float64 Float64 Float64	Float64	 Float64  Float64
1	^N225	2024-02-13T09:00:00 37248.4 38010.7 37184.1	37964.0	 37964.0  1.405e8
2	^N225	2024-02-14T09:00:00 37712.9 37825.9 37594.5	37703.3	 37703.3  1.203e8
3	^N225	2024-02-15T09:00:00 38017.8 38188.7 37935.4	38157.9	 38157.9  1.3e8
4	^N225	2024-02-16T09:00:00 38517.4 38865.1 38361.6	38487.2	 38487.2  1.517e8
5	^N225	2024-02-19T09:00:00 38473.4 38555.8 38281.7	38470.4	 38470.4    1.02e8
6	^N225	2024-02-20T09:00:00 38510.4 38742.3 38288.0	38363.6	 38363.6    1.085e8

timestampカラムの型を DateTimeからDateに変換し、tickerカラムをdfから除く:

df.timestamp = Date.(map(x->Dates.format(x,"yyyy-mm-dd"), df.timestamp)):
df_ticker = select!(df, Not(:ticker));

修正後のdf(df_ticker)の中身(最初の6行目のみ):

6×7 DataFrame
Row	timestamp	open	high	low	close	adjclose vol
Date	Float64	        Float64	Float64	Float64	Float64	Float64
1	2024-02-13	37248.4	38010.7	37184.1	37964.0	37964.0	1.405e8
2	2024-02-14	37712.9	37825.9	37594.5	37703.3	37703.3	1.203e8
3	2024-02-15	38017.8	38188.7	37935.4	38157.9	38157.9	1.3e8
4	2024-02-16	38517.4	38865.1	38361.6	38487.2	38487.2	1.517e8
5	2024-02-19	38473.4	38555.8	38281.7	38470.4	38470.4	1.02e8
6	2024-02-20	38510.4	38742.3	38288.0	38363.6	38363.6	1.085e8

DataFrame df_tickerをTimeArrayに変換:

time_array = TimeArray(df_ticker, timestamp=:timestamp)

TimeFrame変換後のData

245×6 TimeArray{Float64, 2, Date, Matrix{Float64}} 2024-02-13 to 2025-02-12
│            │ open       │ high       │ low        │ close      │ adjclose   │
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
│ 2024-02-13 │ 37248.3594 │ 38010.6914 │ 37184.1016 │ 37963.9688 │ 37963.9688 │
│ 2024-02-14 │ 37712.8711 │ 37825.8516 │ 37594.4688 │ 37703.3203 │ 37703.3203 │
│ 2024-02-15 │ 38017.8281 │ 38188.7383 │ 37935.3594 │ 38157.9414 │ 38157.9414 │
│ 2024-02-16 │ 38517.3711 │ 38865.0586 │ 38361.5508 │ 38487.2383 │ 38487.2383 │
│ 2024-02-19 │ 38473.4102 │ 38555.8398 │ 38281.6992 │ 38470.3789 │ 38470.3789 │
   ⋮
│ 2025-02-05 │ 38979.2109 │ 39118.9492 │ 38682.1797 │ 38831.4805 │ 38831.4805 │
│ 2025-02-06 │ 38977.5781 │ 39190.1289 │ 38851.5117 │ 39066.5312 │ 39066.5312 │
│ 2025-02-07 │ 38907.7617 │ 39007.9414 │ 38753.1992 │ 38787.0195 │ 38787.0195 │
│ 2025-02-10 │ 38736.3711 │ 38895.7383 │ 38606.3203 │ 38801.1719 │ 38801.1719 │
│ 2025-02-12 │ 39049.1211 │ 39102.6484 │ 38821.3203 │ 38863.8203 │ 38863.8203 │


plotコマンド
DataFrame df_tickerをTimeArrayに変換:

plot(time_array[:open, :high, :low, :close])

ブログ冒頭に示した図が出力される。


Post a Comment