12、价差与套利信号:期现套利、跨期套利、统计套利
套利交易,说白了就是赚「定价错误」的钱。我刚开始做高频时,觉得套利很神秘,后来发现核心就一句话:同一个东西,在不同地方卖不同价,你倒一手就赚了。但高频环境里,这个「不同价」可能只存在几毫秒,抓不住就没了。
今天咱们聊聊三种最常见的套利模式:期现套利、跨期套利、统计套利。每种我都会结合实战经验,讲讲信号怎么提取、坑在哪里。
核心思想:套利不是预测涨跌,而是捕捉价差的均值回归。价差偏离到一定程度,你就反向开仓,等它回归。
12.1 期现套利:最直接的定价纠偏
期现套利,就是期货和现货之间的价差交易。理论上,期货价格 = 现货价格 + 持有成本(利息、仓储、保险等)。当这个等式被打破,机会就来了。
信号提取逻辑:
- 计算理论基差 = 现货价格 × (1 + 无风险利率 × 剩余天数/365) - 期货价格
- 当理论基差 > 阈值(比如0.5%),买入现货、卖出期货
- 当理论基差 < -阈值,卖出现货、买入期货
我在项目中遇到过一个问题:现货的流动性不够。你算好了价差,结果现货一买就拉高,成本全变了。所以做期现套利,一定要选流动性好的标的,比如沪深300 ETF 和对应的股指期货。
避坑指南:我曾经在螺纹钢上吃过亏。理论基差到了1.2%,我果断开仓。结果交割月临近,基差就是不回归,最后被迫交割,仓储费吃掉了一半利润。后来我加了一条规则:临近交割日5天内,不做期现套利。
12.2 跨期套利:同一品种不同月份
跨期套利,就是同一个期货品种,不同月份合约之间的价差交易。比如螺纹钢2401和2405,正常情况下远月比近月贵(因为持有成本)。但当市场情绪极端时,价差会扭曲。
常见的跨期套利策略:
- 牛市套利:买入近月、卖出远月。预期近月涨得比远月快
- 熊市套利:卖出近月、买入远月。预期近月跌得比远月快
- 蝶式套利:同时操作三个合约,赚中间合约的定价偏差
我个人习惯用价差的历史分位数来判断开仓时机。比如,统计过去60天的价差分布,当当前价差处于95%分位数以上时,做空价差;处于5%分位数以下时,做多价差。
import numpy as np
import pandas as pd
def cross_month_spread_signal(price_near, price_far, lookback=60):
"""
跨期套利信号生成
price_near: 近月合约价格序列
price_far: 远月合约价格序列
"""
spread = price_far - price_near
# 计算历史分位数
lower = np.percentile(spread, 5)
upper = np.percentile(spread, 95)
current_spread = spread.iloc[-1]
if current_spread > upper:
return -1 # 做空价差:卖远买近
elif current_spread < lower:
return 1 # 做多价差:买远卖近
else:
return 0 # 无信号
注意:跨期套利最怕的是移仓换月。你想想看,合约快到期了,流动性会骤降,价差可能瞬间跳变。我建议在主力合约切换前3天就平仓,别贪最后那点利润。
12.3 统计套利:用数学找定价偏差
统计套利,说白了就是找相关性高的品种对,当它们的价差偏离历史均值时,做回归交易。比如,茅台和五粮液,历史上价差一直稳定在某个范围,突然有一天茅台暴涨、五粮液没动,价差拉大了——这时候就可以做空茅台、做多五粮液。
核心步骤:
- 选对:找到协整关系稳定的品种对。用ADF检验,p值要小于0.05
- 建模:用OLS回归算出对冲比例(即买1手A,卖多少手B)
- 设阈值:计算残差的标准差,当残差超过2倍标准差时开仓
- 止损:当残差超过3倍标准差时,说明模型可能失效,果断止损
嗯,这里要注意:统计套利不是无风险套利。它赌的是价差会回归,但如果基本面变了(比如茅台出了利空、五粮液出了利好),价差可能永远不回归。我见过有人死扛统计套利,结果亏了30%。
实战经验:我建议统计套利只做同行业、同板块的品种。比如银行股之间、钢铁股之间。跨行业的统计套利,相关性太脆弱,容易翻车。
12.4 三种套利的对比与选择
| 套利类型 | 风险等级 | 持仓周期 | 适合场景 | 最大坑点 |
|---|---|---|---|---|
| 期现套利 | 低 | 短(几天) | 流动性好的品种 | 交割日风险 |
| 跨期套利 | 中 | 中(几周) | 趋势明显的市场 | 移仓换月 |
| 统计套利 | 中高 | 中长(几周到几月) | 高相关性品种对 | 基本面突变 |
我个人习惯是:资金量大的时候做期现套利,稳;市场波动大的时候做跨期套利,机会多;震荡市做统计套利,赚点小钱补贴家用。
12.5 套利信号的实时监控框架
做高频套利,信号必须实时更新。我一般用下面这个流程:
这个框架看着简单,但实际跑起来,延迟是关键。我见过有人用Python的for循环逐条处理数据,延迟到了50毫秒,套利机会早没了。后来我改用C++写核心计算,Python只做信号展示,延迟降到了2毫秒以内。
小技巧:套利信号的阈值不要设得太死。我一般用动态阈值——根据最近30分钟的波动率调整。波动率大的时候放宽阈值,波动率小的时候收紧阈值。这样能过滤掉很多假信号。
好了,关于价差与套利信号,今天就聊这么多。记住一句话:套利赚的是辛苦钱,拼的是速度和风控。别想着靠套利一夜暴富,它更像是量化交易里的「稳定器」——赚不多,但亏也亏不到哪去。