VaR と CVaR によるリスク管理

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

Jamsheed Shorish

Computational Economist

現代ポートフォリオ理論によるリスク管理

  • 効率的ポートフォリオ
    • 与えられたリスク水準でリターンを最大化するウエイト
  • 効率的フロンティア: 複数の効率的ポートフォリオが生む(リスク, リターン)点の集合
    • 各点=ウエイト最適化
  • 効率的ポートフォリオ/フロンティアの生成: 現代ポートフォリオ理論(MPT)

効率的フロンティアのプロット

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

MPT への VaR の組み込み

  • 現代ポートフォリオ理論(MPT): 「平均–分散」最適化
    • 期待リターンを最大化
    • リスク水準(ボラティリティ)は与えられる
    • 目的関数: 期待リターン
  • VaR/CVaR: 損失分布に基づくリスク指標
  • MPTを拡張し、期待リターンではなく損失分布で最適化
Pythonで学ぶ定量的リスク管理

新たな目的: CVaR を最小化

  • ポートフォリオ最適化の目的を変更
    • 平均–分散の目的: 期待リターンを最大化
    • CVaR の目的: 指定信頼水準での条件付き期待損失を最小化
  • 例: 損失分布
    • VaR: 95%信頼での最大損失
    • 最適化: CVaR を最小化するウエイト
    • CVaR: VaR 以上の損失(最悪5%)における期待損失
  • 最悪 100% − 95% = 5% の領域で最小の期待損失を探す
Pythonで学ぶ定量的リスク管理

リスク管理の定式化

  • 最適ウエイト $w^\star$ を次の解として選択

cvar_minimization

  • 注意: $f(x)$ はポートフォリオの損失の確率密度関数

  • PyPortfolioOpt: 目的を CVaR 最小化に設定可能

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

PyPortfolioOpt による CVaR 最小化

  • 資産リターン returns{{1}} で EfficientCVaR オブジェクトを作成
  • .min_cvar() メソッドで最適ウエイトを計算

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Pythonで学ぶ定量的リスク管理

平均分散 vs. CVaR のリスク管理

  • 平均分散の最小ボラティリティ・ポートフォリオ(2005–2010、投資銀行資産)
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Pythonで学ぶ定量的リスク管理

平均分散 vs. CVaR のリスク管理

  • CVaR 最小化ポートフォリオ(2005–2010、投資銀行資産)
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Pythonで学ぶ定量的リスク管理

Passons à la pratique !

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

Preparing Video For Download...