2. 协整理论入门:协整的定义、平稳性检验(ADF检验)、协整关系的经济学含义

各位同学,欢迎来到第二章。上一章我们聊了配对交易的基本逻辑,说白了就是找两个“步调一致”的资产,等它们走散了再赌一把回归。但这里有个核心问题:你怎么知道它们是真的“步调一致”,还是只是碰巧一起走了几步?

嗯,这就是协整理论要解决的事。我个人觉得,协整是整个统计套利的基石。没搞懂它,后面那些策略代码写得再漂亮也是空中楼阁。

2.1 什么是协整?一个直观的理解

先别急着看公式。咱们用大白话讲:

假设你牵着一条狗散步。你往前走,狗可能跑到你前面,也可能落在后面,但绳子拽着它,它不会跑太远。过一会儿,它又会回到你身边。

这里,你和狗的位置就是两个时间序列。它们各自可能忽左忽右(非平稳),但它们的差值(狗绳的长度)却在一个范围内波动(平稳)。这就是协整。

协整的正式定义:如果两个或多个非平稳时间序列的线性组合是平稳的,那么这些序列之间存在协整关系。

我在项目中遇到过不少新手,上来就把两个股票的价格序列做相关性分析,发现相关系数0.9就兴奋得不行。结果实盘一跑,亏得亲妈都不认识。为什么?因为相关性高不代表它们会一起回归。协整才是那个“回归”的保证书。

核心要点:
  • 相关性衡量的是“同向变动”的程度
  • 协整衡量的是“长期均衡”的关系
  • 两个随机游走的序列可以有很高的相关性,但完全没有协整关系

2.2 平稳性检验:ADF检验

要判断协整,第一步是判断单个序列是否平稳。说白了,就是看这个序列有没有“根”——单位根。

什么是平稳?

一个时间序列是平稳的,意味着它的统计性质(均值、方差)不随时间变化。你想想看,如果一只股票的均值一直在漂移,你怎么用它来做配对?没法做。

ADF检验(Augmented Dickey-Fuller Test)

这是最常用的单位根检验方法。它的原假设是:序列存在单位根(即非平稳)。

检验逻辑很简单:

  • 如果p值小于0.05,拒绝原假设,序列平稳
  • 如果p值大于0.05,不能拒绝原假设,序列非平稳

代码实现也不复杂。我习惯用statsmodels库,直接调函数:

import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller

# 模拟一个随机游走(非平稳)
np.random.seed(42)
n = 200
random_walk = np.cumsum(np.random.randn(n))

# ADF检验
result = adfuller(random_walk)
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.4f}')
print(f'临界值:')
for key, value in result[4].items():
    print(f'  {key}: {value:.4f}')

# 判断
if result[1] < 0.05:
    print('序列平稳')
else:
    print('序列非平稳,存在单位根')

输出结果大概长这样:

指标
ADF统计量 -1.2345
p值 0.6543
1%临界值 -3.4582
5%临界值 -2.8735
10%临界值 -2.5731

你看,p值0.65,远大于0.05,说明这个随机游走确实是非平稳的。

我的小习惯: 做ADF检验时,我一般会同时看p值和ADF统计量是否小于1%临界值。如果两者都满足,我才放心地说“序列平稳”。这算是个双重保险吧。

2.3 协整关系的经济学含义

好,现在技术层面讲完了。但咱们做量化交易的,不能只懂敲代码,还得明白背后的经济学逻辑。否则你就是在瞎跑策略。

协整的经济学含义是什么?

说白了,协整反映的是两个资产之间存在一种长期均衡关系。这种关系通常由一些基本面因素驱动:

  • 同行业股票:比如茅台和五粮液,都是白酒龙头。它们的价格可能短期有差异,但长期看,估值水平会趋同。
  • 产业链上下游:比如原油和航空公司。原油是航空公司的成本,油价涨,航空股跌。这种负相关关系如果稳定,也可以做配对。
  • 替代品:比如黄金和比特币。虽然听起来有点扯,但有些资金确实把它们都当作避险资产。

我曾经犯过一个错:把两只不同行业的股票硬凑在一起做协整检验,结果发现p值还挺低。当时我挺兴奋,觉得发现了新大陆。结果实盘跑了两个月,亏了15%。后来复盘才发现,那只是数据挖掘的假象——样本内拟合得好,样本外就崩了。

避坑指南: 协整关系必须有经济学逻辑支撑。不要为了做配对而强行找协整。数据挖掘出来的伪协整,会让你亏得很惨。

2.4 协整检验的完整流程

嗯,这里我把整个流程梳理一下。你照着这个步骤走,基本不会出错:

  1. 选资产:基于基本面逻辑,选出可能相关的两个资产
  2. 单序列平稳性检验:分别对两个价格序列做ADF检验,确认它们都是非平稳的(I(1)过程)
  3. 做回归:用其中一个序列对另一个做OLS回归,得到残差
  4. 残差平稳性检验:对残差做ADF检验。如果残差平稳,说明两个序列协整
  5. 确定协整系数:回归系数就是协整系数,也就是配对比例

代码实现也很直接:

from statsmodels.api import OLS, add_constant

# 假设price_a和price_b是两个价格序列
# 步骤1:确认它们都是非平稳的(略)
# 步骤2:做回归
X = add_constant(price_b)
model = OLS(price_a, X).fit()
residuals = model.resid

# 步骤3:对残差做ADF检验
result_resid = adfuller(residuals)
print(f'残差ADF检验p值: {result_resid[1]:.4f}')

if result_resid[1] < 0.05:
    print('存在协整关系!')
    print(f'协整系数(对冲比例): {model.params[1]:.4f}')
else:
    print('不存在协整关系')

2.5 本章知识体系图

为了让你更直观地理解本章的知识结构,我画了一张流程图:

协整理论入门知识体系 协整理论 协整的定义 平稳性检验(ADF) 经济学含义 线性组合平稳 长期均衡关系 单位根检验 p值 < 0.05 同行业/产业链 基本面驱动 核心逻辑 非平稳序列 → 线性组合 → 平稳残差 → 协整成立

这张图把本章的核心逻辑串起来了。你从“协整理论”出发,往三个方向展开:定义、检验方法、经济学含义。最后汇聚到核心逻辑——非平稳序列通过线性组合变成平稳残差,协整关系就成立了。

好了,这一章的内容就到这儿。协整理论是配对交易的“地基”,地基不牢,后面盖的房子再漂亮也得塌。下一章我们会讲如何用Engle-Granger两步法做协整检验,以及怎么确定最优的对冲比例。到时候我会分享一些我在实盘中踩过的坑,保证让你少走弯路。