← 返回目录
p3.1动手⏱ 约 15 分钟

收益率的统计性质

一件正态分布下 6930 万年一遇的事,在 16.6 年里已经发生了

🔎 最后验证 2026-07📚 来源:平稳性、厚尾、自相关与 VaR 于 2026-07-31 在 ECS 实测(沪深300 指数 4022 个交易日 + 51 只标的横截面),输出见 code/outputs/stdout.txt🧰 statsmodels 0.14.6、scipy 1.18.0、pandas 3.0.5
为什么学这个

沪深300 历史最差单日:-8.75%

按这个序列自己的均值和标准差换算,它是一个 6.4σ 事件。

正态分布下,6.4σ 的概率是 5.938×10⁻¹¹——约每 6930 万年发生一次

而它在这 16.6 年里,已经发生了。

这不是"运气不好",是模型假设错了。这一节把收益率的四条统计性质讲清楚,因为你在 P2 用的每一个 t 检验、每一个相关系数,背后都有假设——假设不成立,那些 p 值就是系统性偏乐观的。

💡 打个比方

用直尺量海岸线,你会得到一个数字。用更短的直尺量,数字会变大。再短,更大。

不是尺子坏了,是海岸线不是直的——你用错了模型,而模型不会自己报错,它只会给你一个看起来很正常的数字。

正态分布之于收益率,就是那把直尺。

一、平稳性:建模对象是收益率,不是价格

ADF 检验(单位根检验),沪深300 指数 2010–2026:

序列ADF 统计量p 值结论
价格(收盘)-1.8870.3381非平稳
对数价格-1.8230.3689非平稳
日收益率-11.5120.0000平稳

价格非平稳,收益率平稳。所以建模对象必须是收益率。

⚠️ 避坑

直接对价格做回归,会得到「伪回归」。

两个各自随机游走、彼此毫无关系的序列,做回归可以得到很高的 R² 和很大的 t 值——这是 Granger 与 Newbold 在 1974 年就指出的经典陷阱。

危险之处在于:它的输出看起来比真实关系还漂亮。R² 0.9、t 值 20,任何人看了都会兴奋。

所以规则很简单:回归的两边都必须是平稳序列(或者做协整检验,见 P3.3)。

二、厚尾:收益率不是正态分布

沪深300 指数 4022 个交易日:

均值 +0.0158% | 标准差 1.3606% | 偏度 -0.427 | 超额峰度 +4.970
Jarque-Bera:JB = 4262.0,p = 0.000e+00 → 强烈拒绝正态

超额峰度 +4.970(正态分布是 0),意味着尾部比正态厚得多。厚多少?

阈值正态预期天数实际天数实际/预期
2σ 以上183.02261.2 倍
3σ 以上10.9645.9 倍
4σ 以上0.326102.1 倍
5σ 以上0.0114770.5 倍

σ 越大,低估越离谱。2σ 处只差 20%,到 4σ 就差 100 倍,5σ 差了近 5000 倍。

而这不是指数的特例——51 只标的的超额峰度中位数 3.65,最小 1.78,最大 9.14。51/51 全部比正态更厚尾。

🔧 动手做:见识一次"6930 万年一遇"(5 分钟)

python return_stats.py,看沪深300 日收益的分布。

你会看到(实测):日收益超额峰度 +4.97、Jarque-Bera=4262(p≈0),严重偏离正态。而实测出现过的极端单日波动,在正态分布下是 6930 万年一遇的事,却在这 16.6 年里真实发生了。

想明白:金融收益不是正态分布,是厚尾——极端事件比正态预测的频繁得多。所以任何用正态假设算的风险(VaR、夏普的分母),都在系统性低估尾部。别信"3σ 事件几乎不可能"——在市场里它是常客。

三、自相关:方向难赚,风险可管

滞后收益率 ACF|收益率| ACF
1 期0.02020.1671
2 期-0.02650.2094
5 期-0.00220.1714
10 期-0.01040.1688
20 期0.05080.1359

Ljung-Box 检验(滞后 10):

  • 收益率:Q = 34.7,p = 1.404e-04
  • |收益率|:Q = 1110.4,p = 3.020e-232

收益率本身几乎不可预测(自相关接近 0),但波动高度可预测(绝对值自相关强且衰减慢)。这就是波动聚集:大波动后面跟着大波动,平静后面跟着平静。

这条性质是整门课很多结论的地基:

  • 方向难赚——所以 P2 那些信号的信息量都很小
  • 风险可管——所以 ATR 仓位(P2.3)、风险预算(P5.10)是有效的

市场没有给你预测涨跌的能力,但给了你管理风险的机会。

四、后果:正态假设下的 VaR 会低估多少

置信度正态 VaR历史分位 VaR低估
95.0%-2.22%-2.01%+0.21pp(反而高估)
99.0%-3.15%-3.98%-0.83pp
99.9%-4.19%-7.69%-3.50pp

注意 95% 那一行是高估的——因为正态分布"肩部"比实际厚。真正的问题在尾部:

99.9% 置信下,正态说最多亏 4.19%,实际历史分位是 7.69%——低估了 3.5 个百分点,接近一倍。

而最极端的那一天:

历史最差单日 -8.75%,相当于 6.4σ
正态分布下这种日子的概率是 5.938e-11,约每 6.93e+07 年一次
而它在这 4022 个交易日(16.6 年)里,已经发生了
❓ 测验
你的风控模型假设收益率服从正态分布,算出 99.9% 置信的单日最大亏损是 4.2%,于是按这个数设定了杠杆。最大的问题是?
✏️ 填空
收益率本身几乎无自相关,但收益率的绝对值高度自相关——这个现象叫波动 ___ 。

📌 免责:本课为技术教学,统计结果为历史模拟,不构成投资建议。

✅ 小结

四条性质,四个用途:

  1. 平稳性:价格非平稳(ADF p=0.3381)、收益率平稳(p=0.0000)→ 建模对象是收益率,直接对价格回归会得到伪回归
  2. 厚尾:超额峰度 +4.970,4σ 事件实际发生 102 倍于正态预期,5σ 是 4770 倍;51/51 只标的全部厚尾
  3. 自相关:收益率 ACF ≈ 0,|收益率| ACF ≈ 0.17 且衰减慢 → 方向难赚,风险可管
  4. VaR:99.9% 置信下正态低估 3.50pp;历史最差单日 6.4σ,正态说 6930 万年一次,实际 16.6 年里已发生

下一节直接冲着 P2 去:P2 每一节我都用日频数据算"未来 10 日/20 日/60 日收益"——这些窗口是重叠的。重叠会让 t 值系统性虚高。

我会用模拟证明它,然后回头把 P2 的关键结论用 Newey-West 重算一遍。其中一个中间结果会告诉你:未来 20 日收益的有效样本量,只有名义样本量的 2.3%

下一节 → 回归与显著性:重叠样本如何让 t 值虚高
🔎 来源与核验· 5 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「ADF 检验:沪深300 收盘价 ADF=-1.887(p=0.3381)、对数价格 -1.823(p=0.3689)、日收益率 -11.512(p=0.0000)」
📚 本节 code/return_stats.py,2026-07-31 于 ECS 实测(2010-01-04~2026-07-29,4022 个交易日),输出见 code/outputs/stdout.txt✓ 已核验 2026-07
「沪深300 日收益:均值 +0.0158%、标准差 1.3606%、偏度 -0.427、超额峰度 +4.970;Jarque-Bera JB=4262.0(p≈0)。2σ/3σ/4σ/5σ 以上的实际天数与正态预期之比分别为 1.2/5.9/102.1/4770.5 倍;51 只标的超额峰度中位 3.65,全部为正」
📚 同上实测✓ 已核验 2026-07
「收益率 ACF 在滞后 1/2/5/10/20 期分别为 0.0202/-0.0265/-0.0022/-0.0104/0.0508;|收益率| ACF 为 0.1671/0.2094/0.1714/0.1688/0.1359。Ljung-Box(10):收益率 Q=34.7、|收益率| Q=1110.4(p=3.02e-232)」
📚 同上实测✓ 已核验 2026-07
「VaR:95%/99%/99.9% 置信下正态 VaR 为 -2.22%/-3.15%/-4.19%,历史分位 VaR 为 -2.01%/-3.98%/-7.69%;历史最差单日 -8.75%(6.4σ),正态概率 5.938e-11」
📚 同上实测✓ 已核验 2026-07
「两个各自随机游走的序列做回归可得到高 R² 与大 t 值(伪回归)」
📚 Granger & Newbold (1974) 经典结论✓ 已核验 2026-07
智图软件的赞赏码
都看到这了,打个赏呗!
接下来 · p3.2
回归与显著性:重叠样本让 t 值虚高
继续读下一节 →