julia で株価の推移をplotしてみた
February 12, 2025 – 4:06 pmjulia で日本株の株価データを取得できるか調べてみると、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])ブログ冒頭に示した図が出力される。