第二章 核心原理:价差回归、协整关系与统计套利

各位同学,欢迎来到第二章。这一章是整个跨品种对冲策略的“内功心法”。

说实话,很多人做套利策略,上来就写代码、跑回测,结果亏得一塌糊涂。为什么?因为没搞懂背后的数学逻辑。今天我们就来把这层窗户纸捅破。

2.1 价差回归原理——套利的底层逻辑

先问一个问题:为什么两个品种的价格会“一起涨、一起跌”?

举个例子。螺纹钢和热卷,都是钢铁产品。螺纹钢用来盖楼,热卷用来造汽车。如果螺纹钢突然暴涨,热卷却不动,会发生什么?

钢厂会立刻调整生产线,多产螺纹钢、少产热卷。结果螺纹钢供给增加,价格回落;热卷供给减少,价格上升。最终,两者的价差会回到合理区间。

这就是价差回归的核心逻辑:当价差偏离正常范围时,市场力量会把它拉回来

核心公式:

价差 = P₁ - β × P₂

其中 β 是对冲比率,P₁、P₂ 是两个品种的价格。

我个人习惯把价差想象成一根“橡皮筋”。你把它拉得越远,它弹回来的力量就越大。我们做套利,就是在橡皮筋拉得最远的时候出手。

2.2 协整关系与平稳性——别把“相关”当“因果”

很多新手犯过一个错误:看到两个品种走势很像,就以为可以做套利。

我当年也踩过这个坑。记得有一次,我发现A股和某商品期货走势高度相关,相关系数0.85。兴冲冲做了策略,结果亏得怀疑人生。

为什么?因为相关性 ≠ 协整性

相关性描述的是“走势像不像”,协整性描述的是“价差会不会回归”。

举个直观的例子:一个醉汉牵着一条狗。醉汉走路东倒西歪(非平稳),狗也东跑西颠(非平稳)。但狗和醉汉之间的距离(价差)是有限的——狗跑远了会被绳子拉回来。这个“距离”就是平稳的。

协整关系,就是这根“绳子”。

平稳性检验(ADF检验):

我们通常用ADF检验来判断价差是否平稳。p值小于0.05,说明价差是平稳的,可以做套利。

代码示例:

from statsmodels.tsa.stattools import adfuller

# 计算价差
spread = price1 - beta * price2

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

if result[1] < 0.05:
    print('价差平稳,存在协整关系')
else:
    print('价差不平稳,不适合做套利')

2.3 统计套利基础——用数学说话

统计套利,说白了就是“用概率赚钱”。

传统套利靠的是“无风险”机会,比如同一只股票在不同交易所的价格差异。但这种机会转瞬即逝,普通人根本抢不到。

统计套利不一样。它承认风险存在,但通过数学证明:长期来看,胜率在你这边

具体怎么做?

  1. 找配对:找到两个协整的品种(比如豆油和棕榈油)
  2. 算价差:计算两者的价差序列
  3. 定阈值:用均值±n倍标准差设定开仓/平仓线
  4. 执行交易:价差偏离时开仓,回归时平仓

避坑指南:

我曾经在回测中看到年化30%的收益,兴奋得直接上实盘。结果一个月亏了15%。

后来才发现,我用的数据是日线,但交易频率是分钟级。回测和实盘完全不是一回事。

记住:回测用的数据频率,必须和交易频率一致

2.4 均值回归策略逻辑——核心交易框架

均值回归策略,是统计套利最经典的实现方式。它的逻辑很简单:

  • 当价差高于上轨:做空价差(卖高买低)
  • 当价差低于下轨:做多价差(买高卖低)
  • 当价差回归均值:平仓获利

这里有个关键参数:阈值怎么设?

我个人的经验是:

参数 常见取值 说明
开仓阈值 均值 ± 2σ 约95%的价差落在这个范围内
平仓阈值 均值 ± 0.5σ 价差回归到均值附近时平仓
止损阈值 均值 ± 3.5σ 防止价差持续偏离导致巨亏

你想想看,如果价差已经偏离到3个标准差以外,还硬扛着不加止损,那跟赌博有什么区别?

完整策略代码框架:

import numpy as np
import pandas as pd

class MeanReversionStrategy:
    def __init__(self, entry_z=2.0, exit_z=0.5, stop_z=3.5):
        self.entry_z = entry_z
        self.exit_z = exit_z
        self.stop_z = stop_z
        
    def generate_signals(self, spread):
        mean = np.mean(spread)
        std = np.std(spread)
        
        z_score = (spread - mean) / std
        
        signals = pd.Series(0, index=spread.index)
        
        # 开仓信号
        signals[z_score > self.entry_z] = -1  # 做空价差
        signals[z_score < -self.entry_z] = 1  # 做多价差
        
        # 平仓信号
        signals[abs(z_score) < self.exit_z] = 0
        
        # 止损信号
        signals[abs(z_score) > self.stop_z] = 0
        
        return signals

2.5 知识体系总览

说了这么多,我们来画一张图,把整个知识体系串起来。

跨品种对冲策略核心知识体系 基础层:价差回归原理 检验层:协整关系与平稳性(ADF检验) 方法层:统计套利基础 策略层:均值回归策略逻辑 核心:价差回归 工具:协整检验 执行:均值回归

这张图很清楚地展示了从原理到策略的完整链路。每一层都建立在前一层的基础上,缺一不可。

嗯,到这里,核心原理部分就讲完了。记住一句话:没有协整关系的套利,就是赌博。下一章我们会深入实战,用真实数据跑一遍完整的策略流程。