halo 的技术博客

返回

先说结论:正态分布不是”低估”了极端风险,是把极端风险直接从世界观里开除了。在 5000 天合成收益上实测:4σ 事件正态预期 0.32 次、实际发生 37 次,低估 117 倍;6σ 事件低估超过 100 万倍。极值理论(EVT)的聪明之处在于认怂——它不假装能拟合整个分布,只对”超越高阈值的那截尾巴”建模,而数学定理保证这截尾巴渐近服从广义帕累托分布(GPD)。实测结果:99.9% VaR 正态给 2.49%,EVT 给 4.68%,经验分位 4.69%——EVT 几乎精确命中,正态差了近一倍

一、正态分布的罪状清单#

先造一个像样的”市场”:GARCH(1,1) 波动聚集 + t(4) 肥尾创新项,5000 天(约 20 年日线):

import numpy as np
from scipy import stats

rng = np.random.default_rng(42)
n = 5000
omega, alpha, beta = 0.02e-4, 0.09, 0.88
sig2 = np.zeros(n); sig2[0] = omega / (1 - alpha - beta)
z = rng.standard_t(df=4, size=n) / np.sqrt(4 / 2)  # 标准化 t(4)

ret = np.zeros(n)
for t in range(1, n):
    sig2[t] = omega + alpha * ret[t-1]**2 + beta * sig2[t-1]
    ret[t] = np.sqrt(sig2[t]) * z[t]
ret += 0.0003          # 正漂移
loss = -ret            # 损失取正号
python

得到的序列:日波动 0.81%、超峰度 11.0、最差单日 -6.03%——和真实股指的典型事实相当接近。

收益序列与极端事件

现在数一数各个 σ 级别的极端事件,正态分布预期 vs 实际:

级别正态预期次数实际次数低估倍数
13.5887x
0.3237117x
0.003206977x
~010>100 万 x

尾部低估

注意规律:越往尾部走,低估越不是”误差”而是”数量级灾难”。正态分布的密度以 ex2/2e^{-x^2/2} 速度衰减,肥尾分布以幂律 xαx^{-\alpha} 衰减——两者在尾部的差距随 x 指数级拉开。用正态算 99% VaR 只错 20%,算 99.9% VaR 就错 100%,算”百年一遇”则完全是科幻小说。

二、EVT 的核心思想:只对尾巴建模#

EVT 的谦逊是它的力量:中间那 95% 的数据爱什么分布什么分布,我只问一个问题——给定损失已经超过高阈值 u,超越量 Y=LuY = L - u 服从什么分布?

Pickands–Balkema–de Haan 定理给出答案:对几乎所有常见分布(正态、t、Pareto、对数正态……),当 u 足够高时,超越量的条件分布收敛于广义帕累托分布(GPD)

Gξ,β(y)=1(1+ξyβ)1/ξG_{\xi,\beta}(y) = 1 - \left(1 + \frac{\xi y}{\beta}\right)^{-1/\xi}

两个参数各司其职:

  • ξ(形状参数):尾部性格。ξ>0 幂律肥尾(金融常态),ξ=0 指数尾(正态一族),ξ<0 有界尾。且 α = 1/ξ 就是尾部指数——ξ=0.25 意味着四阶矩(峰度)不存在
  • β(尺度参数):尾巴的”宽度”

这就是 POT(Peaks Over Threshold)方法:选阈值 → 收集超越样本 → MLE 拟合 GPD → 解析外推任意深度的分位数。

三、完整 POT 流程#

拟合出 ξ=0.216,隐含 α≈4.6——和生成过程的 t(4) 创新项几乎一致,GPD 从 250 个尾部样本里把数据的真实尾部性格挖了出来。QQ 图验证拟合质量:

GPD 拟合诊断

四、VaR/ES 对决:EVT vs 正态 vs 经验分位#

置信度正态 VaREVT VaR经验分位正态 ESEVT ES
99%1.87%2.27%2.23%2.14%3.30%
99.5%2.07%2.88%2.83%2.33%4.07%
99.9%2.49%4.68%4.69%2.71%6.37%

VaR/ES 对比

三个观察:

  1. 99.9% 处 EVT(4.68%)几乎精确命中经验分位(4.69%),正态(2.49%)差了 88%。而且 EVT 的优势在经验分位失效的更深处(99.99%+)才真正体现——样本里只有 5000 天,经验分位最多支撑到 99.98%,再深只能靠 GPD 的解析外推
  2. ES 的差距比 VaR 更大(99.9% 处 2.71% vs 6.37%)。ES 问的是”超过 VaR 之后平均亏多少”,恰恰是尾部形状最敏感的量——正态的指数尾在这里输得最惨
  3. 违反回测一锤定音:99% VaR 预期违反 50 次,正态实际违反 87 次(1.74%,风险被系统性低估),EVT 违反 49 次(0.98%,几乎完美校准)

五、诚实时间:三个没人爱提的坑#

坑一:阈值选择是无解的偏差-方差两难#

阈值太低 → GPD 渐近性不成立,拟合有偏;阈值太高 → 超越样本太少,方差爆炸。对阈值分位从 88% 扫到 98.5%:

阈值敏感性

ξ 的估计随阈值明显漂移,98% 以上置信带宽到没法用。实务折中是 90%~97.5% 分位间找”ξ 稳定平台”,但这个选择本身就引入了研究者自由度——报告 EVT 结果时不给阈值敏感性图的,都该被追问。

坑二:iid 假设被波动聚集当场击穿#

POT 理论假设超越事件独立出现,但 GARCH 世界里极端损失扎堆——一次危机贡献一串超越样本,有效样本量远小于表面的 250 个,置信区间被系统性低估。标准修法是去聚类(declustering):把连续的超越序列只取簇内最大值,或先用 GARCH 滤掉波动率再对标准化残差做 EVT(所谓条件 EVT/McNeil-Frey 两步法)。本文为演示清晰没做,实盘必须做。

坑三:ξ 的不确定性会被外推放大#

250 个样本估出的 ξ=0.216,95% 置信区间大约 ±0.1。看着不大?外推到 99.9% 分位时,ξ=0.12 和 ξ=0.32 给出的 VaR 能差 40%——外推越深,参数不确定性被幂律杠杆放大得越狠。负责任的做法是报告 VaR 的置信区间(profile likelihood),而不是一个假装精确的点估计。

六、实务建议#

  • 95% 以内的 VaR 用什么方法都差不多,99.5% 以深必须上 EVT——这是正态和历史模拟双双失效的区间
  • 先滤波动率再做 EVT(两步法),既修 iid 假设又让模型对波动率状态自适应
  • ξ 的点估计别当真理,阈值敏感性图 + 置信区间是交付标配
  • EVT 管的是”单资产尾部有多深”,不管”多资产尾部会不会一起来”——后者是 Copula 的领地,两者配合才是完整的尾部风险框架

黑天鹅无法预测,但它的”价格”可以估计。EVT 做的就是这件事:不预言下一次崩盘在哪天,只告诉你——当它来的时候,大概有多深。

极值理论 EVT 尾部风险:用广义帕累托分布给『黑天鹅』定价
https://blog.halo26812.eu.org/blog/extreme-value-theory-evt
Author halo
Published at 2026年7月25日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨