Pythonで学ぶポートフォリオ・リスク管理入門
Dakota Wixom
Quantitative Analyst | QuantCourse.com
テールリスクとは、極端な投資結果が生じるリスクであり、特に分布の負の側面に注目します。
ドローダウンとは、過去の累積最高値からの損失率です。
$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

cum_rets が累積リターンのnp.arrayであると仮定します。
running_max = np.maximum.accumulate(cum_rets)
running_max[running_max < 1] = 1
drawdown = (cum_rets) / running_max - 1
drawdown
Date Return
2007-01-03 -0.042636
2007-01-04 -0.081589
2007-01-05 -0.073062
バリュー・アット・リスク(VaR)は、一定の信頼水準において損失がある水準を超えないとされる閾値です。
VaRは95、99、99.9などの分位数で表されます。
例:VaR(95) = -2.3%

過去の実績に基づき、特定の日の損失が -2.3%を超えない確率は95%です。
var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
var_95
-0.023
条件付きバリュー・アット・リスク(CVaR)は、最悪の上位1 - x%のシナリオにおける予想損失の推定値です。
CVaRは95、99、99.9などの分位数で表されます。
例:CVaR(95) = -2.5%

最悪の5%のケースでは、損失は平均的に -2.5%を上回っていました(過去実績)。
StockReturns が株式リターンの時系列データであると仮定します。
ヒストリカルCVaR(95)の計算:
var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
cvar_95 = StockReturns[StockReturns <= var_95].mean()
cvar_95
-0.025
Pythonで学ぶポートフォリオ・リスク管理入門