一、统计套利基础:均值回归、协整关系、配对交易的核心思想

大家好,我是你们的讲师。今天咱们聊聊统计套利的基础。说实话,我刚入行那会儿,觉得套利就是「低买高卖」这么简单。后来真金白银砸进去,才发现事情没那么简单。

统计套利的核心,说白了就是找「亲戚」。两只股票,如果它们长期走势像亲兄弟一样同步,偶尔闹别扭分开了,那这就是机会。等它们和好如初,咱们就能赚差价。

嗯,这个思路听着很美好。但怎么找「亲戚」?怎么判断「闹别扭」?这就是我们今天要讲的内容。

1.1 均值回归:万物皆可「回归」

先讲均值回归。这个概念其实很朴素——价格涨多了会跌,跌多了会涨。就像橡皮筋,拉长了总会弹回去。

我在项目中遇到过一只股票,连续跌了5天,我心想「该反弹了吧」,结果第6天继续跌。为什么?因为均值回归不是简单的「跌多了就涨」,它需要一个「均值」作为锚点。

核心要点:均值回归的前提是价格围绕某个「均值」上下波动。这个均值可以是移动平均线,也可以是某个统计量。

举个例子:

import numpy as np
import pandas as pd

# 模拟一个均值回归过程
np.random.seed(42)
mu = 100  # 均值
theta = 0.1  # 回归速度
sigma = 2  # 波动率

prices = [mu]
for t in range(1, 1000):
    # 均值回归模型:dX = theta * (mu - X) * dt + sigma * dW
    dx = theta * (mu - prices[-1]) + sigma * np.random.randn()
    prices.append(prices[-1] + dx)

# 你看,价格始终围绕100上下波动
print(f"均值: {np.mean(prices):.2f}")
print(f"标准差: {np.std(prices):.2f}")

为什么会这样?因为均值回归过程有一个「拉力」——当价格偏离均值时,回归项 theta * (mu - X) 会把它往回拽。theta越大,回归越快。

个人经验:我建议你在实盘前,先用历史数据算一下回归半衰期。半衰期 = ln(2) / theta。如果半衰期是3天,那这个策略适合短线;如果是30天,那就得有点耐心了。

1.2 协整关系:比相关性更「铁」的关系

很多人把相关性和协整搞混。相关性高,不代表协整。比如两只股票都跟大盘涨,它们相关性很高,但可能没有协整关系。

协整是什么?它描述的是两个时间序列的「长期均衡关系」。说白了,就是它们虽然各自随机游走,但它们的线性组合是平稳的。

我记得有一次,一个学员问我:「老师,我找了两只相关性0.9的股票做配对,为什么亏钱了?」我让他画个价差图看看。结果价差越走越远,根本不回归。这就是典型的「伪回归」——相关性高,但没协整。

避坑指南:我曾经吃过这个亏。2018年,我用相关性筛选了10对股票做配对交易,结果只有3对真正赚钱。后来我才知道,必须用协整检验(比如Engle-Granger两步法)来验证。

协整检验的步骤:

  1. 用OLS回归:Y = alpha + beta * X + epsilon
  2. 对残差epsilon做单位根检验(ADF检验)
  3. 如果残差平稳,说明Y和X协整
import statsmodels.api as sm

# 假设我们有两只股票的价格序列
# stock_a 和 stock_b

# 第一步:回归
X = sm.add_constant(stock_b)
model = sm.OLS(stock_a, X).fit()
residuals = model.resid

# 第二步:ADF检验
from statsmodels.tsa.stattools import adfuller
adf_result = adfuller(residuals)

print(f"ADF统计量: {adf_result[0]:.4f}")
print(f"p值: {adf_result[1]:.4f}")

# 如果p值小于0.05,说明残差平稳,存在协整关系
if adf_result[1] < 0.05:
    print("恭喜!存在协整关系")
else:
    print("没有协整关系,换个组合试试")

1.3 配对交易的核心思想:从「找亲戚」到「赚差价」

好了,有了均值回归和协整这两个工具,配对交易就水到渠成了。

核心思想就三步:

  1. 找亲戚:用协整检验找到两只长期均衡的股票
  2. 等闹别扭:当价差偏离均值超过某个阈值(比如2倍标准差)
  3. 赚差价:做多被低估的,做空被高估的,等价差回归

你想想看,这就像两个双胞胎。平时身高差不多,有一天弟弟突然比哥哥矮了5厘米。你赌他们最终会长回一样高。怎么赌?买矮的那个长高(做多),买高的那个变矮(做空)。

关键公式:

价差 = 股票A价格 - beta * 股票B价格

其中beta是协整回归的系数。注意,不是1:1配对,而是按beta比例配对。

我个人的习惯是,用Z-score来标准化价差:

# 计算价差
spread = stock_a - beta * stock_b

# 计算Z-score
z_score = (spread - spread.mean()) / spread.std()

# 交易信号
entry_threshold = 2.0  # 开仓阈值
exit_threshold = 0.5   # 平仓阈值

if z_score > entry_threshold:
    print("做空价差:卖A,买B")
elif z_score < -entry_threshold:
    print("做多价差:买A,卖B")
elif abs(z_score) < exit_threshold:
    print("平仓")

这里要注意一个细节:阈值怎么设?我见过有人用1.5倍标准差,有人用2.5倍。没有标准答案。我的建议是回测时多试几个值,找到最适合你交易频率的那个。

实战技巧:别只看价格,还要看成交量。如果价差偏离很大但成交量很小,可能是流动性问题,别急着进场。我曾经因为忽略成交量,在价差偏离3倍标准差时进场,结果等了两个月才回归,资金成本都亏进去了。

知识体系总览

下面这张图,是我自己总结的统计套利知识体系。你把它存下来,学完这章再回头看,会更有感觉。

统计套利知识体系 统计套利核心概念 均值回归 协整关系 配对交易 均值回归 · Ornstein-Uhlenbeck模型 · 回归半衰期计算 · 均值与波动率估计 协整关系 · Engle-Granger两步法 · Johansen检验 · 残差平稳性检验 配对交易 · Z-score信号生成 · 阈值设定与仓位管理 · 风险控制与止损 实战应用:股票配对、ETF套利、加密货币套利 回测验证 → 参数优化 → 实盘监控 → 动态调整

这张图把今天的内容串起来了。你仔细看,均值回归是理论基础,协整关系是筛选工具,配对交易是最终策略。三者缺一不可。

最后说一句:统计套利不是印钞机。它需要你耐心等待机会,严格执行纪律。我见过太多人,策略回测时赚得盆满钵满,实盘时却因为拿不住单子而亏损。记住,统计套利的利润,来自于对「均值回归」这个信念的坚持。