極端値とバックテスト
極端値とは、あるしきい値を超える値のことで、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()