第八章 宏观择时(二):库存周期与基差的季节性规律

上一章我们聊了宏观数据怎么用。今天换个角度,从库存周期和季节性规律入手。

说实话,这两个东西放在一起,很多新手会觉得玄乎。但我做了这么多年交易,发现它们其实是基差择时里最实在的工具之一。为什么?因为库存周期决定了供需的大方向,季节性规律则告诉你什么时候该动手。

8.1 库存周期:基差波动的底层逻辑

先说说库存周期。这东西说白了就是企业补库存和去库存的循环。我习惯把它分成四个阶段:被动去库、主动补库、被动补库、主动去库。

每个阶段对基差的影响都不一样。我整理了一个表格,你一看就明白:

库存阶段 供需特征 基差表现 典型品种
被动去库 需求回暖,库存下降 基差走强,近月升水 螺纹钢、铜
主动补库 需求旺盛,主动囤货 基差高位震荡 铁矿石、原油
被动补库 需求走弱,库存积压 基差走弱,远月升水 PTA、甲醇
主动去库 需求低迷,降价清仓 基差深度贴水 橡胶、玻璃

嗯,这里要注意:不是所有品种都严格遵循这个规律。比如农产品,它的库存周期更多受天气和种植周期影响,跟工业品不太一样。

核心观点:库存周期是基差波动的"发动机"。你只要判断当前处于哪个阶段,基差的大方向就基本定了。

8.2 季节性规律:什么时候该动手

库存周期告诉你方向,季节性规律告诉你时机。我个人习惯把季节性规律分成三类:

  • 生产季节性:比如农产品收获季、工业品检修季
  • 消费季节性:比如"金九银十"、春节备货
  • 政策季节性:比如环保限产、进口配额调整

举个例子。螺纹钢的基差,每年都有明显的季节性规律。我做了个统计,你看看:

月份 季节性事件 基差变化 操作建议
3-4月 春节后复工 基差走强 做多近月
6-7月 梅雨季需求淡季 基差走弱 做空近月
9-10月 "金九银十"旺季 基差再次走强 做多近月
12-1月 冬储行情 基差震荡偏强 观望或轻仓

你想想看,如果你在3月份做多螺纹钢近月合约,同时做空远月合约,基差走强就是稳稳的收益。这就是季节性规律的价值。

我的经验:季节性规律不是100%准确。我遇到过几次"反季节性"行情,比如2020年疫情打乱了所有季节性节奏。所以,季节性规律只能作为参考,不能当圣旨。

8.3 实战框架:库存周期+季节性=择时利器

把库存周期和季节性规律结合起来,就是一套完整的择时框架。我画了个流程图,帮你理清思路:

基差择时:库存周期+季节性规律框架 判断库存周期 (被动去库/主动补库/被动补库/主动去库) 识别季节性规律 (生产/消费/政策季节性) 确定基差方向 (做多基差/做空基差) 选择合约对 (近月+远月组合) 设置止损止盈 (基差阈值+时间止损) 动态调整 (根据库存变化调仓) 执行基差交易策略

这个框架怎么用?我举个例子。假设现在是3月份,螺纹钢库存处于被动去库阶段,同时季节性规律显示基差应该走强。这时候,我的操作思路是这样的:

  1. 判断库存周期:看库存数据,确认是主动去库还是被动去库
  2. 识别季节性:3月份是复工季,基差历史规律是走强
  3. 确定方向:做多基差,买入近月合约,卖出远月合约
  4. 选择合约:近月选RB2405,远月选RB2410
  5. 设置止损:基差跌破历史同期低点就止损
避坑指南:我曾经在2021年5月犯过一个错误。当时螺纹钢库存周期显示被动去库,季节性也支持做多基差。但我忽略了政策风险——国家突然出手打压大宗商品价格,基差瞬间反转。所以,宏观择时一定要留个心眼,政策因素有时候比库存周期和季节性都重要。

8.4 量化实现:用Python验证季节性规律

光说不练假把式。我习惯用Python来验证季节性规律是否有效。下面是一个简单的代码示例,用来计算螺纹钢基差的季节性均值:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 假设df是包含基差数据的DataFrame
# 列名:date, basis

def seasonal_basis(df):
    """
    计算基差的季节性均值
    """
    df['month'] = pd.to_datetime(df['date']).dt.month
    seasonal_mean = df.groupby('month')['basis'].mean()
    seasonal_std = df.groupby('month')['basis'].std()
    
    return seasonal_mean, seasonal_std

# 加载数据
df = pd.read_csv('rebar_basis.csv')
mean, std = seasonal_basis(df)

# 绘制季节性曲线
plt.figure(figsize=(10, 6))
plt.plot(mean.index, mean.values, 'b-', linewidth=2, label='季节性均值')
plt.fill_between(mean.index, 
                 mean.values - std.values, 
                 mean.values + std.values, 
                 alpha=0.2, label='±1标准差')
plt.xlabel('月份')
plt.ylabel('基差')
plt.title('螺纹钢基差季节性规律')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

这个代码很简单,但很实用。你跑一遍就能看到,螺纹钢基差在3月和9月确实有明显的峰值。这就是季节性规律的量化证据。

我的习惯:我一般会计算过去5年的季节性均值,而不是10年。因为市场结构变化太快,太老的数据反而会误导你。另外,我会把季节性曲线和当前基差叠加在一起看,如果当前基差偏离季节性均值超过2个标准差,那就是一个强烈的交易信号。

8.5 实战案例:2023年铜的基差交易

最后分享一个我自己的实战案例。2023年4月,铜的库存处于被动去库阶段,而且季节性规律显示5-6月是消费旺季,基差通常走强。

我当时做了两件事:

  • 买入沪铜近月合约(CU2305)
  • 卖出沪铜远月合约(CU2310)

入场时基差是200元/吨。我设了止损:基差跌破100元/吨就平仓。结果呢?到5月中旬,基差涨到了450元/吨。我平仓出场,单笔收益超过100%。

嗯,这个案例看起来很完美。但说实话,我也不是每次都这么顺。2022年同样的策略,因为宏观环境突变,基差反而走弱了。所以,库存周期和季节性规律只是工具,关键还是看你怎么用。

好了,这一章就聊到这里。记住:库存周期定方向,季节性规律定时机。两者结合,你的基差交易胜率会大幅提升。


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