第十六章:基差交易策略二——库存高位时的反套策略(卖现货买期货)

好,咱们接着聊基差交易。上一章讲了库存低位时的正套,这一章咱们反过来——库存高位,做反套

说白了,就是卖现货、买期货。为什么?因为库存堆得跟山一样高,现货压力大,价格抬不起来。但期货呢?市场预期未来库存会消化,价格反而可能坚挺。这时候,基差就会走弱,甚至变成负值。

我刚开始做这个策略时,总觉得反套比正套难。正套是顺趋势,反套是逆人性。你想想看,别人都在抛现货,你却要接期货,心里不踏实。但后来我发现,只要库存数据够硬,反套的胜率其实很高。

16.1 库存高位反套的核心逻辑

先理清逻辑链条:

  1. 库存高 → 现货供应过剩,持货成本高,贸易商急着出货
  2. 现货承压 → 现货价格下跌,或者涨不动
  3. 期货预期 → 市场认为未来库存会下降,期货价格相对坚挺
  4. 基差走弱 → 现货-期货价差缩小,甚至变成负值
  5. 反套盈利 → 卖出现货(或借货卖出),买入期货,等待基差回归

嗯,这里要注意:反套不是简单的“卖高买低”。它赌的是基差会继续走弱,或者至少不会走强。如果你在库存高位时做反套,但基差突然走强,那就亏了。

核心要点:库存高位做反套,本质是交易“库存去化预期”。如果市场预期库存会快速下降,反套就成立。如果库存迟迟不去,反套就会变成“接飞刀”。

16.2 实战中的操作细节

我个人习惯把反套分成两种:主动反套被动反套

类型 触发条件 操作方式 风险点
主动反套 库存创历史新高,且仍在累积 主动卖现货、买期货,开仓比例1:1 库存拐点未到,基差继续走弱但幅度有限
被动反套 库存高位但开始去化,基差已走弱 等基差反弹后再入场,卖现货买期货 去化速度不及预期,基差反弹后再次走弱

我记得有一次做螺纹钢的反套。当时社会库存堆到1200万吨,创了五年新高。现货价格天天跌,但期货主力合约反而稳住了。我判断基差会从+200缩到-50左右,就开了反套。结果呢?基差确实缩了,但只缩到+80就停了。我平仓早了,少赚了一半。

后来我总结:反套的平仓时机比开仓更重要。开仓看库存,平仓看基差斜率。如果基差走弱的速度突然变慢,就要考虑止盈了。

16.3 避坑指南:我曾经踩过的三个坑

做反套这些年,我踩过不少坑。挑三个典型的说说:

  • 坑一:库存数据滞后。我曾经根据周度库存数据做反套,结果那周数据是错的,实际库存已经拐头了。等我反应过来,基差已经反弹了50个点。后来我改用日度高频数据,甚至盯仓库的出入库流水。
  • 坑二:交割月效应。临近交割月,期货价格会向现货回归。如果你做的是远月反套,但近月合约快到期了,基差可能会突然走强。我建议反套尽量选远月合约,避开交割月。
  • 坑三:资金成本。反套需要卖现货,如果你没有现货,就得借货。借货成本如果太高,会吃掉利润。我一般只做自己有现货渠道的品种,比如铜、铝、螺纹钢。

警告:反套不是无风险套利。它本质是单边做空基差,如果基差反向波动,亏损可能很大。一定要设止损,我一般设基差反弹20%就止损。

16.4 量化实现:一个简单的反套信号

下面是我用过的反套信号代码,Python写的,逻辑很简单:

import pandas as pd
import numpy as np

# 假设df包含:库存、现货价、期货价
df['基差'] = df['现货价'] - df['期货价']
df['库存_zscore'] = (df['库存'] - df['库存'].rolling(60).mean()) / df['库存'].rolling(60).std()

# 反套信号:库存zscore > 2 且 基差为正
df['反套信号'] = (df['库存_zscore'] > 2) & (df['基差'] > 0)

# 开仓:卖现货买期货
df['仓位'] = np.where(df['反套信号'], -1, 0)  # -1表示做空基差

# 平仓条件:基差转负或库存zscore < 1
df['平仓信号'] = (df['基差'] < 0) | (df['库存_zscore'] < 1)
df['仓位'] = np.where(df['平仓信号'], 0, df['仓位'])

# 计算收益
df['收益'] = df['仓位'].shift(1) * (df['基差'].diff())

这个代码很粗糙,但核心逻辑是对的。实际使用时,我会加上过滤条件,比如只做主力合约、避开节假日、考虑移仓换月成本。

16.5 知识体系图:库存高位反套策略全景

下面这张图,我画了反套策略的完整框架。从库存数据到开仓平仓,一目了然。

库存高位反套策略全景图 库存数据 社会库存/港口库存/厂库 价格数据 现货价/期货价/基差 市场情绪 持仓量/成交量/期限结构 核心判断条件 库存处于历史高位(zscore > 2) 执行反套操作 卖出现货(或借货卖出)+ 买入期货 平仓条件(满足任一即平仓) ① 基差转负 ② 库存zscore < 1 ③ 基差反弹超过20% ④ 临近交割月 ⑤ 出现库存拐点信号 风险 库存拐点 交割月 资金成本 数据滞后 流动性

个人经验:这张图我每次做反套前都会看一遍。尤其是平仓条件那部分,很多人只盯着基差,忽略了库存拐点。我吃过亏,现在把库存拐点信号放在第一位。

16.6 一个完整的案例:2023年铜的反套机会

2023年6月,铜的全球显性库存达到65万吨,是过去五年的最高点。现货贴水扩大到300元/吨。我判断反套机会来了。

操作细节:

  • 开仓时间:2023年6月15日
  • 开仓价差:基差+280元/吨(现货高于期货)
  • 操作:卖出100吨现货铜,买入10手沪铜期货(每手5吨)
  • 平仓时间:2023年7月20日
  • 平仓价差:基差-50元/吨(现货低于期货)
  • 盈利:330元/吨 × 100吨 = 33,000元

这个案例里,库存从65万吨降到58万吨,市场预期库存去化加速,基差从正转负。反套盈利很稳。

但如果你在7月10日才入场,基差已经缩到+50了,利润空间就很小。所以反套要趁早,等大家都看到机会时,机会已经走了一半。

总结一句话:库存高位做反套,核心是“卖现实,买预期”。现实是库存高,预期是库存降。只要预期不变,反套就能赚钱。

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