ボラティリティと極値

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

Jamsheed Shorish

Computational Economist

Chow検定の前提

  • Chow検定:構造変化の統計的有意性を判定
  • 要件:構造変化点を事前に特定
  • 要件:線形関係(例:ファクターモデル) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

構造変化点を示す中国の人口増加の画像

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

構造変化の兆候

  • トレンドの可視化だけでは変化点は見えないことがある
  • 代替:トレンドではなくボラティリティを見る
    • 構造変化は不確実性の増大=ボラティリティを伴いがち
    • よりリッチなモデル(例:確率的ボラティリティ)を検討可能

可能な構造変化点を示す月次ボラティリティの画像

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

ローリングウィンドウのボラティリティ

  • ローリングウィンドウ:時系列でボラティリティを計算し変化を検出
  • 復習:30日ローリングウィンドウ

    • 「.rolling()」でウィンドウ作成
    • ウィンドウの標準偏差を計算(欠損日は除外)
    • 関心の要約統計を算出(例:.mean()、.min() など)

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
Pythonで学ぶ定量的リスク管理

ローリングウィンドウのボラティリティ

  • 得られたボラティリティ(分散・標準偏差)を可視化する
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

月次平均ボラティリティの画像

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

ローリングウィンドウのボラティリティ

  • 得られたボラティリティ(分散・標準偏差)を可視化
  • ボラティリティの大きな変化 ⇒ 構造変化点の可能性
  • 提案されたブレークポイントをボラティリティの線形モデルに適用
    • Chow検定の変法
  • 例:ARCH・確率的ボラティリティモデル適用の指針
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

月次ボラティリティの変化率の画像

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

極値

  • VaR、CVaR:特定信頼水準での最大損失・期待ショートフォール
  • VaRをプロットして最大損失の変化を可視化?
    • 大規模データで有用
    • 小規模データでは情報不足
  • 代替:ある閾値を超える損失を抽出
  • 例:$\text{VaR}_{95}$ は95%の期間での最大損失
    • つまり5%の期間で損失は $\text{VaR}_{95}$ を超えうる
  • バックテスト:過去データで事後的にリスク推定を検証
    • 企業のリスク管理で広く利用
Pythonで学ぶ定量的リスク管理

バックテスト

  • 仮に $\text{VaR}_{95} = 0.03$ とする
  • 3%超の損失は極値
  • バックテスト:過去損失の約5%(100%−95%)が3%を超えるはず
    • 5%超:裾の厚い分布
    • 5%未満:裾の薄い分布
  • バックテストにはCVaRの方が裾をより反映

損失と95% VaR閾値の画像

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

Let's practice!

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

Preparing Video For Download...