第四节:跨期套利(一)——期货跨期套利原理、价差与基差的概念、正向市场与反向市场、跨期套利策略类型
各位同学,今天我们来聊聊跨期套利。这是套利交易里最基础、也最实用的一块。我个人做量化这些年,跨期套利是我最早接触的套利策略之一,也是我实盘跑得最久的策略之一。说白了,它不复杂,但里面的门道不少。
一、什么是跨期套利?
跨期套利,就是利用同一品种、不同到期月份的期货合约之间的价差波动来获利。你买近月合约,卖远月合约,或者反过来。赚的不是单边涨跌的钱,而是价差回归或扩大的钱。
举个例子:螺纹钢期货,有RB2301(2023年1月到期)和RB2305(2023年5月到期)。如果1月合约比5月合约贵了50块钱,你觉得合理吗?不合理,那就做空价差——卖1月、买5月。等价差回归到正常水平,平仓获利。
嗯,这里要注意:跨期套利不是无风险套利。它是有风险的,只是风险比单边交易小很多。我见过有人把跨期套利当成无风险套利来做,结果亏得很惨。后面我会讲为什么。
二、价差与基差——两个必须搞清的概念
做跨期套利,你天天跟这两个东西打交道。搞不清它们,就别谈策略了。
2.1 价差(Spread)
价差,就是两个不同月份合约的价格差。公式很简单:
价差 = 近月合约价格 - 远月合约价格
注意:我习惯用近月减远月。也有人用远月减近月,这无所谓,关键是保持一致。我个人习惯用近月减远月,因为这样价差为正时,说明近月比远月贵,市场处于反向市场(后面会讲)。
价差可以是正数,也可以是负数。正数说明近月贵,负数说明远月贵。
2.2 基差(Basis)
基差是现货价格与期货价格之间的差。公式:
基差 = 现货价格 - 期货价格
基差为正,说明现货比期货贵,这叫现货升水。基差为负,说明期货比现货贵,这叫期货升水。
基差和价差有什么关系?其实,跨期价差的本质,就是两个不同月份合约的基差之差。你想想看:
价差 = (现货 - 近月基差) - (现货 - 远月基差) = 远月基差 - 近月基差
所以,价差的变动,本质上反映的是不同月份基差的相对变化。我在项目中遇到过很多新手,把价差和基差搞混,结果策略逻辑全错了。记住:价差是期货之间的差,基差是现货与期货之间的差。
核心要点:
- 价差 = 近月价格 - 远月价格
- 基差 = 现货价格 - 期货价格
- 价差的本质 = 远月基差 - 近月基差
三、正向市场与反向市场
这两个概念,是理解跨期套利策略的前提。我建议你先把它们刻在脑子里。
3.1 正向市场(Contango)
正向市场,就是远月合约比近月合约贵。价差为负。为什么会这样?
因为持有成本。你持有现货到远月,需要支付仓储费、保险费、资金利息等。所以远月价格应该比近月高,高出的部分就是持有成本。公式:
远月价格 = 近月价格 + 持有成本
正向市场下,价差为负,且绝对值等于持有成本。如果价差绝对值大于持有成本,说明远月被高估了,可以做空价差(卖远月、买近月)。
3.2 反向市场(Backwardation)
反向市场,就是近月合约比远月合约贵。价差为正。为什么会这样?
因为现货紧缺。近月马上要交割,但现货供应紧张,大家抢着买近月合约去交割,把近月价格推高了。远月嘛,还早,供需没那么紧张,价格相对便宜。
反向市场下,价差为正。如果价差过大,说明近月被高估了,可以做多价差(买远月、卖近月)。
实战小技巧:
我一般会先判断当前市场是正向还是反向。如果是正向市场,我倾向于做空价差(卖远月买近月)。如果是反向市场,我倾向于做多价差(卖近月买远月)。当然,这不是绝对的,还要结合价差的绝对水平和历史分位数来看。
四、跨期套利策略类型
跨期套利策略,按逻辑可以分为三类。我一个个讲。
4.1 持有成本套利(无风险套利)
这是最接近无风险的套利。逻辑很简单:如果价差偏离了持有成本,就存在套利机会。
比如,正向市场下,理论价差应该是 -100 元(持有成本100元)。但实际价差是 -150 元,说明远月被高估了。你卖远月、买近月,等交割时,你持有近月合约到交割,拿到现货,然后支付持有成本,用现货去交割远月空头。赚的就是那50元的价差偏离。
但这种套利,需要你具备现货交割能力。我早期做的时候,没有现货渠道,只能做统计套利,也就是下面要讲的。
4.2 统计套利(均值回归套利)
这是最常用的跨期套利策略。逻辑:价差会在一个均值附近波动,偏离大了就会回归。
具体做法:
- 计算历史价差的均值、标准差
- 设定阈值,比如均值 ± 2倍标准差
- 当价差突破上轨,做空价差(卖近月、买远月)
- 当价差跌破下轨,做多价差(买近月、卖远月)
- 价差回归到均值附近,平仓
代码示例(Python伪代码):
import numpy as np
# 假设有近月价格和远月价格序列
near_prices = [4000, 4010, 4020, ...]
far_prices = [4050, 4055, 4060, ...]
# 计算价差
spread = np.array(near_prices) - np.array(far_prices)
# 计算均值和标准差
mean = np.mean(spread)
std = np.std(spread)
# 设定阈值
upper = mean + 2 * std
lower = mean - 2 * std
# 交易信号
if spread[-1] > upper:
print("做空价差:卖近月,买远月")
elif spread[-1] < lower:
print("做多价差:买近月,卖远月")
else:
print("观望")
嗯,这里要注意:统计套利的前提是价差具有均值回归特性。不是所有品种、所有月份的价差都会回归。我踩过这个坑——有些品种的价差,趋势性很强,根本不回归。做统计套利,亏得底裤都不剩。
避坑指南:
我曾经在动力煤期货上做跨期统计套利,价差突破了上轨,我果断做空价差。结果价差继续扩大,一路不回头。后来我才发现,那段时间动力煤现货紧缺,反向市场持续强化,价差根本没有回归的动力。所以,做统计套利前,一定要先判断市场结构是正向还是反向,以及这个结构会不会持续。
4.3 事件驱动套利
这种策略,是利用特定事件对近月和远月合约的不同影响来获利。
比如:
- 交割月临近,持仓限制导致近月合约波动加大
- 季节性供需变化,比如农产品收获季,近月承压
- 政策出台,对近月和远月的影响不同
事件驱动套利,需要你对品种的基本面有深刻理解。我一般把它作为统计套利的补充,在统计套利信号出现时,再结合事件分析,提高胜率。
五、知识体系总览
下面这张图,是我自己整理的跨期套利知识体系。你可以把它当作本章的思维导图。
六、总结
跨期套利,说白了就是利用价差的波动赚钱。你要搞清楚价差和基差的区别,判断当前市场是正向还是反向,然后选择合适的策略类型。
我个人建议:新手先从统计套利入手,选流动性好的品种,比如螺纹钢、铁矿石、PTA等。先跑模拟盘,跑通了再上实盘。别一上来就搞持有成本套利,那个需要现货交割能力,门槛高。
嗯,今天就讲到这里。记住:跨期套利不是无风险套利,它只是风险相对较小。做好风控,设置好止损,才是长久之计。