尾部风险评估

Python 投资组合风险管理入门

Dakota Wixom

Quantitative Analyst | QuantCourse.com

尾部风险评估

尾部风险指极端投资结果的风险,尤其是分布负尾。

  • 历史回撤
  • 在险价值(VaR)
  • 条件在险价值(CVaR)
  • 蒙特卡罗模拟
Python 投资组合风险管理入门

历史回撤

回撤是相对历史累计高点的百分比损失。

$$ \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 投资组合风险管理入门

历史在险价值

在险价值(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 投资组合风险管理入门

历史预期损失(ES)

条件在险价值(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...