Python の yfinance を使って、日次の収益率を計算する方法を書いていきます。
注意事項
コード例
以下のコードは、S&P500(^SPX)の収益率を計算して、CSVに出力する例です。
import pandas as pd import yfinance as yf # 取得データ ticker = '^SPX' start = 2023 end = 2024 # 日次データを少し余分に取得(昇順) yft = yf.Ticker(ticker) df = yft.history( start=f'{start-1}-12-20', end=f'{end+1}-01-10', auto_adjust=False, actions=True ) # 起点となる12月末のデータを抽出 idf = df[df.index.year == start-1] idate = idf.index.max() idf = idf.loc[[idate]] # 算出対象のデータを抽出して結合 df = df.loc[f'{start}-01-01':f'{end}-12-31'] df = pd.concat([idf, df]) # 日付と終値の列だけ抽出 df = df[['Close']] # 日次の収益率を算出 df['DTD'] = df['Close'].pct_change() # CSVに出力 df.to_csv('spx-dtd.csv', date_format='%Y-%m-%d')
DTDの列が、日次の収益率になります。
実行
上のコードを実行すると、spx-dtd.csv というファイルが出力されます。ファイルの先頭5行は以下の通りです。
Date,Close,DTD 2022-12-30,3839.5, 2023-01-03,3824.139892578125,-0.004000548879248611 2023-01-04,3852.969970703125,0.007538970575044379 2023-01-05,3808.10009765625,-0.011645528874622113
下は、表計算ソフトで開いたイメージです。

データの1行目が不要な場合は、収益率の算出後に削除すると良さそうです。