估計尾端風險

Python 投資組合風險管理入門

Dakota Wixom

Quantitative Analyst | QuantCourse.com

估計尾端風險

尾端風險(Tail risk) 指的是投資報酬分配中極端結果的風險,特別是分配左尾的重大虧損。

  • 歷史回落幅度
  • 在險價值(VaR)
  • 條件在險價值(CVaR)
  • 蒙地卡羅模擬
Python 投資組合風險管理入門

歷史回落幅度

回落幅度(Drawdown) 是指從歷史累積報酬的高點起算的百分比跌幅。

$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

  • $r_t$:時間 t 的累積報酬
  • $RM$:歷史滾動最大值
USO 石油 ETF 的歷史回落幅度

Python 投資組合風險管理入門

用 Python 計算歷史回落幅度

假設 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
Python 投資組合風險管理入門

歷史在險價值

在險價值(Value at Risk, VaR) 指在給定信心水準下,虧損不會(更精確地說,歷史上不曾)超過某一門檻。

VaR 常用分位數有 95、99、99.9。

範例:VaR(95) = -2.3%

以歷史值來看,在單日內有 95% 的把握「虧損不會超過」-2.3%。

Python 投資組合風險管理入門

用 Python 計算歷史 VaR

var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
var_95
-0.023
Python 投資組合風險管理入門

歷史期望虧損(Expected Shortfall)

條件在險價值(Conditional Value at Risk, CVaR) 是在最差的 1 - x% 情境中,預期虧損的估計值。

CVaR 常用分位數有 95、99、99.9。

 

範例:CVaR(95) = -2.5%

 

在最差的 5% 情況下,歷史上「平均虧損超過」-2.5%。

Python 投資組合風險管理入門

用 Python 計算歷史期望虧損

假設你有 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 投資組合風險管理入門

一起來練習吧!

Python 投資組合風險管理入門

Preparing Video For Download...