4. 相关性分析
配对交易的第一步不是找“价差大”的股票,而是找“关系稳定”的股票。相关性分析就是用来量化两只股票同涨同跌程度的工具。但相关性并非一个简单的数字,选错方法、忽略时间窗口、误把伪相关当成真规律,都会让后续回测结果严重失真。本节围绕四个关键点展开:皮尔逊相关系数、斯皮尔曼秩相关、滚动相关性,以及相关性陷阱与伪相关识别。
一、核心原理:两种相关系数在衡量什么
皮尔逊相关系数(Pearson)衡量的是两个变量之间的线性关系强度,取值范围为 -1 到 1。它基于协方差与标准差计算,对极端值非常敏感。公式上,它等于两变量协方差除以各自标准差的乘积。当两只股票的收益率呈线性同步变化时,皮尔逊系数接近 1;完全反向则接近 -1。
斯皮尔曼秩相关(Spearman)衡量的是两个变量的单调关系,先把原始数据转成排名(秩),再对秩计算皮尔逊相关。它不要求线性关系,只要求“一个变大时另一个是否稳定地变大或变小”。因此它对异常值更稳健,适合收益率分布偏斜、存在跳空或极端行情的场景。
二、方法流程:从数据到可用相关性
- 数据准备:取两只股票同一时间区间的复权收盘价,计算日收益率(对数或简单收益率均可,但全流程需统一)。
- 计算相关系数:用皮尔逊和斯皮尔曼各算一次,对比差异。若差异过大,说明存在离群点或非线性结构,需要进一步检查。
- 滚动窗口计算:用固定窗口(如 60 日、120 日)逐日滚动,得到相关性时间序列,观察其稳定性。
- 设定阈值筛选:例如要求滚动相关性长期高于 0.7,且窗口内最低值不低于 0.5,才纳入候选配对。
- 伪相关排查:检查两者是否同属一个行业、是否受同一宏观因子驱动、是否存在共同趋势导致的虚假高相关。
import pandas as pd
import numpy as np
# 假设 df 包含两只股票的收盘价
ret_a = np.log(df['stock_a'] / df['stock_a'].shift(1)).dropna()
ret_b = np.log(df['stock_b'] / df['stock_b'].shift(1)).dropna()
pearson = ret_a.corr(ret_b, method='pearson')
spearman = ret_a.corr(ret_b, method='spearman')
# 滚动相关性,窗口 60 日
rolling_corr = ret_a.rolling(60).corr(ret_b)
print(f"Pearson: {pearson:.4f}, Spearman: {spearman:.4f}")
print(f"滚动相关性均值: {rolling_corr.mean():.4f}, 最小值: {rolling_corr.min():.4f}")
三、滚动相关性:稳定性比数值更重要
很多初学者只看一个全样本相关系数,比如 0.85,就认为配对成立。但全样本高相关可能只是某一段时间的局部现象。真正决定配对交易成败的,是相关性在时间上的稳定性。滚动相关性把单一数字变成一条曲线,能直观暴露关系断裂、结构性变化和阶段性失效。
实务中常用 60 日或 120 日窗口。窗口太短,噪声大、频繁翻转;窗口太长,反应迟钝、无法及时捕捉关系变化。建议同时观察多个窗口,例如 60 日与 120 日,若两者走势一致且都维持高位,配对可靠性更高。
| 指标 | 适用场景 | 对异常值敏感度 | 关注重点 |
|---|---|---|---|
| 皮尔逊相关系数 | 线性关系明显、数据干净 | 高 | 数值大小与方向 |
| 斯皮尔曼秩相关 | 非线性单调、存在离群点 | 低 | 排序一致性 |
| 滚动相关性 | 检验关系稳定性 | 取决于窗口 | 均值、最小值、波动 |
| 伪相关排查 | 高相关但无经济逻辑 | — | 行业、因子、趋势 |
四、相关性陷阱与伪相关识别
陷阱一:共同趋势导致的伪相关。两只股票都处于长期上涨趋势中,价格序列相关系数很高,但收益率相关性可能很低。配对交易应基于收益率而非价格,否则会把趋势同步误判为可交易的价差关系。
陷阱二:行业与因子暴露重叠。同行业股票天然高相关,但这种相关可能来自共同的行业 beta,而非两者之间存在稳定的套利关系。一旦行业逻辑变化,相关性可能迅速瓦解。
陷阱三:样本选择偏差。只选取两者关系最好的时间段做回测,会严重高估策略表现。正确做法是使用滚动窗口,并在样本外验证。
陷阱四:忽略非线性与尾部依赖。平时相关性不高,但在市场暴跌时同步下跌,这种尾部相关性对配对交易是致命风险。斯皮尔曼和滚动相关性可以帮助识别,但仍需结合压力测试。
相关性分析不是找一个“高数字”,而是找一段“稳定且可解释的关系”。把皮尔逊、斯皮尔曼和滚动相关性结合使用,并主动排查伪相关,才能为后续的配对筛选与历史回测打下可靠基础。