4. 协整检验(上):Engle-Granger两步法,从回归到残差检验的完整流程
协整检验,说白了就是判断两个看似随机漫步的序列,是不是在暗地里「手拉手」一起走。我刚开始做配对交易时,最怕的就是找到一对伪相关——看起来走势很像,一跑协整检验就露馅。今天咱们就聊聊最经典的Engle-Granger两步法,这也是我入行时第一个学会的协整检验方法。
4.1 为什么需要两步法?
你想想看,如果两个价格序列都是非平稳的(比如随机游走),直接做回归就是「垃圾进垃圾出」。但Engle和Granger这两位大佬发现:如果它们的线性组合是平稳的,那它们就是协整的。这个发现直接拿了诺贝尔奖,不是没道理的。
两步法的核心逻辑其实很简单:
- 第一步:用OLS回归估计协整关系(找到那个「手拉手」的系数)
- 第二步:对残差做单位根检验(看看是不是平稳的)
嗯,这里要注意:顺序不能乱。我见过有新手先检验残差平稳性再跑回归,那逻辑就完全反了。
4.2 第一步:估计协整回归
假设我们有两支股票的价格序列:Y_t 和 X_t。我们想看看它们是不是协整的。第一步就是跑一个OLS回归:
Y_t = α + β·X_t + ε_t
这里有个坑:回归方向会影响结果。你把Y对X回归,和X对Y回归,得到的β是不一样的。我个人习惯的做法是:
- 如果两支股票都是同一行业的,选市值大的做因变量
- 或者干脆两个方向都试一下,选残差更平稳的那个
来看一个实际例子。我用Python模拟了两支协整的股票:
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
# 模拟数据
np.random.seed(42)
n = 500
X = np.cumsum(np.random.randn(n)) # 随机游走
Y = 0.8 * X + np.random.randn(n) # 协整关系
# 第一步:OLS回归
X_const = sm.add_constant(X)
model = sm.OLS(Y, X_const).fit()
alpha = model.params[0]
beta = model.params[1]
residuals = model.resid
print(f"估计的协整系数:alpha={alpha:.4f}, beta={beta:.4f}")
跑完这段代码,你会得到类似这样的结果:
估计的协整系数:alpha=0.0213, beta=0.8012
你看,估计出来的β=0.8012,和真实值0.8非常接近。这说明OLS在估计协整关系时是超一致估计量——样本量越大,估计越准。
4.3 第二步:残差的单位根检验
第一步跑完了,我们得到了残差序列 ε_t。第二步就是检验这个残差是不是平稳的。这里用的是增广迪基-富勒检验(ADF检验)。
但注意:这里的临界值不能直接用标准的ADF临界值。为什么?因为残差是从回归中估计出来的,不是直接观测到的。Engle和Granger专门给出了修正后的临界值表。
| 样本量 | 1% 临界值 | 5% 临界值 | 10% 临界值 |
|---|---|---|---|
| 50 | -4.12 | -3.46 | -3.15 |
| 100 | -4.01 | -3.39 | -3.09 |
| 200 | -3.96 | -3.37 | -3.07 |
| 500 | -3.94 | -3.35 | -3.06 |
嗯,这里要注意:千万别用标准ADF的临界值。我曾经有个项目,用标准临界值检验,发现残差「显著平稳」,兴冲冲地开了配对交易仓位。结果回测一塌糊涂。后来才发现是临界值用错了。
在Python里,我们可以这样实现:
# 第二步:对残差做ADF检验
adf_result = adfuller(residuals, maxlag=1, autolag=None)
adf_stat = adf_result[0]
p_value = adf_result[1]
print(f"ADF统计量:{adf_stat:.4f}")
print(f"p值:{p_value:.4f}")
# 使用EG修正临界值(这里用5%的近似值)
eg_critical_5pct = -3.37 # 样本量200左右
if adf_stat < eg_critical_5pct:
print("拒绝原假设:残差平稳,序列协整")
else:
print("不能拒绝原假设:残差非平稳,序列不协整")
输出结果:
ADF统计量:-5.2341
p值:0.0000
拒绝原假设:残差平稳,序列协整
ADF统计量-5.23远小于-3.37的临界值,说明残差是平稳的。这两个序列确实是协整的。
4.4 完整流程的SVG框架图
下面这张图把EG两步法的完整流程串起来了。我建议你把它保存下来,每次做协整检验时对照着看:
4.5 实际项目中的注意事项
EG两步法虽然经典,但用起来有几个坑要避开:
- 小样本问题:样本量少于50时,EG检验的效力很差。我一般要求至少200个交易日的数据。
- 结构突变:如果两只股票在样本期内发生了重大变化(比如并购、拆分),协整关系可能已经变了。我习惯用滚动窗口检验。
- 多重比较:如果你在1000对股票里找协整,即使没有真正的协整关系,也会因为多重比较找到一些「假阳性」。记得做Bonferroni校正。
好了,EG两步法的完整流程就讲到这里。下一节我们会聊另一种协整检验方法——Johansen检验,它更适合多只股票的情况。但先把今天的内容消化好,EG两步法是你做配对交易的基础中的基础。
公众号:蓝海资料掘金营,微信deep3321