协整与配对交易
样本内 68 对显著,校正后剩 0 对,样本外 20 取 0
配对交易的逻辑很动人:找两只长期绑定的标的,价差偏离就做多低估、做空高估,等它回归。它的统计前提叫协整——两个各自非平稳的序列,存在某个线性组合是平稳的。
我们在 46 只标的的 1035 对组合里做全量协整检验。样本内(2010–2020)找到 68 对显著。
然后三件事依次发生:
- 纯随机情况下的期望假阳性数是 52 对——68 只比它多 16
- Bonferroni 校正后剩 0 对;BH-FDR 校正后也是 0 对
- 取样本内最显著的 20 对,拿到样本外(2021–2026)重检:0/20 仍显著
这是数据挖掘偏差最干净的一次实证。
在一个 1000 人的房间里找"生日相同的两个人",你几乎必然能找到很多对。
这不神奇——配对的数量是人数的平方级。1000 人有近 50 万对组合,而每对同生日的概率是 1/365。
你找到的不是缘分,是组合数。
1035 对协整检验,是同一件事。
一、什么是协整,为什么它是配对交易的前提
两个价格序列各自是随机游走(非平稳,见 P3.1)。但如果它们由同一个基本面驱动,那么它们的价差可能是平稳的——偏离之后会拉回来。
这就是协整。它比"相关"强得多:
- 相关说的是短期同涨同跌
- 协整说的是长期不会走散
配对交易赚的就是"价差回归"这件事。所以没有协整,配对交易就没有统计基础——你赌的只是"它们看起来很像"。
二、全量检验:1035 对里找到 68 对
样本内 2010-01-04 ~ 2020-12-31(2674 个交易日),Engle-Granger 检验:
完成 1035 对检验,p < 0.05 的有 68 对 (6.6%)
看起来不错?先算一笔账:
即使所有配对都没有真实协整关系,在 5% 显著性水平下,
期望也会有 1035 × 0.05 = 52 对被判为「显著」
实际找到 68 对 → 超出期望 +16 对
68 对里,有 52 对是"本来就该出现的假阳性"。实际只比随机期望多 16 对,而这 16 对是谁,你并不知道。
多重检验校正
未校正(p<0.05) 68 对
Bonferroni(最严) 0 对
BH-FDR(控制错误发现率) 0 对
两种校正之后,一对都不剩。
BH-FDR 是相对宽松的方法(它控制的是"错误发现的比例"而非"任何一个错误"),连它都判定 0 对——这说明这 68 对的 p 值分布,与纯随机几乎无法区分。
三、样本外:0/20
即便如此,我们还是取样本内最显著的 20 对(p 值从 0.0001 到 0.0072),拿到样本外 2021-01-04 ~ 2026-07-29 重检:
| 配对 | 样本内 p | 样本外 p | 样本内半衰期(天) | 样本外仍协整 |
|---|---|---|---|---|
| sh.600026/sh.600061 | 0.0001 | 0.3852 | 71.8 | 否 |
| sh.600406/sh.600460 | 0.0002 | 0.1820 | 49.4 | 否 |
| sh.600028/sh.600104 | 0.0005 | 0.6446 | 54.1 | 否 |
| sh.600406/sh.600426 | 0.0013 | 0.1968 | 53.9 | 否 |
| sh.600029/sh.600050 | 0.0013 | 0.0724 | 60.3 | 否 |
| …(其余 15 对同样为「否」) |
样本外仍显著:0/20 对 (0%)
纯随机情况下的期望:1.0 对
0/20。连随机期望的 1 对都没达到。
协整关系会消失——它不是物理定律,是一段时间内的统计现象。
两家公司的价格长期绑定,通常是因为它们当时处在同一条产业链、同一个政策环境、同一种资金偏好里。而这些条件都会变:业务转型、重组、行业周期、监管变化。
所以配对交易真正的风险,不是"价差不回归",而是"关系本身结束了"。
价差不回归你还能等;关系结束了,你等的是一个再也不会回来的东西——而它在净值上的表现,和"再等等就好了"一模一样。
真实的配对策略必须有两样东西:
- 定期重检协整(比如每季度),不通过就退出
- 关系失效时的强制止损——不是按价差幅度,是按"协整检验不再通过"这个事件
🔧 动手做:亲手把 68 个"显著发现"清零(6 分钟)
跑 python cointegration.py。46 只标的两两配对共 1035 对,做协整检验(配对交易的统计前提)。
你会看到(实测):样本内找到 68 对"显著"协整(p 值小于 0.05)。但多重检验校正后——Bonferroni 剩 0 对、BH-FDR 剩 0 对;再看样本外,20 对里 0 对还成立。
想明白:1035 对里,光靠运气就该有约 52 对(1035×5%)蒙到"显著"。那 68 对几乎全是数据挖掘挖出来的噪声——校正一下、或换段时间,全军覆没。任何"我找到了 N 个显著规律",先问:你试了多少次?校正了吗?样本外还在吗?
四、这一节的方法论价值
半衰期那一列也值得看:样本内的价差半衰期在 41–108 天之间。这意味着即使协整成立,一次偏离要两三个月才回归一半——期间的资金占用与波动,足以让很多人提前离场。
但本节最重要的不是配对交易本身,而是它演示的那个模式:
在足够多的候选里搜索,你必然会找到"显著"的东西。而它们在样本外全军覆没。
1035 对 → 68 对显著 → 校正后 0 对 → 样本外 0/20。
这条链路,和 p0.1 里 591 组参数网格找出的"最优参数"样本外只剩 1.97% 年化,是同一个故事。下一节会把它彻底量化。
📌 免责:本课为技术教学,文中出现的标的代码仅为全量检验的中间结果,不构成任何配对或标的推荐;所有统计为历史模拟,不构成投资建议。
四个数字,一条链路:
- 1035 对全量协整检验 → 样本内 68 对显著(6.6%)
- 纯随机期望假阳性 52 对 → 实际只超出 16 对
- Bonferroni 后 0 对,BH-FDR 后也是 0 对
- 样本内最显著的 20 对 → 样本外 0/20(随机期望 1.0 对)
两条实用结论:
- 协整会消失。配对交易的真正风险是"关系本身结束了",必须定期重检 + 按协整失效止损
- 半衰期 41–108 天:即使成立,一次偏离要两三个月才回归一半
下一节是 P3 的压轴,也是整门课多次预告的那一笔账:P2 全章一共做了 49 次检验。我会先在纯随机数据上做同样多的检验(看能"发现"多少),再对 P2 的结论做 Bonferroni 与 BH-FDR 校正,最后把 p0.1 那个 591 组网格的噪声门槛算出来——你会看到,当时那个"最优参数"的夏普 1.28,低于门槛。
🔎 来源与核验· 3 条,点开核对
