3、相关性分析:皮尔逊相关系数、协整检验(ADF检验)、滚动相关性窗口、伪回归陷阱

做跨品种套利,说白了就是找两个品种之间的「亲密关系」。关系越稳定,套利空间就越可控。但这里有个坑——你以为有关系,可能只是巧合。我见过太多新手看着两张走势图长得像,就冲进去做套利,结果亏得底裤都不剩。

嗯,这一节我们就来聊聊怎么科学地判断两个品种之间到底有没有「真感情」。

3.1 皮尔逊相关系数:最直观的「相似度」指标

皮尔逊相关系数,大家应该不陌生。它衡量的是两个变量之间的线性相关程度,取值在 -1 到 1 之间。1 表示完全正相关,-1 表示完全负相关,0 表示没关系。

公式长这样:

r = Σ((xᵢ - x̄)(yᵢ - ȳ)) / √(Σ(xᵢ - x̄)² · Σ(yᵢ - ȳ)²)

我个人习惯,拿到两个品种先算个相关系数。比如螺纹钢和热卷,相关系数经常在 0.9 以上。但注意,这只是第一步。

⚠️ 避坑指南: 相关系数高 ≠ 可以套利。我曾经见过两个完全不相关的品种,因为某段时间都受宏观政策影响,相关系数飙到 0.95。等政策退潮,关系立马崩了。

实际应用中,我一般这样判断:

  • |r| > 0.8:强相关,值得进一步分析
  • 0.5 < |r| < 0.8:中等相关,需要谨慎
  • |r| < 0.5:弱相关,基本别想了

3.2 协整检验(ADF检验):找「长期关系」的核心工具

相关系数只能看短期同步性,但套利赚的是价差回归的钱。这就需要协整检验了。

协整的概念很简单:两个非平稳的时间序列,它们的线性组合是平稳的。说白了,就是两个乱跑的品种,它们之间的差距是有规律的。

ADF(Augmented Dickey-Fuller)检验是协整检验最常用的方法。步骤是这样的:

  1. 先对两个品种做线性回归,得到残差序列
  2. 对残差做 ADF 检验,看它是否平稳
  3. 如果 p 值小于 0.05,说明存在协整关系

代码实现也不复杂:

import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller

# 假设 x 和 y 是两个品种的价格序列
x = sm.add_constant(x)
model = sm.OLS(y, x).fit()
residuals = model.resid

# ADF检验
result = adfuller(residuals)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')

if result[1] < 0.05:
    print('存在协整关系,可以搞!')
else:
    print('没有协整关系,别冲动。')
💡 我的经验: 做协整检验时,样本量不能太少。我一般至少用 500 根以上的日线数据。太短的数据容易出假信号,太长又可能包含结构变化。嗯,这个度要自己把握。

3.3 滚动相关性窗口:关系是会变的

你想想看,两个品种的相关性会一直不变吗?当然不会。市场环境在变,政策在变,资金偏好也在变。

所以,我从来不看全样本的相关系数。我习惯用滚动窗口,比如 60 天或 90 天的窗口,每天算一次相关系数。这样就能看到相关性的变化趋势。

举个例子:

import pandas as pd
import numpy as np

def rolling_corr(x, y, window=60):
    return x.rolling(window).corr(y)

# 假设 df 包含两个品种的日收益率
df['rolling_corr'] = rolling_corr(df['品种A'], df['品种B'], window=60)

当滚动相关系数突然从 0.9 掉到 0.3 时,就要警惕了。我之前做螺纹钢和铁矿石的套利,就遇到过这种情况——相关性突然崩塌,价差直接失控,幸好我提前减了仓。

3.4 伪回归陷阱:最容易被忽视的坑

伪回归,说白了就是两个毫无关系的随机游走序列,跑回归也能跑出显著的结果。为什么?因为非平稳序列本身就有趋势,两个趋势碰在一起,看起来就像有关系。

我记得有一次,一个朋友兴冲冲地跟我说他发现大豆和比特币有很强的相关性。我一看,两个序列都是向上走的,相关系数 0.85。但做协整检验,p 值 0.6,根本不显著。这就是典型的伪回归。

⚠️ 伪回归的典型特征:
  • 相关系数很高,但协整检验不通过
  • 两个序列都是非平稳的(单位根过程)
  • 回归的 R² 很高,但 DW 统计量很低

怎么避免?记住三点:

  1. 先做单位根检验:确认两个序列都是 I(1) 过程
  2. 再做协整检验:确认残差是平稳的
  3. 最后看经济逻辑:两个品种之间有没有实际的产业链关系

知识体系总览

下面这张图,是我自己梳理的相关性分析框架。每次做新策略前,我都会按这个流程走一遍:

相关性分析知识体系 两个品种价格序列 初步判断 皮尔逊相关系数 衡量线性相关程度 取值 [-1, 1] 协整检验 (ADF) 检验残差平稳性 p值 < 0.05 通过 滚动相关性窗口 动态观察关系变化 窗口期 60-90天 ⚠️ 伪回归陷阱:必须协整检验通过 ✅ 确认套利可行性

总结一下我的经验:相关性分析不是一锤子买卖。先用皮尔逊相关系数快速筛选,再用协整检验确认长期关系,同时用滚动窗口监控关系的变化。最后,永远记住伪回归这个坑。

嗯,这套流程我用了好几年,虽然不能保证百分之百赚钱,但至少能帮你避开那些看起来很美、实际上要命的假关系。

📌 核心要点:
  • 皮尔逊相关系数看短期同步性,协整检验看长期均衡
  • 滚动窗口能捕捉关系的变化,建议 60-90 天窗口
  • 伪回归是最大的坑,协整检验是唯一的解药
  • 经济逻辑永远比统计结果重要
专注资料整理