第十五章:基差交易中的统计套利
协整检验、均值回归、Z-score信号生成与交易执行——这几个词放在一起,其实就是统计套利的完整流水线。我个人习惯把这套方法叫做“量化基差交易的骨架”。你想想看,基差本身就是一个价差序列,天然适合用统计套利去捕捉。
15.1 为什么基差天然适合统计套利?
基差 = 期货价格 - 现货价格。这个差值理论上应该围绕某个均衡水平波动。为什么?因为期货和现货之间存在着交割机制这个“锚”。
我在项目中遇到过不少新手,上来就用简单的均值回归做基差交易,结果亏得一塌糊涂。原因很简单:基差序列可能根本不是平稳的。你想想看,如果两个价格序列没有长期均衡关系,那它们的差值随时可能“一去不复返”。
所以,第一步必须是——协整检验。
15.2 协整检验:确认长期均衡关系
协整检验说白了就是回答一个问题:期货和现货这两个价格序列,是不是“手拉手”走的?
常用的方法是Engle-Granger两步法:
- 先对期货价格和现货价格做线性回归,得到残差序列
- 对残差序列做单位根检验(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 交易执行:从信号到下单
信号生成只是第一步,执行才是见真章的地方。我总结了一套执行流程:
- 信号确认:Z-score突破阈值后,等待收盘价确认,避免盘中假信号
- 仓位计算:根据当前波动率调整仓位,波动率越大仓位越小
- 下单执行:期货用限价单,现货用市价单(流动性差异)
- 止损设置:Z-score反向突破3.0时无条件止损
- 止盈设置:Z-score回归到0附近时平仓一半,到±0.5时全部平仓
警告:千万不要在基差回归到均值时立刻反向开仓!我见过太多人这样做,结果被来回打脸。等Z-score在均值附近震荡2-3天再考虑反向操作。
15.6 知识体系总览
下面这张图把整个统计套利的流程串起来了,你可以对照着看:
15.7 实战中的避坑指南
做统计套利这么多年,我踩过的坑比走过的路还多。分享几个最痛的:
- 协整关系会变:我2018年做螺纹钢基差,协整关系维持了两年,突然有一天就失效了。后来发现是交割规则改了。所以每周都要重新跑一遍协整检验。
- 别忽视交易成本:现货交易的手续费、冲击成本、仓储费,这些加起来可能吃掉你一半利润。我一般会在Z-score阈值上加0.2作为缓冲。
- 流动性陷阱:有些品种的现货市场流动性很差,你开仓容易平仓难。我吃过这个亏,现在只做流动性排名前20的品种。
- 黑天鹅事件:2020年原油宝事件就是典型。基差瞬间打到-40美元,所有统计套利模型全部失效。所以一定要有极端情况下的应急预案。
我的核心建议:统计套利不是印钞机,它只是给你一个概率上的优势。严格执行纪律,比任何模型都重要。我曾经连续亏损7次,第8次一把赚回来还倒赢。如果中间放弃了,就什么都没有了。
好了,这一章的内容就到这里。记住:协整检验是前提,Z-score是工具,执行力才是关键。把这些都吃透了,基差交易的统计套利你就算入门了。