第十五章:基差交易中的统计套利

协整检验、均值回归、Z-score信号生成与交易执行——这几个词放在一起,其实就是统计套利的完整流水线。我个人习惯把这套方法叫做“量化基差交易的骨架”。你想想看,基差本身就是一个价差序列,天然适合用统计套利去捕捉。

15.1 为什么基差天然适合统计套利?

基差 = 期货价格 - 现货价格。这个差值理论上应该围绕某个均衡水平波动。为什么?因为期货和现货之间存在着交割机制这个“锚”。

我在项目中遇到过不少新手,上来就用简单的均值回归做基差交易,结果亏得一塌糊涂。原因很简单:基差序列可能根本不是平稳的。你想想看,如果两个价格序列没有长期均衡关系,那它们的差值随时可能“一去不复返”。

所以,第一步必须是——协整检验。

15.2 协整检验:确认长期均衡关系

协整检验说白了就是回答一个问题:期货和现货这两个价格序列,是不是“手拉手”走的?

常用的方法是Engle-Granger两步法:

  1. 先对期货价格和现货价格做线性回归,得到残差序列
  2. 对残差序列做单位根检验(ADF检验)

如果残差是平稳的,就说明两者存在协整关系。嗯,这里要注意:ADF检验的p值要小于0.05才算通过。

核心要点:协整关系 ≠ 相关性高。两个完全不相关的序列也可能协整,但这种情况在期现市场中极少见。我一般会同时看相关系数和协整检验结果,双重确认。

# Python伪代码示例:协整检验
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller

# 假设 futures_prices 和 spot_prices 是Series
# 第一步:回归
spot = sm.add_constant(spot_prices)
model = sm.OLS(futures_prices, spot).fit()
residuals = model.resid

# 第二步:ADF检验
adf_result = adfuller(residuals)
print(f'ADF统计量: {adf_result[0]:.4f}')
print(f'p值: {adf_result[1]:.4f}')
if adf_result[1] < 0.05:
    print('存在协整关系,可以进行均值回归交易')
else:
    print('没有协整关系,别做!')

15.3 均值回归:基差的核心假设

一旦确认了协整关系,我们就可以假设基差会围绕某个均值来回摆动。这个均值可以是历史均值,也可以是滚动窗口的均值。

我个人习惯用60个交易日的滚动均值。为什么是60?差不多一个季度,能覆盖大部分季节性波动。当然,不同品种要调——比如农产品季节性更强,我可能会用90天。

实战技巧:均值回归的速度可以用半衰期来衡量。半衰期越短,回归越快。我一般只做半衰期在5-20天之间的品种,太慢的等不起,太快的容易被假突破洗出去。

15.4 Z-score信号生成:把基差标准化

Z-score = (当前基差 - 均值) / 标准差。这个公式很简单,但怎么用才是关键。

我常用的信号阈值是这样的:

Z-score范围 信号含义 操作建议
Z < -2.0 基差严重偏低(期货被低估) 做多期货,做空现货
-2.0 ≤ Z < -1.5 基差偏低 轻仓建仓
-1.5 ≤ Z ≤ 1.5 正常区间 不操作或平仓
1.5 < Z ≤ 2.0 基差偏高 轻仓建仓
Z > 2.0 基差严重偏高(期货被高估) 做空期货,做多现货

我曾经吃过一次大亏:Z-score到了2.5,我重仓做空基差,结果基差继续扩大到3.0才回头。那次回撤差点让我爆仓。所以我现在加了一条规则:Z-score超过2.5时,反而要减仓,因为可能发生了结构性变化。

15.5 交易执行:从信号到下单

信号生成只是第一步,执行才是见真章的地方。我总结了一套执行流程:

  1. 信号确认:Z-score突破阈值后,等待收盘价确认,避免盘中假信号
  2. 仓位计算:根据当前波动率调整仓位,波动率越大仓位越小
  3. 下单执行:期货用限价单,现货用市价单(流动性差异)
  4. 止损设置:Z-score反向突破3.0时无条件止损
  5. 止盈设置:Z-score回归到0附近时平仓一半,到±0.5时全部平仓

警告:千万不要在基差回归到均值时立刻反向开仓!我见过太多人这样做,结果被来回打脸。等Z-score在均值附近震荡2-3天再考虑反向操作。

15.6 知识体系总览

下面这张图把整个统计套利的流程串起来了,你可以对照着看:

基差统计套利核心流程 步骤1:数据准备 期货价格 + 现货价格 步骤2:协整检验 ADF检验 p<0.05 步骤3:计算基差 期货 - 现货 步骤4:Z-score计算 (基差-均值)/标准差 步骤5:信号判断 |Z|>1.5 开仓 |Z|<0.5 平仓 步骤6:执行交易 期货+现货 配对交易 步骤7:风控止损 |Z|>3.0 无条件止损 核心假设: 基差具有均值回归特性 协整关系稳定 关键参数: 滚动窗口:60天 阈值:1.5/2.0/3.0

15.7 实战中的避坑指南

做统计套利这么多年,我踩过的坑比走过的路还多。分享几个最痛的:

  • 协整关系会变:我2018年做螺纹钢基差,协整关系维持了两年,突然有一天就失效了。后来发现是交割规则改了。所以每周都要重新跑一遍协整检验。
  • 别忽视交易成本:现货交易的手续费、冲击成本、仓储费,这些加起来可能吃掉你一半利润。我一般会在Z-score阈值上加0.2作为缓冲。
  • 流动性陷阱:有些品种的现货市场流动性很差,你开仓容易平仓难。我吃过这个亏,现在只做流动性排名前20的品种。
  • 黑天鹅事件:2020年原油宝事件就是典型。基差瞬间打到-40美元,所有统计套利模型全部失效。所以一定要有极端情况下的应急预案。

我的核心建议:统计套利不是印钞机,它只是给你一个概率上的优势。严格执行纪律,比任何模型都重要。我曾经连续亏损7次,第8次一把赚回来还倒赢。如果中间放弃了,就什么都没有了。

好了,这一章的内容就到这里。记住:协整检验是前提,Z-score是工具,执行力才是关键。把这些都吃透了,基差交易的统计套利你就算入门了。

公众号:蓝海资料掘金营,微信deep3321