波动率与极端值

Python 中的定量风险管理

Jamsheed Shorish

Computational Economist

Chow 检验的假设

  • Chow 检验:判断潜在结构性断点的统计显著性
  • 要求:需预先给定断点
  • 要求:线性关系(如因子模型) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

显示结构性断点的中国人口增长图

Python 中的定量风险管理

结构性断点迹象

  • 趋势图可能未显示断点
  • 备选:观察波动率而非趋势
    • 结构性变化常伴随更大不确定性 => 波动率
    • 可考虑更丰富的模型(如随机波动率模型)

月度波动率及可能的结构性断点图

Python 中的定量风险管理

滚动窗口波动率

  • 滚动窗口:随时间计算波动率并检测变化
  • 回顾:30天滚动窗口

    • 使用".rolling()"方法创建滚动窗口
    • 计算滚动窗口的波动率(删除缺失日期)
    • 计算关注的汇总统计,如.mean().min()

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
Python 中的定量风险管理

滚动窗口波动率

  • 可视化得到的波动率(方差或标准差)
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

月度平均波动率图

Python 中的定量风险管理

滚动窗口波动率

  • 可视化得到的波动率(方差或标准差)
  • 波动率出现较大变化 => 可能存在结构性断点
  • 在线性波动率模型中使用建议的断点
    • Chow 检验的变体
  • 为应用如 ARCH、随机波动率模型提供参考
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

月度波动率百分比变化图

Python 中的定量风险管理

极端值

  • VaRCVaR:在给定置信水平下的最大损失与期望损失
  • 通过绘制 VaR 可视化最大损失的变化?
    • 对大样本有用
    • 小样本:信息不足
  • 替代:找出超过阈值的损失
  • 示例:$\text{VaR}_{95}$ 为95%时间内的最大损失
    • 因此有5%时间损失会超过 $\text{VaR}_{95}$
  • 回测:用历史数据事后检验风险估计表现
    • 在企业风险管理中广泛使用
Python 中的定量风险管理

回测

  • 假设 $\text{VaR}_{95} = 0.03$
  • 超过3%的损失即为极端值
  • 回测:约5%(100% - 95%)的历史损失应超过3%
    • 多于5%:分布尾部更厚
    • 少于5%:分布尾部更窄
  • CVaR用于回测:比 VaR 更能反映尾部

损失与95% VaR 阈值图

Python 中的定量风险管理

Passons à la pratique !

Python 中的定量风险管理

Preparing Video For Download...