始める無料で始める

ボラティリティのための共分散の計算

MPT(現代ポートフォリオ理論)では、リスクをボラティリティで定量化します。ポートフォリオのボラティリティを計算する数式は複雑で、日次リターンの共分散が必要です。ここでは、returns_monthly DataFrameの各月をループ処理し、日次リターンの共分散を計算します。

pandasの日時インデックスを使うと、df.index.monthdf.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])
コードを編集して実行