一、跨期套利基础:定义、原理与核心逻辑
1.1 什么是跨期套利?
跨期套利,说白了就是利用同一品种、不同月份合约之间的价差来赚钱。
我刚开始做量化交易时,总觉得这玩意儿挺简单——不就是买近卖远或者买远卖近嘛。但真正上手后才发现,这里面的门道比想象中深得多。
举个例子:螺纹钢期货,有RB2301和RB2305两个合约。它们都是螺纹钢,但交割月份不同。正常情况下,远月合约比近月合约贵一点,因为要算上持仓成本。但有时候,这个价差会变得离谱——要么太大,要么太小,甚至变成负数。这时候,套利机会就来了。
核心定义:跨期套利是指在同一市场、同一品种的不同到期月份合约之间,建立方向相反的头寸,利用价差的异常波动来获取低风险收益的交易策略。
1.2 价差从哪里来?
你可能会问:为什么不同月份的合约价格会不一样?
嗯,这里有几个关键因素:
- 持仓成本:仓储费、资金利息、保险费等。远月合约天然要比近月贵。
- 供需预期:比如农产品,收获季的合约往往便宜,青黄不接时贵。
- 市场情绪:短期资金炒作,会把某个合约推得过高或过低。
- 交割规则:不同交易所对交割品的标准、升贴水规定不同。
我记得有一次做豆粕套利,M2209和M2301的价差突然从80块飙到200块。我一看,原来是市场担心9月大豆到港量不足,近月合约被硬生生拉起来了。这种情绪驱动的价差,往往不可持续。
1.3 核心逻辑:均值回归
跨期套利的底层逻辑,其实就是均值回归。
价差不会永远偏离。它就像一根被拉长的橡皮筋,迟早会弹回去。我们要做的,就是在它拉得最远的时候出手。
我的经验:判断价差是否"拉得太远",不能光靠肉眼。我一般会用Z-score或者布林带做量化判断。当Z-score超过2或者低于-2时,才考虑入场。
举个例子:
# 计算价差的Z-score
import numpy as np
def z_score(spread, window=20):
mean = np.mean(spread[-window:])
std = np.std(spread[-window:])
return (spread[-1] - mean) / std
# 当z_score > 2 或 < -2 时触发信号
if z_score(current_spread) > 2:
print("价差过高,考虑做空价差")
elif z_score(current_spread) < -2:
print("价差过低,考虑做多价差")
1.4 两种基本策略
跨期套利分两种:
| 策略类型 | 操作方式 | 适用场景 |
|---|---|---|
| 正向套利 | 买入近月,卖出远月 | 价差过大,预期回归 |
| 反向套利 | 卖出近月,买入远月 | 价差过小或倒挂,预期回归 |
正向套利,说白了就是赌价差会缩小。反向套利,则是赌价差会扩大。
我个人的习惯是:优先做正向套利。为什么?因为正向套利有现货支撑,近月合约临近交割时,价格会向现货靠拢,风险更可控。反向套利一旦遇到逼仓,那亏损可不是闹着玩的。
避坑指南:我曾经在PTA上做过一次反向套利,价差已经倒挂-100块了,我觉得肯定要回归。结果呢?现货紧缺,近月合约被多头硬拉到交割,价差扩大到-300块。那次教训让我明白:不要跟趋势对着干,尤其是近月合约有逼仓风险时。
1.5 流动性:套利的命门
做跨期套利,最怕什么?
不是方向判断错,而是流动性不足。
你想想看,你同时开了两个方向的单子,结果远月合约半天成交不了一手,价差滑点大得吓人。等你终于平仓了,利润全被滑点吃掉了。
所以,我每次做套利前,都会先看两个合约的流动性:
- 近月合约日均成交量 > 10万手
- 远月合约日均成交量 > 5万手
- 买卖价差(spread)不超过1个最小变动价位
如果流动性不达标,再好的机会我也不碰。这是用真金白银换来的教训。
1.6 知识体系总览
下面这张图,是我自己梳理的跨期套利知识框架。你可以把它当作一张地图,后面每个章节都会对应到其中的一个节点。
1.7 小结
跨期套利,本质上是在赌价差会回归。但赌也要讲方法:
- 先搞清楚价差为什么存在
- 再用量化工具判断是否偏离
- 最后——也是最重要的——确认流动性没问题
嗯,这一章就到这里。记住一句话:套利不是无风险,而是风险可控。后面我们会一步步深入,把每个环节都拆开揉碎了讲清楚。