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)