Prediction and Analysis of Soybean Oil Futures Prices Based on the LSTM-Transformer Model
This paper uses a hybrid model of Long Short-Term Memory (LSTM) and Transformer to predict the futures price of soybean oil. Through data processing, model construction, training evaluation, and result analysis, it is found that this model can effectively capture the characteristics of the price sequence. It demonstrates excellent prediction performance on the test set and shows outstanding performance in indicators such as Mean Absolute Error (MAE), Root Mean Square Error (RMSE), Mean Absolute Percentage Error (MAPE), and Relative Root Mean Square Error (RRMSE). Compared with the predictions of the individual LSTM model and Transformer model, the accuracy has been significantly improved. This indicates that this model has certain application potential in the field of futures price prediction.
Soybean Oil Futures
大豆油是我国第一大植物油消费品种,近年来,大豆油的年消费量已经达到1600余万吨,大豆油价格的波动会极大地影响市场的稳定。豆油期货价格的变化在很大程度上反映了未来一段时间豆油现货市场的供需情况,对豆油的价格具有一定的引领作用,在一定程度上可以规避价格波动带来的风险。豆油期货价格的预测显得十分必要。豆油期货自2006年在大连商品交易所上市以来,豆油期货市场规模不断扩大,市场活跃度与参与度持续提升,已经成为农产品期货领域不可或缺的部分。
在金融市场领域,豆油期货市场凭借丰富的投资品种,吸引了大量投资者。其持仓量近年来稳步增长,市场资金关注度也持续上升。豆油期货为相关企业提供了套期保值工具,帮助企业有效规避价格风险,稳定生产经营,维护金融市场的稳定运行。
在作者的所知范围内,国内尚没有学者用LSTM与Transformer模型预测豆油期货价格。但用类似的模型做别的领域预测的很多
通过训练和实践,本文所建的LSTM-Transformer模型对豆油期货价格的预测值与真实的价格相比,样本外预测平均绝对百分比误差(MAPE)为1.9%。能够很好地刻画豆油期货价格的走势与波动。该模型可以为有关部门、豆油生产企业、豆油期货投资者更好把握市场,稳健投资和决策提供一定的理论依据。
LSTM-Transformer模型是一种融合了长短期记忆网络(Long Short-Term Memory, LSTM)和Transformer架构的深度学习模型。
LSTM是一种特殊的循环神经网络(RNN),其优势在于能够有效处理长序列数据中的长期依赖问题。LSTM通过引入门控机制,包括输入门、遗忘门和输出门,以及细胞状态,实现对信息的选择性记忆与遗忘。输入门决定当前输入信息有多少将被添加到细胞状态中;遗忘门控制着细胞状态中哪些信息需要被保留或丢弃;输出门则根据细胞状态和当前输入来确定输出内容。这种机制使得LSTM可以长时间记住重要信息,避免在处理长序列时出现梯度消失或梯度爆炸的问题。
Transformer是一种基于注意力机制的架构,与传统循环神经网络不同,它不依赖于循环结构来处理序列数据,而是通过多头注意力机制并行地关注输入序列的不同部分,从而更全面地捕捉数据中的复杂特征和长距离依赖关系。多头注意力机制将输入数据通过多个线性变换映射到不同的子空间,每个子空间独立计算注意力权重,然后将多个头的注意力结果进行拼接和线性变换,得到最终输出。这使得Transformer能够从不同角度捕捉数据特征,提高模型的表达能力。
LSTM-Transformer模型结合了LSTM和Transformer的优势。在该模型中,数据首先经过LSTM层进行初步处理。LSTM层利用其门控机制,能够有效地提取时间序列中的长期依赖信息,对数据的长期趋势进行建模。然后,LSTM层的输出被传入Transformer层。Transformer层的多头注意力机制进一步挖掘数据中的复杂特征和全局依赖关系,捕捉数据在不同时间步之间的复杂关联。最后,通过全连接层将模型输出维度调整为所需的预测维度,得到最终的预测结果。
本文研究收集了来自权威金融数据平台(akshare)的豆油期货历史交易数据,涵盖了从2006年1月9日到2024年12月9日的日度交易信息,包括开盘价、最高价、最低价、收盘价、成交量等关键指标。这些数据为后续的模型训练和分析提供了丰富的素材,能够较为全面地反映豆油期货市场的价格走势和交易活跃度。
在原始数据中,存在部分缺失值和异常值,这些数据可能会干扰模型的训练和预测效果。对于缺失值,采用了基于时间序列的线性插值法进行填充,即根据缺失值前后的有效数据点,通过线性拟合的方式估算出缺失值。对于异常值,通过设定合理的价格波动范围和成交量阈值进行识别和处理。例如,若某一交易日的价格波动超出了历史平均波动范围的一定倍数,或者成交量与近期平均成交量相比出现异常大幅波动,则将该数据点视为异常值,并根据周边数据的趋势进行修正或删除,以确保数据的质量和可靠性。
将日期列转换为日期时间类型后,提取年份信息,并以年份作为索引。这有助于在后续的数据分析和模型训练中,更清晰地观察价格在不同年份间的变化趋势,以及发现可能存在的季节性和周期性规律,同时也方便模型在时间维度上进行有效学习和预测。
为了使不同规模的数据能够在同一尺度下进行处理,提高模型训练的效率和稳定性,对收盘价进行归一化处理。采用MinMaxScaler将数据映射到[0, 1]区间,其公式为:
其中x为原始数据, 和 分别为数据集中的最小值和最大值, 为归一化后的结果。经过归一化处理后,数据的分布更加均匀,有助于模型更快地收敛和提高预测性能。
LSTM层在模型中起着关键作用,其能够通过独特的门控机制有效处理时间序列中的长期依赖关系。在本研究的模型中,设置LSTM层的输出维度为64,并使其返回序列。LSTM单元内部包含输入门、遗忘门和输出门,其核心计算公式如下:
输入门:
遗忘门:
输出门:
细胞状态更新:
隐藏状态输出:
其中, 为当前时刻的输入数据, 为上一时刻的隐藏状态,W为权重矩阵,b为偏置向量, 为sigmoid函数, 表示元素级乘法。通过这些门控机制,LSTM能够有选择地保留或遗忘历史信息,从而更好地捕捉时间序列的长期趋势。
Transformer层引入了多头注意力机制(MultiHeadAttention),能够并行地关注输入序列的不同部分,从而更全面地捕捉数据中的复杂特征和依赖关系。在本模型中,设置头数为4,键维度为64。多头注意力机制的计算过程如下:
首先,通过线性变换将输入X分别映射到查询矩阵Q、键矩阵K和值矩阵V,即 , , ,其中 、 、 为相应的权重矩阵。
然后,计算注意力权重:
其中 为键维度。最后,将多个头的注意力结果进行拼接并通过线性变换得到最终输出:
,
其中 , 为输出权重矩阵。
在多头注意力机制之后,还经过了Dropout层进行随机失活操作,防止过拟合,其计算公式为
,
其中x为输入,y为输出,p为随机生成的概率值。接着通过层归一化(LayerNormalization)将输入归一化到均值为 0、方差为1的分布,公式为
其中 为均值, 为标准差, 为防止除零的小常数。随后,通过全连接(Dense)和ReLU激活函数进一步提取特征,ReLU函数公式为 。同样,经过Dropout和层归一化处理,增强模型的泛化能力。
将LSTM层和Transformer层组合构建完整的LSTM-Transformer模型。输入数据首先经过LSTM层进行初步处理,提取时间序列中的长期依赖信息,然后将LSTM层的输出传入Transformer层,利用多头注意力机制进一步挖掘数据中的复杂特征和全局依赖关系。最后,通过一个全连接层将模型输出维度调整为1,得到最终的预测价格。在模型编译过程中,选择Adam优化器,其通过自适应调整学习率来优化模型参数,计算公式为:
其中, 和 分别是一阶矩和二阶矩的估计值, 和 是衰减率, 是梯度, 是学习率, 是防止除零的小常数。损失函数采用均方误差(mean_squared_error),其公式为
其中 为真实值, 为预测值,n为样本数量。通过最小化均方误差,使模型预测值尽可能接近真实值。
将预处理后的数据按照8:2的比例划分为训练集(2006年1月9日~2021年2月26日)和测试集(2021年2月27日~2024年12月9日)。训练集用于模型参数的学习和调整,模型在训练集上不断迭代优化,以拟合数据中的规律和特征。测试集则用于评估模型在未见过数据上的性能,确保模型具有良好的泛化能力,能够准确预测未知数据的价格走势。
在模型训练过程中,设置epochs (纪元)为10,即对整个训练集进行10次完整的迭代训练。在每次迭代中,batch_size (每批量)为32,意味着每次从训练集中随机抽取32个样本进行一次参数更新。在训练过程中,密切监测训练集和测试集的损失值以及评估指标的变化情况,随着epoch的增加,训练集损失和验证集损失均呈现逐渐下降的趋势,表明模型在不断学习数据中的模式并优化参数。
在模拟训练中,本文对不同的测试集进行了测试,实验表明该模型具有良好的鲁棒性,因为篇幅关系,本文只列出一个测试集的预测结果。
采用均方根误差(RMSE),平均绝对误差(MAE),平均绝对百分比误差(MAPE)以及相对均方根误差(RRMSE)作为评估模型预测性能的指标。
RMSE能反映预测值与真实值之间的偏差程度,对较大误差更为敏感,其计算公式为
MAE则衡量预测值与真实值的平均绝对偏差,计算公式为
MAPE是衡量预测值与实际值之间绝对百分比误差的平均值,其计算公式为
RRMSE是用于衡量观测值与预测值之间差异的统计量,其计算公式为
通过这四个指标的综合评估,可以全面了解模型在不同误差尺度上的表现,从而更准确地判断模型的预测精度和稳定性。计算得到训练集的RMSE为155.19,MAE为116.02,MAPE为1.51%,RRMSE为0.022;测试集的RMSE为200.35,MAE为157.16,MAPE为1.90%,RRMSE为0.026。
对预测结果的分析:
模型对趋势的捕捉能力:从图中可以看出,训练集预测价格和实际价格在大部分时间序列上走势较为贴近,说明模型在训练数据上能够较好地学习价格的波动趋势。测试集预测价格也在一定程度上跟随了实际价格的主要波动,如几个明显的价格峰值和谷值都有体现,表明模型具备一定的泛化能力来捕捉价格波动趋势。
影响较大的特征:LSTM (长短期记忆网络)擅长处理时间序列数据,能够捕捉价格随时间变化的长期依赖关系,比如价格在较长时间段内的上升或下降趋势。而Transformer模型中的自注意力机制,可以让模型在处理序列数据时,关注不同时间点价格之间的关联程度,对价格波动中的关键转折点等特征更为敏感。两者结合,使得模型能够综合考虑价格的历史趋势和不同时间点之间的相互关系,这些时间序列特征和序列内部的关联特征对预测结果影响较大。
预测的偏差:在一些局部区域,训练集预测价格和实际价格之间存在一定偏差,测试集预测价格与实际价格的偏差更为明显,这可能是由于市场中的一些突发因素、异常波动或模型未能完全学习到的复杂模式导致的。
经过训练的模型对训练集和测试集进行预测,并将预测结果进行反归一化处理,使其恢复到原始价格尺度。如
LSTM单模型:
Model |
MAE |
RMSE |
MAPE |
RRMSE |
LSTM-Training |
110.82 |
160.54 |
1.87% |
0.031 |
LSTM-Testing |
165.42 |
221.53 |
2.34% |
0.026 |
Transformer-Training |
323.73 |
365.45 |
4.55% |
0.051 |
Transformer-Testing |
293.4 |
360.58 |
3.26% |
0.041 |
LSTM-Transformer-Training |
116.02 |
155.19 |
1.51% |
0.022 |
LSTM-Transformer-Testing |
157.16 |
200.35 |
1.90% |
0.026 |
Transformer单模型
LSTM-Transformer模型
本研究成功构建并应用LSTM-Transformer模型对豆油期货价格进行预测。通过严谨的数据处理、合理的模型架构设计以及系统的训练与评估,模型在预测精度上取得了较好的效果,相比单一模型具有明显优势(见
上海工程技术大学大学生创新项目:豆油价格预测(项目编号:cx2421003)。