始める無料で始める

CVaR を最小化する

この演習では、リスク管理の目的として CVaR の最小化を行うための PyPortfolioOpt のツールを練習します。

まず pypfopt.efficient_frontier モジュールから EfficientCVaR クラスを取得し、2005〜2010 年の投資銀行の資産データを用いてクラスのインスタンスを作成します。

その後、インスタンスの min_cvar() メソッドを使って、CVaR を最小化する最適なポートフォリオ比率を求めます。

ポートフォリオの資産リターンは returns ベクトルに入っています。この演習では、ポートフォリオ比率を銀行名に対応づけるための names 辞書も使用します。

この演習はコースの一部です

Pythonで学ぶ定量的リスク管理

コースを見る

演習の手順

  • pypfopt.efficient_frontier から EfficientCVaR クラスをインポートしてください。
  • returns を使って EfficientCVaR クラスのインスタンス ec を作成してください。平均分散最適化とは目的関数が異なるため、expected_returns は不要である点に注意してください。
  • ec.min_cvar() メソッドを使って最適なポートフォリオを求め、表示してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import the EfficientCVaR class
from pypfopt.____ import EfficientCVaR

# Create the efficient frontier for CVaR minimization
ec = ____(None, ____)

# Find the cVaR-minimizing portfolio weights at the default 95% confidence level
optimal_weights = ec.____()

# Map the values in optimal_weights to the bank names
optimal_weights = { names[i] : optimal_weights[i] for i in optimal_weights}

# Display the optimal weights
print(optimal_weights)
コードを編集して実行