协整 ADF检验的钝感
这个问题非常好,你已经从「会用 ADF」走到了 「理解 ADF 失效模式」 这一层。
下面我会把你点名的 两个风险 拆到几乎是“工程事故复盘级别”的细节,
让你能在系统设计时主动规避,而不是事后止血。
一、风险 1:滚动窗口“被动延长了失效结构的寿命”
这是协整交易里最隐蔽、也是最致命的风险之一。
1️⃣ 先把问题说成一句话
滚动窗口 ≠ 立刻反映结构变化
当协整在 t₀ 失效时,
你的窗口仍然在“投票”给过去的协整关系。
2️⃣ 用一个“极具体”的例子说明
设定
- 使用 4H 数据
- 滚动窗口 = 200 根
- 协整关系在 t₀ 失效
- 你每根 4H 都重新跑 ADF
在 t₀ 时刻发生了什么?
真实世界中:
- β 改变了(例如从 1.0 → 0.7)
- 均值水平漂移
- 或一个资产结构性脱钩
但你的 ADF 窗口里:
| 数据来源 | 数量 |
|---|---|
| 协整“还活着”的旧 regime | ~199 根 |
| 已失效的新 regime | 1 根 |
👉 99.5% 的样本仍支持“协整存在”
到 t₀ + 10 呢?
| 数据来源 | 数量 |
|---|---|
| 旧 regime | 190 |
| 新 regime | 10 |
ADF 在干什么?
- 拟合的是 整体最优 AR(p)
结论是:
“总体上仍然是平稳的”
但交易现实是:
spread 已经开始偏离原有均值,而且不再回来
到 t₀ + 50 呢?
| 数据来源 | 数量 |
|---|---|
| 旧 regime | 150 |
| 新 regime | 50 |
ADF 仍然可能:
- p-value < 0.05
- 拒绝单位根
但你已经交易爆了三次了。
3️⃣ 为什么 ADF 会“继续通过”?(统计原因)
因为 ADF 的问题是:
“整个样本是否存在单位根?”
而不是:
“最近这段时间是否仍均值回归?”
数学上:
- 混合了两个 regime 的序列
- 很可能仍然是 弱平稳 / 近似平稳
即使:
- 新 regime 本身是非平稳的
4️⃣ 一个非常重要的直觉
ADF 对“少数异常区间”是极其不敏感的
这在统计上是特性,不是 bug。
5️⃣ 工程上怎么解决这个问题?
✅ 解法 A:引入“时间权重”(推荐)
你不是简单 rolling,而是:
让“最近的数据”权重更大
常见做法:
- 用 加权回归(EWLS)
- 或只用 最近 1/2 窗口做二次确认
主窗口:200 根(结构)
快窗口:80 根(确认)
只有 两者都通过,才允许交易。
✅ 解法 B:连续失败检测(非常有效)
不是看某一次 ADF:
而是看 ADF 是否“开始动摇”
例如:
- 最近 10 次 4H 检验
- 至少 8 次拒绝单位根
一旦掉到 6/10:
👉 判定结构开始衰亡
✅ 解法 C:结构层止损(不是统计,是生存)
定义一个规则:
如果 spread 在 4H 级别
连续 X 根不回归
→ 无条件废掉 pair
这不是数学,这是 止命机制。
二、风险 2:ADF 对“结构变化”并不敏感
这是一个更深层、也更容易被误解的问题。
1️⃣ 先说一句最重要的话
ADF 检验的是“是否存在单位根”,
不是“均值是否还在原来的地方”。
这两件事 完全不是一回事。
2️⃣ 用一个直觉例子
情况 A:均值漂移,但仍回归
旧均值 = 0
新均值 = +5
spread 表现为:
- 不再回到 0
- 而是围绕 +5 波动
👉 ADF 依然会拒绝单位根
但你的交易系统:
- 还在用旧均值算 z-score
- 会不断“做反方向”
情况 B:β 断裂,但价差仍“有限波动”
β 从 1.0 → 0.8:
- spread 不再是真正的对冲残差
- 但因为市场波动有限
- spread 仍然“看起来”不发散
👉 ADF 仍然拒绝单位根
👉 但均值回归逻辑已经被破坏
3️⃣ 数学上为什么会这样?
ADF 的原假设:
[
H_0: \text{存在单位根}
]
它没有任何条款去问:
- 均值是否变化?
- 回归速度是否变化?
- β 是否稳定?
所以:
ADF ≠ 稳定结构检测器
4️⃣ 工程上“必须补”的三道关
🔧 关 1:rolling mean / β 稳定性
监控:
- rolling mean 的漂移速度
- rolling β 的变化幅度
一旦超阈值:
👉 即便 ADF 通过,也停交易
🔧 关 2:半衰期监控(极其重要)
如果你发现:
- half-life 从 8 → 25
- 或开始剧烈抖动
这说明:
均值回归机制正在衰弱
ADF 完全感知不到这一点。
🔧 关 3:用“回归失败”而不是“ADF 失败”当退出信号
这是老手才会用的逻辑:
不是等统计上不显著,
而是等“赚钱机制”不成立。
例如:
- z-score 多次触发
- 但没有回归
- 或止损次数显著上升
三、把两大风险合在一起的一句话总结
滚动窗口只能保证“你没有完全不更新”,
但不能保证“你足够快地意识到结构已经死了”。
而 ADF:
只能告诉你“有没有单位根”,
永远不会告诉你“这条均值回归还值不值得交易”。
四、真正专业系统的底层认知
协整不是“真 / 假”,
而是一个“正在老化的结构”。
你需要的不是一个布尔判断,而是:
- 健康度
- 衰减速度
- 退出机制