第13章:基差与库存的统计关系:相关性分析与回归分析

做基差交易这么多年,我越来越觉得一个道理——库存是基差的锚。你想想看,库存高了,现货就松,基差自然往下走;库存低了,现货紧俏,基差就往上顶。这个逻辑听着简单,但真要量化出来,就得靠统计工具了。

这一章,我们就来聊聊怎么用相关性和回归分析,把基差和库存的关系「算」出来。说白了,就是给直觉找个数学依据。

13.1 相关性分析:先看看它们有没有关系

做任何量化分析之前,我习惯先画个散点图。把库存放在X轴,基差放在Y轴,一眼就能看出趋势。

举个例子,我去年做螺纹钢的基差交易,把过去三年的周度数据拉出来,库存和基差的相关系数算出来是-0.72。嗯,负相关,而且挺强的。这意味着库存每增加一个标准差,基差平均会下降0.72个标准差。

计算相关系数,Python里一行代码就搞定:

import pandas as pd
import numpy as np

# 假设df有'库存'和'基差'两列
corr = df['库存'].corr(df['基差'])
print(f"皮尔逊相关系数: {corr:.3f}")

这里要注意,皮尔逊相关系数假设数据是线性关系。我遇到过几次,相关系数算出来只有-0.2,但画图一看,其实是U型关系。所以永远先画图,再算数

关键点:

  • 相关系数范围[-1, 1],负值表示反向关系
  • 绝对值大于0.5算强相关,0.3-0.5算中等
  • 别只看数值,要结合业务逻辑判断

13.2 回归分析:把关系量化成公式

相关性告诉你「有没有关系」,回归分析告诉你「什么关系」。我个人习惯用一元线性回归做第一步探索:

import statsmodels.api as sm

X = df['库存']
y = df['基差']
X = sm.add_constant(X)  # 加截距项

model = sm.OLS(y, X).fit()
print(model.summary())

输出结果里,我最关注三个东西:

  • R-squared:模型解释了多少基差的变动。比如R²=0.45,说明库存能解释45%的基差波动。
  • 系数p值:小于0.05才算显著。我见过有人拿不显著的系数硬做交易,亏得很惨。
  • 残差图:如果残差有明显的模式,说明模型漏掉了重要变量。

我曾经在铜的基差分析中,发现R²只有0.12。当时我就纳闷,库存和基差的关系怎么这么弱?后来一查,原来是保税区库存没算进去。加上之后,R²直接跳到0.58。所以数据口径比模型本身更重要

13.3 非线性关系:有时候直线不够用

基差和库存的关系,不总是线性的。你想想看,库存很低的时候,再降一点,基差可能暴涨;库存很高的时候,再增一点,基差反而跌不动了。这就是典型的边际效应递减

遇到这种情况,我一般会试试对数变换或者加平方项:

df['库存_sq'] = df['库存'] ** 2
X = df[['库存', '库存_sq']]
X = sm.add_constant(X)
model = sm.OLS(df['基差'], X).fit()

如果平方项的系数显著,那就说明关系是弯曲的。我在豆粕上试过,加了平方项之后,R²从0.35提升到了0.51。效果很明显。

实战技巧:

做回归之前,先把库存数据做标准化。不然库存数值动辄几百万吨,基差才几十块钱,系数会小到让你怀疑人生。标准化之后,系数就能直接比较了。

13.4 滞后效应:库存变化不会立刻反映在基差上

这一点很多人会忽略。库存数据公布的时候,市场可能已经提前反应了。或者反过来,库存变了,基差要过一两周才跟上。

我习惯做交叉相关分析,看看滞后几期的相关性最强:

from statsmodels.tsa.stattools import ccf

# 计算基差与滞后库存的交叉相关
ccf_values = ccf(df['基差'], df['库存'], adjusted=False)
# 看前10期
for lag in range(1, 11):
    print(f"滞后{lag}期: {ccf_values[lag]:.3f}")

我在甲醇上做过,发现滞后2周的相关系数最高,达到-0.68,比同期还高。这说明市场消化库存信息需要时间。做交易的时候,这个滞后关系可以用来提前布局。

避坑指南:

我曾经犯过一个错——直接用原始数据做回归,结果发现残差有很强的自相关。后来才意识到,基差和库存都是非平稳序列。正确的做法是先做差分,或者用协整检验。不然回归结果全是假的。

13.5 知识体系图:基差与库存的统计关系

下面这张图,把这一章的核心逻辑串起来了。从数据准备到模型选择,再到验证和应用,每一步都有坑,也有解法。

基差与库存统计关系分析流程 数据准备 库存、基差、时间对齐 探索性分析 散点图、相关系数 模型选择 线性/非线性/滞后 线性回归 OLS、R²、p值 非线性回归 对数、平方项、分段 滞后分析 交叉相关、滞后回归 模型验证 残差检验、稳定性检验 交易应用 基差预测、套利信号 注意:每一步都要结合业务逻辑,不要盲目相信统计结果

13.6 实战中的几个坑

最后,分享几个我踩过的坑,希望能帮你省点学费:

  1. 数据频率不匹配:库存数据通常是周度或月度,基差是日度。直接拿日度基差对周度库存做回归,会放大噪声。我习惯把基差也取周均值。
  2. 结构性断点:2018年贸易战之后,很多品种的基差-库存关系都变了。如果不做断点检验,模型会失效。我一般用Chow检验来判断。
  3. 多重共线性:如果你同时把库存、产量、进口量放进去,它们之间高度相关,回归系数会变得很不稳定。用VIF(方差膨胀因子)检查一下,超过10就要处理。
  4. 过度拟合:加太多变量,R²可能很高,但一到实盘就崩。我习惯用交叉验证,或者留一部分数据做样本外测试。

核心总结:

基差与库存的统计关系,不是简单的「库存高基差低」。它受数据口径、滞后效应、非线性关系等多种因素影响。做回归分析时,先画图、再建模、后验证,每一步都要问自己:这个结果符合业务逻辑吗?

嗯,这一章的内容就到这儿。统计工具只是手段,真正赚钱的,是对市场的理解和对风险的敬畏。


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