第十六章:基差交易中的量化模型

各位,聊到量化模型,很多人第一反应就是“黑箱”、“高大上”。其实没那么玄乎。说白了,基差预测模型就是帮我们回答一个问题:现在的基差,到底是贵了还是便宜了?

我个人习惯把这类模型分成两派:一派是传统的时间序列模型,另一派是这两年火起来的机器学习模型。今天咱们就掰开揉碎聊聊。

16.1 基差预测模型:从统计套利说起

基差预测,本质上是个时间序列预测问题。我最早做这个的时候,用的就是最简单的均值回归模型

为什么?因为基差这东西,天然就有回归特性。你想想看,现货和期货最终要收敛,基差不可能无限扩大。这就是我们建模的基础。

16.1.1 均值回归模型

最经典的模型长这样:

# 计算历史基差的均值和标准差
basis_mean = basis.rolling(window=60).mean()
basis_std = basis.rolling(window=60).std()

# 计算Z-score
z_score = (basis - basis_mean) / basis_std

# 交易信号:Z-score超过2倍标准差就开仓
if z_score > 2:
    print("基差过大,做空基差")
elif z_score < -2:
    print("基差过小,做多基差")

嗯,这里要注意:窗口期选多少很关键。我试过20天、60天、120天,不同品种差异很大。螺纹钢用20天效果不错,但铜就不行,波动周期更长。

16.1.2 协整模型

比均值回归更进阶一点的是协整模型。我记得2018年做螺纹钢和热卷的套利时,就用过这个。

核心思路是:找到两个品种的长期均衡关系。比如螺纹钢和热卷,理论上价格应该保持一个稳定的价差。一旦偏离,就会回归。

from statsmodels.tsa.stattools import coint

# 检验螺纹钢和热卷的协整关系
score, pvalue, _ = coint(rebar_price, hrc_price)
if pvalue < 0.05:
    print("存在协整关系,可以建模")
else:
    print("没有协整关系,别瞎搞")
避坑指南:我曾经吃过一次大亏。2019年做豆粕和菜粕的价差,协整检验通过了,但实际交易时价差就是不回归。后来发现,是因为饲料配方变了,两个品种的替代关系发生了变化。所以协整关系不是一成不变的,要定期重新检验。

16.2 机器学习在基差交易中的应用

说到机器学习,很多人觉得是“屠龙刀”。其实在基差交易里,它更像一把手术刀——用对了地方效果很好,但用错了反而会伤到自己。

16.2.1 特征工程:比模型更重要

我见过太多人一上来就调模型参数,结果效果很差。其实在基差预测里,特征工程才是王道

我个人常用的特征包括:

  • 基本面特征:库存变化率、开工率、利润水平
  • 技术面特征:基差的动量、波动率、期限结构斜率
  • 宏观特征:利率、汇率、PMI指数
  • 季节性特征:月份、节气、交割月临近天数

举个例子,做甲醇基差预测时,我发现港口库存变化率这个特征特别重要。库存一涨,基差大概率走弱。这个规律比任何模型都管用。

16.2.2 随机森林与XGBoost

在模型选择上,我比较推荐树模型。为什么?因为基差数据往往有非线性关系,树模型天然能处理这个。

import xgboost as xgb

# 准备特征和标签
X = features[['库存变化率', '开工率', '基差动量', '波动率']]
y = features['未来5日基差变化']

# 训练模型
model = xgb.XGBRegressor(
    n_estimators=200,
    max_depth=5,
    learning_rate=0.05
)
model.fit(X, y)

# 特征重要性排序
importance = model.feature_importances_
print("最重要的特征:库存变化率")
小技巧:用XGBoost时,我习惯把max_depth设小一点(3-5层),防止过拟合。基差数据本身信噪比不高,太深的树容易学到噪声。

16.2.3 LSTM在基差预测中的尝试

说到深度学习,我也踩过坑。2021年我试过用LSTM预测铁矿石基差,结果惨不忍睹。

为什么?因为基差数据太短了。LSTM需要大量历史数据才能学到规律,但一个合约的基差数据也就几个月。你想想看,用3个月的数据去训练一个LSTM,这不是开玩笑吗?

不过,如果你做的是跨品种的基差预测,比如用多个品种的历史数据一起训练,LSTM还是能发挥作用的。我后来在有色金属上试过,效果比树模型好一些。

16.3 模型评估与实战部署

模型做出来,不能直接上实盘。我吃过这个亏,2017年一个回测很好的模型,实盘第一周就亏了5%。

16.3.1 回测中的陷阱

回测时要注意几个问题:

  • 未来函数:别用未来数据做特征,比如用当天的收盘价预测当天的基差
  • 过拟合:回测收益太高(年化超过50%)的模型,基本都有问题
  • 交易成本:基差交易的滑点比单边交易大,我一般按2个最小变动价位算
我的经验:回测收益打八折,最大回撤乘1.5倍,这才是实盘的预期表现。

16.3.2 模型更新频率

模型不是一劳永逸的。我建议:

  • 基本面模型:每周更新一次,因为库存、开工率等数据是周度发布的
  • 技术面模型:每天更新,但参数不要天天调
  • 机器学习模型:每月重新训练一次,用最新的3个月数据

嗯,这里有个细节:模型更新时,要保留旧模型做对比。我习惯同时跑两个模型,新模型跑模拟盘1个月,表现稳定了再切换。

16.4 知识体系总览

说了这么多,咱们用一张图来总结一下基差交易中量化模型的核心逻辑:

基差交易量化模型体系 数据层 行情数据 | 基本面数据 | 宏观数据 | 季节性数据 (库存、开工率、利润、利率、PMI等) 特征工程 基差动量 | 波动率 | 期限结构斜率 | 库存变化率 (特征选择、标准化、滞后处理) 模型层 均值回归 | 协整模型 | 随机森林 | XGBoost | LSTM (传统统计模型 + 机器学习模型) 输出与风控 基差预测值 | 交易信号 | 仓位管理 | 止损止盈

这张图把整个流程串起来了。从数据到特征,再到模型,最后到输出和风控。每一步都环环相扣,缺一不可。

核心要点:
  • 基差预测模型的核心是均值回归假设,但要注意回归速度的变化
  • 机器学习模型里,特征工程比模型选择更重要
  • 实盘部署时,模型更新频率和回测陷阱是最大的坑
  • 没有万能模型,不同品种、不同市场环境要用不同模型

好了,关于基差交易的量化模型,今天就聊到这儿。记住一句话:模型是工具,不是圣杯。再好的模型,也要结合你对市场的理解来用。我见过太多人迷信模型,结果亏得一塌糊涂。量化交易,说到底还是交易,风控永远是第一位的。


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