現代ポートフォリオ理論

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

Jamsheed Shorish

Computational Economist

リスクとリターンのトレードオフ

  • リスク要因: リターンに影響する不確実性の源
  • 直感: 不確実性が高いほど(リスク大)、期待リターンも高い
  • 利回りは保証不可: 期待リターンの尺度が必要
    • 過去平均リターン: 期待将来リターンの近似
Pythonで学ぶ定量的リスク管理

投資家のリスク許容度

  • 投資家アンケート: あるリスク水準での必要な_最低_リターンは?
  • 回答は (リスク, リターン) のプロファイル「データ点」を作る
  • リスク水準を変える ⇒ 一連の (リスク, リターン) 点
  • 投資家のリスク許容度: リスクとリターンの定量的な関係を1本の曲線で定義
Pythonで学ぶ定量的リスク管理

ポートフォリオ比率の選択

  • あるポートフォリオの資産比率を変える ⇒ (リスク, リターン) の集合が得られる
  • 比率調整 = リスク管理の出発点
  • 目的: 指定リスクで期待リターンを最大化
    • 同値: 指定期待リターンでリスクを最小化
  • 比率調整 = 投資家のリスクエクスポージャを調整
Pythonで学ぶ定量的リスク管理

現代ポートフォリオ理論

  • 効率的ポートフォリオ: 指定リスクで期待リターンが最大の比率
  • 現代ポートフォリオ理論 (MPT), 1952年
    • H. M. マーコウィッツ(1990年ノーベル賞)
  • 効率的比率ベクトル $w^\star$ は次を解く:

効率的ポートフォリオを求める最適化問題の式

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

効率的フロンティア

  • さまざまなリスク水準で効率的ポートフォリオを多数計算
  • 効率的フロンティア: 効率的ポートフォリオが作る (リスク, リターン) の軌跡
  • PyPortfolioOpt ライブラリ: MPT向け最適化ツール
    • EfficientFrontier クラス: 最適ポートフォリオを1つずつ生成
    • Constrained Line Algorithm (CLA) クラス: フロンティア全体を生成
      • 収益率の共分散行列が必要
      • 期待将来リターンの近似: 過去平均リターン
Pythonで学ぶ定量的リスク管理

投資銀行ポートフォリオ 2005〜2010

  • 期待リターン: 過去データ
  • 共分散行列: Covariance Shrinkage で推定精度を向上
  • Constrained Line Algorithm オブジェクト CLA
  • 最小分散ポートフォリオ: cla.min_volatility()
  • 効率的フロンティア: cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
Pythonで学ぶ定量的リスク管理

効率的フロンティアの可視化

  • (ボラ, リターン) の散布図

効率的フロンティアを(リスク, リターン)の点で描いたグラフ

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

効率的フロンティアの可視化

  • (ボラ, リターン) の散布図
  • 最小分散ポートフォリオ: 取り得る効率的ポートフォリオ中で最も低ボラ

効率的フロンティア上で強調された最小分散ポートフォリオ

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

効率的フロンティアの可視化

  • (ボラ, リターン) の散布図
  • 最小分散ポートフォリオ: 取り得る効率的ポートフォリオ中で最も低ボラ
  • リスク許容度を上げる: フロンティアに沿って移動

効率的フロンティア上を、より高リスク・高リターン方向へ移動する矢印で示した図

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

Passons à la pratique !

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

Preparing Video For Download...