Julia で株価の推移をplotしてみた(複数の株価を比較)

February 13, 2025 – 3:23 pm

前回は過去1年間の日経株価の推移をplotした。

今回は、特定の日時の株価を100にし、複数のその後の株価推移をplotしてみる。plotの対象として、日経平均(^N225)とメガバンク4行(三菱UFJ(8306.T)、三井住友FG(8316.T)、りそなHD(8308.T)、みずほFG(8411.T))を選んだ。

2023年1月1日(株価は4日)の株価を100としたときの推移をplotしたものが以下:

この図を出力するうえで、DataFrames に含まれる様々な機能を使っており、JuliaのDataFramesが極めて効果的であることがわかる。特に、Pythonのpandasの操作に比べてシンプルであることが理解できると思う。

以下、上記のplot図を作成するソースを掲げる:

using YFinance
using Dates
using DataFrames
using TimeSeries
using Plots
 
function process_str(original_string)
    if ( occursin("^", original_string) )
         return replace( original_string, "^" => "" ) 
    else
        numbers = match(r"^\d{4}", original_string).match
        return "T" * numbers
    end
end

tickers = ["^N225", "8306.T", "8316.T", "8308.T", "8411.T"];
data = get_prices.(tickers, range="5y", interval="1d",exchange_local_time=true);
df = vcat([DataFrame(i) for i in data]...);
df.timestamp = Date.(map(x->Dates.format(x,"yyyy-mm-dd"), df.timestamp))

time_origin = "2023-01-01";
df_subset = df[ df.timestamp .>= Date(time_origin), :];

gdf = groupby(df_subset, :ticker);
df_close = DataFrame(timestamp = gdf[1].timestamp);
for i = 1:length(tickers)
    df_close[ !, Symbol( process_str( gdf[i][i,:ticker] ) )] = gdf[i].close;
end

for col in names(df_close)[2:ncol(df_close)]
    df_close[:, col] = df_close[:, col] ./ df_close[1, col] * 100.
end

time_array = TimeArray(df_close, timestamp=:timestamp);

plot( time_array[:N225, :T8306, :T8316, :T8308,:T8411] )

  


Post a Comment