关于作者
嗨,你好。我是奇文,在大宗商品和贸易圈从业20年,现任职于一家为大宗商品企业提供咨询和IT服务的公司^_^,让我们一起聊聊大宗商品行业那些事儿。
免责声明:本内容依据公开内容写作,仅代表作者个人观点,与公司或其他机构无关。本内容不构成投资建议或暗示,请审慎判断并自行承担与此相关的投资风险,不对因使用本次内容所导致的任何损失承担任何责任。
我觉得采用历史价格预测下一日的价格的做法,意义有限。改进方向是采用宏观面+基本面等特征值数据,用复合模型加以提升。
简单来说,就是采用复合的神经网络,让机器真正模拟人的思考过程,基于宏观面、基本面和盘面等数据,以及当天的期货市场收盘价格,来预测下一天的期货收盘价格。
经过三天的倒腾,我把这个模型做出来,效果好到爆炸。
01
我在万得选了16个指标,包括宏观面+基本面+盘面数据,作为预测依据,包括:
中国:平均价:铝:上海物贸
佛山:平均价(批售含票):铝(A00,国产)
华东:市场报价:铝锭(AL99.7):中铝
升贴水:LME铝(0-3)
期货收盘价(场内盘):LME3个月铝
期货成交量(活跃合约):铝
期货持仓量(活跃合约):铝
LME铝:库存:合计:全球
山西:平均价:氧化铝(一级)
中国:iCPI:交通和通信:日环比
中国:市场价:铝锭(A00)
中国高频经济活动指数
中国:中间价:美元兑人民币
中国:互联网搜索指数:失业
中国:价格:铝合金:废铝(ADC12,国产)
期货结算价(连续):WTI原油:
这些指标只是跟铝期货价格变动因素,但是我也只是随手选了,没有做主成分分析之类的。
然后在万得选了期货主力收盘价作为预测目标。因为万得没有期货结算价。
02
1、数据组成
跟上次一样,22-23年的数据作为训练数据,24年的数据作为测试数据。
2、模型设计
用GRU(你也可以理解为LSTM,具体的解释见上一篇内容),处理16个指标数据;用LSTM,处理目标价格;处理完了以后,让模型预测下一个交易日的收盘价格。
3、模型结构
这个说起来比较复杂一点了。这个模型结构我也是参考了论文。GRU用来处理输入的特征值,而LSTM用来处理以价格,两者结合之后,在DENSE层进行预测价格输出。
用16个基本面因素作为特征值,采用GRU方式处理,GRU的神经网络模型总计五层,GRU三层、正则化层两层、全连接层一层,单步多维序列回归输入数据为[16,5]的矩阵形式。
训练的价格数据,采用LSTM方式处理,要求LSTM神经网络隐含层的个数都设置为2层。神经元的个数Units第一层设置为95,第二层设置为100。
神经网络各隐含层以及输出层,选取sigmoid作为模型的激活函数。
DENSE层进行价格预测的时候,batch_size单批次输入数据量大小选择为64。
03
1、 训练数据结果
GRU+LSTM模型训练结果
2、 测试数据结果
GRU+LSTM模型测试结果
3、 跟单层LSTM比较
大家可以跟上一篇的内容比较一下。
训练数据的R方,从基于价格的单层LSTM的0.95,提升到了0.99。
测试数据的R方,从基于价格的单层LSTM的0.93不到,提升到了将近0.99,基本训练数据和测试数据的结果没有衰退。
单层LSTM训练数据
单层LSTM测试数据
更为重要的是时间滞后效应基本消失了。
大家可以比较一下混合模型对于铝收盘价的预测,以及单层LSTM模型对于铝结算价的预测,很容易就可以发现这一点。由于收盘价肯定要比结算价来的波动率大,因此如果改成混合模型对结算价的预测,我相信结果会更好一些。
单层LSTM预测2024年铝期货收盘价
所以,总体来说,采用宏观面+基本面数据的16个数据,用GRU+LSTM混合模型预测,效果很不错。下次可以对其他产品进行一下测试。
好了,以上就是今天的内容。欢迎大家交流,也欢迎大家用KIMI或者问答机器人进行查询。
奇文闲谈大宗商品