第十六章:基差交易中的量化模型
各位,聊到量化模型,很多人第一反应就是“黑箱”、“高大上”。其实没那么玄乎。说白了,基差预测模型就是帮我们回答一个问题:现在的基差,到底是贵了还是便宜了?
我个人习惯把这类模型分成两派:一派是传统的时间序列模型,另一派是这两年火起来的机器学习模型。今天咱们就掰开揉碎聊聊。
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("没有协整关系,别瞎搞")
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("最重要的特征:库存变化率")
max_depth设小一点(3-5层),防止过拟合。基差数据本身信噪比不高,太深的树容易学到噪声。
16.2.3 LSTM在基差预测中的尝试
说到深度学习,我也踩过坑。2021年我试过用LSTM预测铁矿石基差,结果惨不忍睹。
为什么?因为基差数据太短了。LSTM需要大量历史数据才能学到规律,但一个合约的基差数据也就几个月。你想想看,用3个月的数据去训练一个LSTM,这不是开玩笑吗?
不过,如果你做的是跨品种的基差预测,比如用多个品种的历史数据一起训练,LSTM还是能发挥作用的。我后来在有色金属上试过,效果比树模型好一些。
16.3 模型评估与实战部署
模型做出来,不能直接上实盘。我吃过这个亏,2017年一个回测很好的模型,实盘第一周就亏了5%。
16.3.1 回测中的陷阱
回测时要注意几个问题:
- 未来函数:别用未来数据做特征,比如用当天的收盘价预测当天的基差
- 过拟合:回测收益太高(年化超过50%)的模型,基本都有问题
- 交易成本:基差交易的滑点比单边交易大,我一般按2个最小变动价位算
16.3.2 模型更新频率
模型不是一劳永逸的。我建议:
- 基本面模型:每周更新一次,因为库存、开工率等数据是周度发布的
- 技术面模型:每天更新,但参数不要天天调
- 机器学习模型:每月重新训练一次,用最新的3个月数据
嗯,这里有个细节:模型更新时,要保留旧模型做对比。我习惯同时跑两个模型,新模型跑模拟盘1个月,表现稳定了再切换。
16.4 知识体系总览
说了这么多,咱们用一张图来总结一下基差交易中量化模型的核心逻辑:
这张图把整个流程串起来了。从数据到特征,再到模型,最后到输出和风控。每一步都环环相扣,缺一不可。
- 基差预测模型的核心是均值回归假设,但要注意回归速度的变化
- 机器学习模型里,特征工程比模型选择更重要
- 实盘部署时,模型更新频率和回测陷阱是最大的坑
- 没有万能模型,不同品种、不同市场环境要用不同模型
好了,关于基差交易的量化模型,今天就聊到这儿。记住一句话:模型是工具,不是圣杯。再好的模型,也要结合你对市场的理解来用。我见过太多人迷信模型,结果亏得一塌糊涂。量化交易,说到底还是交易,风控永远是第一位的。
公众号:蓝海资料掘金营,微信deep3321