カーネル密度推定

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

Jamsheed Shorish

Computational Economist

ヒストグラムの再確認

  • リスク要因分布
    • 仮定する(例: Normal, T など)
    • 当てはめる(パラメトリック推定、モンテカルロ)
    • 無視する(ヒストリカル・シミュレーション)
  • 実データ: ヒストグラム
  • ヒストグラムを確率分布で表すには?
    • フィルタでデータを滑らかにする
    • ノンパラメトリック推定

損失のヒストグラム

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする

ヒストグラムの軸

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積

観測値が蓄積する画像

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積

観測値が蓄積する画像

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積

観測値が蓄積する画像

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積
  • 特定のポートフォリオ損失を選ぶ

損失と矢印で示した特定の損失

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積
  • 特定のポートフォリオ損失を選ぶ
    • 近傍の損失を調べる

観測値上に重ねたカーネル窓

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積
  • 特定のポートフォリオ損失を選ぶ
    • 近傍の損失を調べる
    • 損失の「重み付き平均」を作る
  • カーネル: フィルタの種類。窓幅を決める

カーネルによる重み付き平均の図示

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積
  • 特定のポートフォリオ損失を選ぶ
    • 近傍の損失を調べる
    • 損失の「重み付き平均」を作る
  • カーネル: フィルタの種類。窓幅を決める
    • 窓を別の損失へ移動

2つ目のカーネル位置の画像

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

データの平滑化

  • フィルタ: ヒストグラムの「凸凹」を滑らかにする
  • 観測値が時間とともに蓄積
  • 特定のポートフォリオ損失を選ぶ
    • 近傍の損失を調べる
    • 損失の「重み付き平均」を作る
  • カーネル: フィルタの種類。窓幅を決める
    • 窓を別の損失へ移動
  • カーネル密度推定: 確率密度を推定

カーネル密度推定の画像

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

ガウシアンカーネル

  • 連続カーネル
  • 中心からの距離で全観測値に重み付け
  • 一般に: 多様なカーネルがある
    • 時系列解析で使用
    • 信号処理で使用

ガウシアンカーネルの画像

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

PythonでのKDE

from scipy.stats import gaussian_kde

kde = guassian_kde(losses)
loss_range = np.linspace(np.min(losses), np.max(losses), 1000)
plt.plot(loss_range, kde.pdf(loss_range))
  • 可視化: KDEで当てはめた確率密度関数

ガウシアンKDEの推定プロット

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

KDEでVaRを求める

  • VaR: gaussian_kde の .resample() を使用
  • 得られたサンプルの分位点を計算
  • CVaR: 期待値は以前と同様だが
    • gaussian_kde に .expect() はない => 積分を手計算
    • 演習用に特別な .expect() を用意
sample = kde.resample(size = 1000)

VaR_99 = np.quantile(sample, 0.99)
print("VaR_99 from KDE: ", VaR_99)
VaR_99 from KDE: 0.08796423698448601
Pythonで学ぶ定量的リスク管理

練習しましょう!

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

Preparing Video For Download...