ボラティリティのための共分散の計算
MPT(現代ポートフォリオ理論)では、リスクをボラティリティで定量化します。ポートフォリオのボラティリティを計算する数式は複雑で、日次リターンの共分散が必要です。ここでは、returns_monthly DataFrameの各月をループ処理し、日次リターンの共分散を計算します。
pandasの日時インデックスを使うと、df.index.month と df.index.year で月と年にアクセスできます。これを利用して、ループ内の現在の月・年に対応する日次リターンを取得するマスクを returns_daily に対して作成します。次に、df[mask] の形式でマスクを使ってDataFrameを絞り込みます。これにより、ループの各サイクルで現在の月・年に該当する returns_daily のエントリが取得できます。最後に、pandasの .cov() メソッドを使って日次リターンの共分散を求めます。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
returns_monthlyのインデックスをループで処理します。returns_monthlyの現在の月・年を使い、ループ内のiの月・年と照合するマスクをreturns_dailyに対して作成します。- そのマスクを
returns_dailyに適用し、.cov()を使って共分散を計算します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:
# Mask daily returns for each month and year, and calculate covariance
mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
# Use the mask to get daily returns for the current month and year of monthy returns index
covariances[i] = returns_daily[____].cov()
print(covariances[i])