始める無料で始める

極端値とバックテスト

極端値とは、あるしきい値を超える値のことで、VaR などのリスク指標が損失リスクを正しく反映しているかを判断するのに使われます。

ここでは、等加重の投資銀行ポートフォリオについて 2009〜2010 年の 95% VaR を計算し(これは 2010 年以降のヒストリカル・シミュレーションに相当します)、その後 2007〜2008 年のデータでバックテストを行います。

2009〜2010 年のポートフォリオ損失は estimate_data にあり、ここから 95% VaR 推定値を計算します。続いて、利用可能な backtest_data に含まれる 2007〜2008 年のポートフォリオ損失から、その VaR 推定値を超える極端値を見つけます。

極端値の相対頻度を 95% VaR と比較し、最後にステムプロットで極端値を可視化しましょう。

この演習はコースの一部です

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

コースを見る

演習の手順

  • np.quantile() を使って estimate_data の 95% VaR を計算します。
  • VaR_95 を損失のしきい値として用い、backtest_data から extreme_values を抽出します。
  • extreme_values の相対頻度を VaR_95 の推定値と比較します。同じになっていますか?
  • 危機時に大きな乖離がどのようにクラスター化したかが分かるように、extreme_values のステムプロットを表示します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Compute the 95% VaR on 2009-2010 losses
VaR_95 = ____.____(estimate_data, 0.95)

# Find backtest_data exceeding the 95% VaR
extreme_values = backtest_data[____ > VaR_95]

# Compare the fraction of extreme values for 2007-2008 to the Var_95 estimate
print("VaR_95: ", VaR_95, "; Backtest: ", len(____) / len(backtest_data) )

# Plot the extreme values and look for clustering
plt.stem(extreme_values.index, ____)
plt.ylabel("Extreme values > VaR_95"); plt.xlabel("Date")
plt.show()
コードを編集して実行