第十三章:基差交易的策略优化(四):季节性基差策略

季节性基差策略,说白了就是利用商品在特定时间窗口内的供需规律来赚钱。我做了这么多年交易,发现很多品种的基差走势其实是有“肌肉记忆”的——每年到了某个时间点,它就会重复类似的模式。

为什么会这样?因为农产品的生长周期、工业品的消费淡旺季、甚至节假日的备货节奏,都会在基差上留下痕迹。我们做的,就是把这些痕迹变成交易信号。

季节性基差的底层逻辑

基差的季节性波动,本质上源于三个因素:

  • 供需错配的时间窗口:比如大豆收获季,现货供应暴增,近月合约承压,基差走弱;到了青黄不接的时候,现货紧缺,基差又走强。
  • 仓储与资金成本的变化:临近交割月,持仓成本会显著影响基差。我记得有一年做螺纹钢,到了12月仓储费突然上调,基差瞬间拉大,没注意这个细节的人直接爆仓。
  • 市场预期的自我实现:当所有人都知道“金九银十”要涨价时,基差会在8月就开始提前反应。你想想看,这其实是个博弈问题。

核心观点:季节性基差策略不是简单的“历史重复”,而是寻找“规律背后的驱动力”。如果只盯着历史数据做回测,很容易掉进过拟合的坑里。

如何构建季节性基差模型

我个人习惯用三步法来构建这个策略。嗯,这里要注意,每一步都有坑。

第一步:数据清洗与周期划分

你需要至少5年的日频基差数据。别直接用收盘价算,我建议用日内均价,能过滤掉很多噪音。

# 伪代码示例:计算季节性因子
def seasonal_factor(series, window=252):
    # 去除趋势项
    detrended = series - series.rolling(window).mean()
    # 计算同一天的历史分位数
    day_of_year = series.index.dayofyear
    quantiles = detrended.groupby(day_of_year).quantile([0.1, 0.5, 0.9])
    return quantiles

这里有个细节:遇到闰年要特殊处理,2月29日的数据如果直接扔掉,会破坏序列的连续性。我曾经因为这个疏忽,导致回测结果偏差了3%。

第二步:识别高胜率窗口

把历史数据按月份或周度分组,计算每个时间窗口的基差均值、标准差和胜率。我一般用这个表格来筛选:

时间窗口 基差均值 标准差 胜率 盈亏比
1月第2周 +45 32 72% 1.8
6月第3周 -28 41 58% 1.2
9月第1周 +67 55 81% 2.1

你看,9月第1周的胜率和盈亏比都很漂亮,但标准差也大。这说明什么?收益高但波动剧烈,仓位管理必须跟上。

第三步:动态阈值设定

别用固定阈值。我见过太多人设死“基差超过100就开仓”,结果市场结构变了,阈值失效。我建议用滚动分位数:

# 动态阈值示例
def dynamic_threshold(series, lookback=60, percentile=0.8):
    upper = series.rolling(lookback).quantile(percentile)
    lower = series.rolling(lookback).quantile(1-percentile)
    return upper, lower

避坑指南:我曾经用固定阈值做豆粕,连续三年赚钱,第四年突然失效。后来发现是进口政策变了,季节性规律被打破。所以每半年要重新校准一次阈值参数。

实战中的季节性策略框架

下面这张图是我自己总结的决策流程,你可以直接拿去用:

季节性基差策略决策框架 历史基差数据 季节性分解(STL/X13-ARIMA) 高胜率窗口筛选(胜率>65%) 信号生成:基差突破动态阈值 + 窗口确认 风控:波动率调整仓位 + 止损

三个实战案例

案例一:白糖的“中秋国庆”行情

每年8月中旬到9月底,食品厂开始备货,白糖现货需求激增。基差通常从-50元/吨拉大到+120元/吨。我一般在这个窗口做多基差(买现货抛期货)。但要注意,如果当年进口糖到港量异常大,这个规律会失效。2022年我就栽过一次,进口糖突然放量,基差只走了30个点就回头了。

案例二:螺纹钢的“冬储”博弈

11月到12月,贸易商开始冬储,现货价格有支撑,但期货反映的是来年需求预期,基差会走弱。这时候做空基差(抛现货买期货)胜率不错。不过——这里有个关键点——如果当年库存特别低,冬储需求会推升现货,基差反而走强。所以一定要结合库存数据看。

案例三:豆粕的“天气市”

6月到8月是美国大豆的种植关键期,天气炒作频繁。基差波动极大,经常一天跳50个点。我个人习惯在这个窗口做短线,持仓不超过3天。止损设得比较紧,因为天气市的特点是来得快去得也快。

重要提醒:季节性策略最怕“黑天鹅事件”。比如2020年疫情爆发,所有季节性规律全部失效。我建议把季节性策略的仓位控制在总资金的15%以内,并且要和其他策略做组合。

策略优化的几个方向

做了这么多年,我总结出三个优化点:

  1. 多品种组合:别只做一个品种。农产品、工业品、贵金属的季节性周期不同,组合起来能平滑收益曲线。我目前同时跑6个品种的季节性策略,相关性很低。
  2. 引入外部因子:单纯靠历史数据不够。我会加入库存数据、进口利润、天气模型等辅助判断。比如豆粕的季节性策略,如果叠加美国农业部(USDA)的月度报告预期,胜率能提高8-10个百分点。
  3. 动态退出机制:如果连续3次信号都亏损,我会暂停该品种的季节性交易,等重新校准参数后再启动。别死扛,市场结构变了就要认。

一个小技巧:我习惯在每年年底做一次“季节性策略体检”——把过去一年的交易记录拿出来,逐笔分析哪些窗口失效了,哪些窗口依然有效。然后调整下一年的参数。这个习惯帮我躲过了好几次大的回撤。

好了,季节性基差策略的核心就这些。记住,它是个概率游戏,别追求每笔都赚,只要长期胜率超过60%、盈亏比大于1.5,就是个好策略。剩下的,就是严格执行纪律。

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