第十一章:基差与库存关系

库存这东西,说白了就是商品市场的「蓄水池」。我做交易这些年,最深的体会就是——库存是基差变动的底层驱动力。你想想看,当仓库里堆满了货,现货商急着出货,基差能强吗?反过来,库存见底了,买方抢着要货,基差自然就坚挺。

这一章,我就把库存与基差的底层逻辑拆开来讲。包括库存周期怎么识别、数据从哪里拿、怎么建模型,以及最重要的——如何通过库存拐点提前捕捉基差机会

一、库存周期的底层逻辑

库存周期,业内也叫「基钦周期」。一般持续3-4年。我习惯把它分成四个阶段:

阶段 特征 基差表现
主动去库 价格跌,库存降 基差走弱,近月贴水
被动去库 价格涨,库存降 基差走强,近月升水
主动补库 价格涨,库存增 基差高位震荡
被动补库 价格跌,库存增 基差快速走弱

我在2020年做铜的时候,就踩过这个坑。当时库存一直在降,我以为基差会持续走强,结果价格涨到高位后,库存反而开始回升——典型的被动补库阶段。基差从+500直接砸到-200。嗯,那次教训挺深刻的。

核心认知:库存的方向比绝对值更重要。库存下降趋势中,基差易强难弱;库存上升趋势中,基差易弱难强。

二、库存数据怎么拿

数据源这块,我给大家梳理一下。国内商品市场,库存数据主要分三类:

  1. 交易所库存(仓单):上期所、大商所、郑商所官网,每天更新。这是最权威的数据,但只覆盖交割库。
  2. 行业机构数据:比如钢联的钢材库存、隆众的化工库存、SMM的有色库存。频率高,覆盖面广。
  3. 第三方平台:万得、彭博、卓创。数据全,但需要付费。

我个人习惯用Python写个爬虫,每天自动拉取交易所的仓单数据。代码很简单,给大家参考:

import requests
import pandas as pd

# 以上期所铜仓单为例
url = "http://www.shfe.com.cn/data/dailydata/kx/kx20250104.dat"
response = requests.get(url)
data = response.json()

# 提取仓单数据
warehouse_data = []
for item in data['o_cursor']:
    if item['PRODUCTNAME'] == '铜':
        warehouse_data.append({
            'date': item['DATA_DATE'],
            'warehouse': item['WHNAME'],
            'weight': item['WRTINGWT']
        })

df = pd.DataFrame(warehouse_data)
print(df.head())
小技巧:交易所数据一般下午4点后更新。我习惯在收盘后跑一遍脚本,把当天仓单变化量算出来,跟基差做对比。

三、库存-基差模型怎么建

模型这块,我试过很多方法。最简单的就是线性回归,但效果一般。为什么?因为库存和基差的关系不是线性的——库存低到一定程度,基差会加速走强;库存高到一定程度,基差会加速走弱。

我目前在用的模型,核心思路是:

  1. 计算库存分位数:把当前库存放在历史区间里看位置
  2. 计算库存变化率:5日、20日、60日的变化斜率
  3. 构建复合指标:库存分位数 × 变化方向系数

举个例子,螺纹钢的库存-基差模型:

import numpy as np

def inventory_basis_model(inv_series, basis_series):
    # 计算库存分位数
    inv_percentile = (inv_series - inv_series.min()) / (inv_series.max() - inv_series.min())
    
    # 计算库存变化率(20日)
    inv_change = inv_series.pct_change(20)
    
    # 构建信号
    signal = np.where(
        (inv_percentile < 0.2) & (inv_change < -0.05),  # 低库存且加速下降
        1,  # 做多基差
        np.where(
            (inv_percentile > 0.8) & (inv_change > 0.05),  # 高库存且加速上升
            -1,  # 做空基差
            0  # 观望
        )
    )
    
    return signal
注意:模型只是辅助工具。2022年镍的逼仓行情,库存确实很低,但基差从2000拉到20000,这种极端行情模型根本预测不了。所以,模型给出信号后,一定要结合基本面验证

四、库存拐点识别——这才是核心

说实话,库存的绝对值不重要,拐点才是利润来源。我总结了几种识别拐点的方法:

  • 斜率法:库存变化率从正转负,或从负转正,就是拐点信号
  • 动量法:库存变化率的加速度(二阶导)出现反转
  • 背离法:价格创新高但库存不再下降,或者价格创新低但库存不再上升

我曾经在2021年做PTA,就是靠背离法抓到了一波大行情。当时PTA价格从4000涨到5500,但库存从300万吨降到280万吨后就不再降了。我意识到库存拐点到了,果断平掉多单反手做空基差。后面价格跌回4500,基差从+200跌到-150。

下面这张图,是我自己总结的库存-基差分析框架:

库存-基差分析框架 数据层 交易所仓单 行业机构数据 分析层 库存分位数 变化斜率/动量 模型层 库存-基差模型 信号生成 拐点识别(核心) 斜率法 | 动量法 | 背离法 交易决策 基差方向判断 | 仓位管理 | 止损设置 反馈与迭代优化 回测验证 → 参数调整 → 实盘应用

五、实战中的几个要点

最后,分享几个我在实战中总结的经验:

  • 不要只看绝对库存:同样的库存水平,在牛市和熊市里意义完全不同
  • 关注库存的边际变化:库存下降速度加快,比库存本身低更重要
  • 结合季节性:农产品有收获季,黑色有冬储,化工有检修季——这些都会影响库存的正常波动
  • 警惕隐性库存:交易所仓单只是冰山一角,社会库存、在途库存、厂库都要关注
一句话总结:库存是基差的锚,拐点是利润的源。把库存周期吃透了,基差交易就成功了一半。

嗯,这一章的内容就到这里。库存与基差的关系,说白了就是供需博弈在时间维度上的投影。你只要把数据拿准了、模型建对了、拐点认清了,剩下的就是执行的问题。

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