跳转到内容

收益分布与厚尾

教科书定价与经典组合理论都以正态收益为前提,但日频金融收益的峰度普遍在 3–10 之间(正态为 3),标普 500 单日超过 5 个标准差的下跌在正态假设下应几百万年出现一次,实际几十年内就有数次。厚尾不是统计噪声,而是市场结构的真实特征:杠杆、流动性传染与信息的不连续到达。

样本偏度与峰度的定义:

γ^3=1T∑t(rt−rˉ)3σ^3,γ^4=1T∑t(rt−rˉ)4σ^4.\hat{\gamma}_3 = \frac{\tfrac{1}{T}\sum_t (r_t - \bar r)^3}{\hat\sigma^3}, \qquad \hat{\gamma}_4 = \frac{\tfrac{1}{T}\sum_t (r_t - \bar r)^4}{\hat\sigma^4}.

关键在于这两个估计量自身的方差极大,且随样本长度收敛极慢(峰度估计的方差按 1/T1/T 收缩,但受极端值主导)。这意味着:单凭几百家公司的样本断言"该因子收益显著左偏"并不可靠。实践建议:

  • 至少用 5 年以上的日频数据估计高阶矩;
  • 先做 QQ 图目视诊断,再谈数值;
  • 报告峰度时同时报告其置信区间(可用自助法,见自助法与蒙特卡洛)。
分布适用直觉
学生 t(ν≈3\nu \approx 3–66)日频收益拟合的首选用一个自由度参数刻画尾部厚度
广义误差分布(GED)GARCH 族的标准搭配与 GARCH 组合时残差厚尾更好处理
混合正态区分"平静日"与"恐慌日"直觉清楚,但参数估计不稳定
稳定分布理论兴趣为主方差无穷大,与实际风险度量难衔接

拟合时用最大似然并检查 QQ 图,而不是只比较似然值。

fat-tails.py
import numpy as np
import pandas as pd
from scipy import stats
def tail_report(r: pd.Series) -> dict:
r = r.dropna()
z = (r - r.mean()) / r.std()
return {
"偏度": stats.skew(z),
"超额峰度": stats.kurtosis(z), # 正态为 0
"t 自由度": stats.t.fit(z)[0],
">4σ 天数占比": float((z.abs() > 4).mean()),
}
  1. VaR 系统性低估:按正态算的 99% VaR 在厚尾下会被频繁突破,应改用期望损失 ES 或直接用历史/模拟分布,见回撤、VaR 与止损。
  2. 夏普比率高估:SR 只用均值与方差,完全不看尾部;两条 SR 相同的策略,左偏的那条实质风险更大,见夏普比率。
  3. 对数收益与简单收益的差别被放大:对数正态假设本身在厚尾下失效,复利换算与波动率换算都要重新审视。
  • 仓位约束按 ES 或最差 5% 情景设定,而非 2σ2\sigma;
  • 回测报告固定包含偏度、峰度、最大单日亏损三项;
  • 蒙特卡洛压力测试用学生 t 或 bootstrap 生成路径,不用正态。
  • 样本峰度、偏度的估计及其自身的巨大方差
  • QQ 图是最直观的厚尾诊断工具
  • VaR 在厚尾下系统性低估,应配合 ES 使用
  • 对数收益与简单收益在厚尾下的差别会被放大