1. 协整关系入门:什么是协整?为什么它对统计套利如此重要?

大家好,欢迎来到《统计套利中的协整关系实战应用》课程。

我是你们的老朋友,一个在量化交易这行摸爬滚打了十几年的老交易员。今天咱们聊点硬核的——协整。

说实话,我刚入行那会儿,听到「协整」这个词,第一反应是:这又是哪个数学天才发明的术语?后来真刀真枪干起来才发现,这东西简直就是统计套利的灵魂。没有它,很多策略根本玩不转。

1.1 先从直觉上理解:什么是协整?

咱们先别急着上公式。你想想看,两个东西,比如茅台和五粮液的股价,它们各自都是随机乱跑的。今天涨明天跌,看起来毫无规律。

但是!如果你把它们放在一起看,会发现一个有趣的现象:它们的价差,总是在一个固定的范围内晃悠。高了会跌回来,低了会涨回去。

这就是协整的直觉——两个或多个非平稳的时间序列,它们的某种线性组合是平稳的

用大白话说就是:两个醉汉走路,各自东倒西歪,但拴在它们之间的绳子长度基本不变

核心定义: 如果两个时间序列 X_t 和 Y_t 都是 I(1)(一阶单整),但存在一个系数 β,使得 Z_t = Y_t - βX_t 是平稳的(I(0)),那么 X_t 和 Y_t 就是协整的。

嗯,这里要注意:平稳性是个关键。我见过不少新手,拿两个完全不相关的股票硬做协整,结果亏得底裤都不剩。为什么?因为它们的价差根本不会回归。

1.2 为什么协整对统计套利如此重要?

这个问题问得好。说白了,统计套利的本质就是「赌回归」。

你发现两个资产价格长期同步,突然有一天它们分开了。你赌它们会重新走到一起。做多那个跌惨的,做空那个涨疯的。等它们回归了,你就赚钱。

但问题来了——你怎么知道它们一定会回归?

这就是协整的用武之地。

  • 协整提供了统计上的保证:它告诉你,这两个序列的价差在统计意义上是平稳的。偏离只是暂时的,回归是必然的(在概率意义上)。
  • 协整定义了交易信号:当价差偏离到一定程度(比如2个标准差),就是开仓时机。当价差回归到均值附近,就是平仓时机。
  • 协整控制了风险:没有协整关系的配对,你就是在赌博。有了协整,你是在做有统计依据的交易。

我个人习惯: 在实盘之前,我一定会做两步验证。第一步,用ADF检验确认协整关系存在。第二步,用滚动窗口重新检验,确保这个关系是稳定的,不是昙花一现。我曾经因为偷懒跳过第二步,结果吃了大亏。

1.3 协整 vs 相关性:别搞混了

很多新手容易把协整和相关性混为一谈。我刚开始也犯过这个错。

相关性高,不代表协整。举个例子:两个股票,一个在A股,一个在美股,它们可能因为某个宏观因素高度相关。但如果它们的基本面完全不同,价差可能越跑越远,永远不会回归。

反过来,协整也不一定要求高相关性。有些配对,相关性只有0.3,但协整关系非常稳定。

特征 相关性 协整
衡量什么 线性关系的强度 长期均衡关系
对平稳性的要求 无要求 序列必须同阶单整
是否保证回归 不保证 保证价差回归
典型应用 因子模型、风险对冲 配对交易、统计套利

你看,这两者完全是两码事。做统计套利,我们关心的是协整,不是相关性。

1.4 一个简单的例子:用Python检验协整

光说不练假把式。咱们直接上代码。这里我用的是经典的statsmodels库。

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller, coint
import yfinance as yf

# 下载两只股票的数据
# 我习惯用 EWA 和 EWC,这是经典的协整配对
ewa = yf.download('EWA', start='2020-01-01', end='2023-12-31')['Close']
ewc = yf.download('EWC', start='2020-01-01', end='2023-12-31')['Close']

# 合并数据
data = pd.DataFrame({'EWA': ewa, 'EWC': ewc}).dropna()

# 第一步:检验每个序列是否都是 I(1)
# 对价格序列做ADF检验
adf_ewa = adfuller(data['EWA'])
adf_ewc = adfuller(data['EWC'])
print(f'EWA ADF p-value: {adf_ewa[1]:.4f}')
print(f'EWC ADF p-value: {adf_ewc[1]:.4f}')
# 如果p值大于0.05,说明非平稳,符合I(1)特征

# 第二步:检验协整关系
score, pvalue, _ = coint(data['EWA'], data['EWC'])
print(f'Coint p-value: {pvalue:.4f}')
# 如果p值小于0.05,说明存在协整关系

# 第三步:计算价差
# 用OLS估计协整系数
X = sm.add_constant(data['EWA'])
model = sm.OLS(data['EWC'], X).fit()
beta = model.params['EWA']
spread = data['EWC'] - beta * data['EWA']

# 检验价差的平稳性
adf_spread = adfuller(spread)
print(f'Spread ADF p-value: {adf_spread[1]:.4f}')
# 如果p值小于0.05,说明价差平稳,协整关系成立

避坑指南: 我曾经在实盘中发现,用全量数据做的协整检验,在滚动窗口下可能根本不成立。所以我的建议是:永远用滚动窗口重新验证。比如用过去60天的数据,每天重新算一次协整系数。如果系数变化太大,这个配对就别用了。

1.5 协整关系的知识体系

为了让你更直观地理解协整在整个统计套利中的位置,我画了一张图。

协整关系在统计套利中的核心地位 第一步:数据准备 获取两个或多个资产的价格序列(日线、小时线等) 第二步:平稳性检验(ADF检验) 确认每个序列都是 I(1) 非平稳,但同阶单整 第三步:协整检验(核心) Engle-Granger 两步法 或 Johansen 检验 确认价差 Z_t = Y_t - βX_t 是平稳的 I(0) 交易信号生成 价差偏离均值 ±2σ 时开仓 风险管理 滚动窗口重新检验协整稳定性 策略执行 做多弱势资产,做空强势资产

这张图把协整在统计套利中的位置讲得很清楚。你看,协整检验是整个流程的承上启下环节。没有它,后面的交易信号、风险管理都是空中楼阁。

1.6 小结:协整为什么是统计套利的基石?

聊了这么多,总结一下我的看法。

协整之所以重要,是因为它给了我们一个可量化的、有统计依据的「回归预期」。没有这个预期,配对交易就是瞎蒙。有了这个预期,我们才能谈得上「套利」——虽然它不是无风险的,但至少风险是可控的、可度量的。

我记得有一次,一个朋友问我:「你凭什么相信价差一定会回归?」我回答他:「因为协整检验告诉我,在95%的置信水平下,这个价差是平稳的。如果它不回归,那就是那5%的小概率事件发生了。我能接受这个风险。」

这就是协整的力量。它把交易从艺术变成了科学。

一句话总结: 协整是统计套利的数学基础。它定义了「什么是一对好配对」,也定义了「什么时候该进场,什么时候该离场」。没有协整,统计套利就失去了灵魂。


公众号:蓝海数据掘金营,微信deep3321