Hill 估计量与尾部指数:量化收益分布到底有多肥
『肥尾』被说滥了,但到底多肥?尾部指数 α 给出一个数:P(X>x) ~ x^(-α),α 越小尾越肥,且 α 直接判决矩的生死——α<4 峰度不存在、α<2 方差都没了。Hill 估计量用前 k 个顺序统计量的对数间距把 α 从数据里榨出来,本文从公式到陷阱走全程:三个已知真值的分布验证(Pareto α=2 估出 2.02 近乎完美,但 t(5) 只估出 3.87——慢收敛尾部的负偏差实锤);GARCH+t(4) 合成收益的左右尾 Hill Plot(左尾 α̂=2.65,波动聚集把无条件尾部拖得比创新项 t(4) 更肥,这是特征不是 bug);log-log 生存函数图上幂律直线与正态跳水的视觉对决;Weissman 外推算『百年一遇』:幂律给 16.5% 单日损失、正态给 3.0%,样本内最差实际 7.16% 已两倍于正态的百年一遇。最狠的是 300 次蒙特卡洛的小样本实验:n=250(一年日线)时 α̂=2.52±0.47(真值 3),系统性负偏 + 巨大方差——一年数据测尾部指数等于用体温计量海深。拆穿 k 选择的 Hill horror plot、样本依赖性、外推杠杆三类陷阱(中高阶)。
先说结论:“肥尾”不该是个形容词,该是个数。尾部指数 α 就是这个数:,α 越小尾巴越肥,而且它直接判决矩的生死——α<4 时峰度不存在,α<2 时连方差都没了(你算的历史波动率是个不收敛的随机数)。Hill 估计量是从数据里榨出 α 的经典工具,但它同时也是量化圈误用重灾区:实测显示 n=250(一年日线)时估计值 2.52±0.47(真值 3.0)——系统性负偏加上巨大方差,一年数据测尾部指数等于用体温计量海深。
一、尾部指数:一个数判决矩的生死#
幂律尾 有个残酷的性质:k 阶矩存在当且仅当 k < α。对照表:
| α 范围 | 后果 |
|---|---|
| α > 4 | 峰度存在,接近”温和肥尾” |
| 3 < α ≤ 4 | 峰度不存在——样本峰度随样本量增长而发散 |
| 2 < α ≤ 3 | 偏度不存在,方差勉强活着 |
| α ≤ 2 | 方差不存在,均值-方差框架整体报废 |
实证文献对股票日收益的共识大致是 α∈[3, 5]:方差存在(谢天谢地),峰度悬。这意味着任何依赖四阶矩的方法(比如用样本峰度做风控指标)在数学上就站不住。
二、Hill 估计量:对数间距的平均#
把样本降序排列 ,取前 k 个”尾部样本”,Hill 估计量是:
直觉:如果尾部真是幂律,顺序统计量的对数间距近似指数分布,其均值就是 1/α。代码只有三行:
import numpy as np
def hill(sorted_desc, k):
"""sorted_desc: 降序排列的正样本"""
xk = sorted_desc[k]
return 1.0 / np.mean(np.log(sorted_desc[:k] / xk))python先在已知真值上验货#
三个真值已知的分布,n=10000,画 α̂ 随 k 变化的 Hill Plot:
rng = np.random.default_rng(7)
cases = {
"Pareto α=2": np.abs(rng.pareto(2.0, 10000) + 1), # 真值 2
"Student-t df=3": np.abs(rng.standard_t(3, 10000)), # 真值 3
"Student-t df=5": np.abs(rng.standard_t(5, 10000)), # 真值 5
}python
k=250 处的成绩单:
- Pareto:真值 2.0,估出 2.02——近乎完美,因为 Pareto 是”纯”幂律,任何 k 都无偏
- t(3):真值 3.0,估出 2.73——负偏 9%
- t(5):真值 5.0,估出 3.87——负偏 23%!
这就是 Hill 估计量的第一课:它只对”渐近幂律”无偏,而 t 分布的尾部要走到很深才”变直”。α 越大(尾越薄),进入幂律区越慢,有限样本下的负偏越狠。看到论文报”某资产 α̂=3.5”,真值很可能在 4 以上。
三、上金融数据:左右尾各有多肥#
用 GARCH(1,1)+t(4) 合成 5000 天收益(同前一篇 EVT 文的生成过程),左尾(损失)右尾(盈利)分开估:

k=150 处:左尾 α̂=2.65,右尾 α̂=2.59。有意思的是创新项明明是 t(4)(α=4),无条件分布的尾巴却肥得多——GARCH 波动聚集把尾部进一步增肥:极端收益 = 肥尾创新 × 高波动状态,两个随机数的乘积比任何一个都更极端。这是特征不是 bug——真实市场同时具备两种机制,无条件尾部指数天然低于”创新项”的尾部指数。
log-log 生存函数图给出最直观的视觉证据:

幂律尾在双对数轴上是直线(斜率 -α),正态分布则是不断加速的跳水曲线。数据点在尾部乖乖趴在直线上,离正态曲线越来越远——肥尾不需要检验统计量,肉眼可辨。
四、Weissman 外推:给”百年一遇”标价#
有了 α̂ 就能外推样本外的深尾分位数(Weissman 公式):
算”20 年一遇”和”百年一遇”的单日损失:
| 事件 | 幂律外推 | 正态外推 | 样本内最差实际 |
|---|---|---|---|
| 20 年一遇 | 9.0% | 2.7% | 7.16% |
| 100 年一遇 | 16.5% | 3.0% | — |
正态说百年一遇是 3.0%——但样本内实际发生过 7.16%,是正态”百年一遇”的两倍还多,而样本只有 20 年。幂律外推的 9.0%(20 年)和实际最差 7.16% 在同一个量级,靠谱得多。对照现实:标普 500 在 1987 年 10 月 19 日单日 -20.5%,用正态外推那是”宇宙年龄内不该发生”的事件,用 α≈3 的幂律看只是个正常的世纪级样本。
五、最重要的一节:小样本下 Hill 是个危险玩具#
对 t(3)(真值 α=3)做 300 次蒙特卡洛,样本量从 250 到 10000:
| 样本量 | α̂ 均值 ± 标准差 |
|---|---|
| 250(一年日线) | 2.52 ± 0.47 |
| 1000(四年) | 2.62 ± 0.32 |
| 5000(二十年) | 2.76 ± 0.21 |
| 10000(四十年) | 2.78 ± 0.17 |

两个扎心事实:
- 一年数据的 95% 区间横跨 [1.6, 3.4]——从”方差不存在”到”温和肥尾”全覆盖,等于什么都没说
- 偏差不随样本量消失:四十年数据 α̂ 仍是 2.78,负偏 7%。因为 t 分布尾部收敛慢,加样本只能压方差,压不掉进入幂律区之前的结构性偏差
六、三个必躲的坑#
坑一:Hill horror plot——k 的选择能操纵结论#
Hill Plot 理想情况是”先抖动后走平”,取平台值。但很多真实数据的 Hill Plot 根本没有平台,一路斜下去(文献里叫 Hill horror plot),此时取 k=50 和 k=500 能给出差一倍的 α̂。诚实做法:报告整条 Hill Plot 而非单点;或用 bootstrap 选 k 的自动化方法(Danielsson et al.),但要接受它也只是把主观性藏进了另一层。
坑二:对绝对值、左尾、右尾分开估,结论可能不同#
实证上股票左尾常比右尾肥(崩盘比暴涨更极端)。把正负收益混在一起取绝对值估一个”总 α”,会掩盖这种不对称——风控关心的是左尾,就单独估左尾。
坑三:外推的杠杆效应#
Weissman 公式里 α̂ 在指数上:α̂ 从 2.65 挪到 3.0(都在置信区间内),百年一遇的估计从 16.5% 掉到 11%。外推越深,α̂ 的估计误差被放大得越狠。深尾外推的正确姿势是给区间不给点,且明说”这是模型外推,不是测量”。
七、实务清单#
- 用 20 年以上日线(n>5000)再谈尾部指数,一年数据出来的数字请当噪声
- 报告 α̂ 必须带 Hill Plot 全图 + k 的选择依据,单点数字没有审计价值
- 左右尾分开估;对 GARCH 滤波后的残差再估一次,分清”波动聚集贡献的肥”和”创新项本身的肥”
- α̂<3 时警惕一切依赖方差稳定性的模型(均值-方差优化、Sharpe 排名),α̂<4 时别再引用样本峰度
- Hill 告诉你尾巴的斜率,EVT/GPD 给出完整的尾部分布——前者是诊断,后者才是定价工具,配合使用
“肥尾”从形容词变成一个带置信区间的数,风险管理才算从文学进入了科学。