刘璐,娄磊,刘先俊,施三支
(长春理工大学 理学院,长春 130022)
黄金期货市场在金融市场有着十分重要的位置,因此其预测问题也被视为重点问题。在预测方法上可分成传统预测模型和非线性预测模型。传统预测模型包含ARIMA模型(移动平均自回归模型)、GARCH模型(自回归条件异方差模型)、指数平滑模型等,并在黄金价格预测研究上取得了很大进步。比如在2014年,Sharma A M和Baby S[1]运用ARIMA模型对印度的黄金价格进行预测分析。同时,诸多学者也利用ARIMA模型对纽约商品交易所、伦敦国际金融期货交易所、上海期货交易所等具有明显交易特点的黄金或黄金期货交易数据进行建模预测[2-3]。在此基础之上,一部分研究者运用了ARIMA-GARCH模型,对黄金价格进行了研究与分析[4-7]。比如潘贵豪等人[6]选用 ARMA-GARCH模型对黄金价格的动态演化过程进行了实证阐述,黄金价格数据的生成的动态变化过程可以被该模型精确的刻画表明,平均误差较小。传统预测模型的各项研究均证明了其在预测黄金价格的走势或动态特征方面是有效的,但是,鉴于黄金期货价格时间序列具有非线性及高噪声的数据特征,对其精确预测依旧十分困难,同时由于时间的动态变化,使得自变量和因变量二者之间的关系也会随之发生变动,因此传统时间序列模型很难精准得对黄金期货市场进行预测。
近年来,随着计算机硬件水平提升得越来越快,对神经网络的研究也逐渐深入,由此非线性模型逐渐取代了时间序列模型在黄金期货预测方面的应用,非线性预测模型包括基于ANN模型(人工神经网络模型)及其演化的各种模型,如BPNN、SVR模型(支持向量回归模型)、DNN模型(深层神经网络模型)及其演化的各种模型,如CNN、RNN等。2010年曾濂等人[7]提出了一种基于BP神经网络的改进模型,研究首先使用定性分析找到伦敦黄金期货价格变动的影响因素,然后利用投影寻踪方法筛选出非线性因素中影响力最大的因素输入神经网络,并改进算法进行网络学习,最后训练得出所需的BPNN[8]。基于浅层神经网络对黄金期货价格及趋势进行预测的研究较之深层神经网络的要多,包括ANN 模型[9]、基于 GA-BP神经网络[10-12]、RBF神经网络[13]、广 义 回归 神经 网 络[14-15]和 SVR 模型[16-17]等等。
近年来,LSTM模型(长短期记忆网络模型)开始逐步应用在金融序列预测问题上,众多研究者开始利用LSTM模型对股票市场进行建模预测,2015年,Chen等人[17]将其运用于我国股票市场的股价预测,相较于其他预测模型,LSTM的预测效果得到了大幅提升。多个应用LSTM模型的金融序列预测,都获得了更佳的预测效果[18-20],但目前应用在黄金期货市场预测上的研究成果相对较少。
综上所述,为了寻找一种更合适的黄金期货价格预测方法,建立了多层及双向LSTM预测模型。以COMEX黄金期货价格序列为研究对象,先将原始黄金期货价格序列进行归一化处理,然后进行不同参数下模型的比较,最后,选择出最适应归一化数值下的参数模型,输出预测的结果。结果表明,双向LSTM模型预测精度得到了明显的进步,也验证了模型的有效性。
传统的黄金期货价格预测模型不能充分描述黄金期货价格很强的非线性、非平稳性和高噪声的特点,因此在预测问题上存在许多困难,而神经网络能够发现并刻画数据自身复杂的内部结构特征,也能自适应得学习和构建数据的非线性的复杂关系,不会对输入变量施加限制,也具备更好的迁移学习(transfer learning)性质,因此非常适合处理如黄金期货价格这样的金融数据。其中LSTM模型更是经由丢弃和保留的机制有效解决了梯度反传进程中产生的梯度消失(vanishing gradient problem)与梯度爆炸(explod⁃ing gradient problem)问题。由于LSTM能够对信息进行全局化处理,因此其更适合于处理和预测时间序列。因此,本文建立了一个基于LSTM的双向网络预测模型,该模型仅基于相关黄金期货价格的时间序列数据,不考虑其他影响因素,因此有效地消除了数据输入变量和模型参数的不确定性。
LSTM网络模型最早由Hochreiter和Schmidhu⁃ber(1997)[20]提出。LSTM 每一个神经元的结构如图1所示,其内部包括一个细胞状态(Cell)和三个门控(Gates)设置,细胞状态(Cell)记录神经元状态,综合隐藏和时间步的事件,通常是经由三种门控机制实现这类记忆方式,即输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Out⁃put Gate)。输入门和输出门用来接收、输出和修正参数,遗忘门用来决定上一单元状态信息的保留程度。
图1 LSTM单个神经元结构图
图1中ht、Xt、tanh和σ分别表示t时刻细胞的输出状态值、t时刻细胞的输入状态值、双曲正切函数前馈网络层和sigmoid函数前馈网络层,⊗表示点乘,⊕表示向量拼接。经由拼接向量乘上权重矩阵之后,再经由激活函数转换来作为一种门控状态。下面介绍各个门控的计算原理及过程。
首先计算t时刻下遗忘门(Forget Gate)的激活值ft,公式如下:
其次计算t时刻下输入门(Input Gate)it的值和输入细胞的候选状态(Cell)的值,公式如下:
由以上计算可以得到t时刻下的细胞状态(Cell)的更新值Ct,公式如下:
在计算得到细胞状态(Cell)更新值后,最后就可以计算输出门(Output Gate)的值,其计算公式如下:
通过以上的计算,LSTM就可以确定最终的输出值。
在Windows10操作系统下搭建Python的keras框架。keras包含两种模型,一种是Sequential模型,另一种是Model模型,本实验选用Model模型来搭建多层的LSTM网络模型以及双向LSTM模型分别对数据进行分析预测。
多层LSTM模型是将单层细胞状态(Cell)进行堆叠,把每层神经元的个数都藏到Cell中间,其优点是可以更抽象的表达模型特征,并且按照数据特征,有效改善预测效果,但并非绝对的。有时针对简单的数据,多层LSTM的预测效果反而会因为过拟合而降低准确率。多层LSTM不是定义一个基础细胞状态之后屡次调用,而是每次都界定一个新的基础细胞状态。也就是说,前一层的LSTM的输出就是后一层的输入,即输入数据整体上是一个时间序列,而对每个内层特征数据来说,输入数据也是一个时间序列及二维数组,因此也可以称为数组的数组。举一个简单的例子:一个双层LSTM模型,第一层的隐藏神经元个数是128,第二层的隐藏神经元个数为64,在t时刻的输入向量是一维的。那么经过第一层的计算以及Cell的操作,第一层的输出就会变成128维。叠加第二层LSTM后,此时第二层的t时刻的输入即为128维,同样的道理,经过运算其输出为64维。最后经过Cell的操作,最终的输出维度变为一维。
双向LSTM模型是隐藏层要保留两个值,C参与正向计算,C'参与反向计算。对于每个时刻t,输入向量会同时赋值于两个方向的LSTM并进行计算,这两个单向LSTM同时影响着最后的输出。在正向计算时,前馈层的ht与ht-1有关;而反向计算时,反馈层的ht则与ht+1有关。
多层LSTM网络模型以及双向单层LSTM模型的结构如图2、图3所示。
图2 三层LSTM神经网络结构
图3 双向单层LSTM神经网络结构
所有数据均来源于相关财经网站,由于2008年全球性金融危机对金融市场产生了非常大的影响,使得金融市场发生了很大的震荡,因此2008年以前的数据研究意义较差,本文选取的数据范围为2009年1月1日到2018年12月31日,共10年2 698个数据。
数据选取的是纽约商品交易所COMEX分部的黄金期货数据,由于世界黄金期货市场中,纽约商品交易所(COMEX)的黄金期货指数发展较为成熟,同时美国财政部以及国际货币基金组织(IMF)也在此处进行相关买卖交易,是以COMEX的交易量占全球主导位置,也经常主导全球金价的走向,所以本文选择COMEX黄金期货价格数据作为研究对象。
为避免LSTM对输入数据的限制,同时也有利于提高模型性能,加快训练网络的收敛性,在对序列进行量化分析前,首先将数据进行归一化处理。根据选取数据的特点和LSTM的要求,本文采用线性函数归一化方法对数据进行预处理。公式如下:
其中,xi代表第i个变量;minxi、maxxi分别代表xi的最小值与最大值。
对于黄金期货价格这类数据规模及范围不是非常大的情况,实验模型的预测性能评价指标采用均方根误差(RMSE)、平均绝对误差(MAE)、平均误差百分比(MAPE)、拟合度(R2)对实验结果进行对比。其中RMSE、MAE、MAPE、R2的计算公式如下:
其中yi、ŷi分别代表实际值与预测值,N代表预测窗宽.
模型初步建立后,为了使模型更加适合本数据,首先对单层模型进行了模型内部的参数优化。为了确定最合适的数据量,本文将数据分成了6组(分别是近5年、6年、7年、8年、9年和10年)在数据按上述方式确定数据特征及标签后,在测试集均为2019年上半年的数据的情况下(2019.01.01-2019.06.30),当训练集年限为9年(即2 068个数据)时,模型在测试集上的预测效果最佳。因此本文将2010年至2018年的数据作为TrainSet(训练集),2019年1-6月的数据作为TestSet(测试集),负责训练模型的召回率和正确率,最后训练集据按9∶1的比例划分,最后10%的数据作为ValidationSet(验证集),负责调整模型相应的超参数以及模型的过拟合现象。实验用数据集划分如表1所示。
表1 数据集实验数据划分
对实验参数进行选择,在不同神经元个数的情况下在训练集和测试集上进行预测,当单向单层LSTM模型的神经元个数为128时,模型在测试集上的预测效果最佳;在不同迭代次数的情况下对在训练集和测试集上进行预测,当次数为500时,模型在测试集上的预测效果最佳;激活函数则同时选取了tanh及relu函数以缓解梯度消失问题;在不同训练步长的情况下,训练步长为3时,模型在测试集上的预测效果最佳;神经网络优化算法使用Adam来更新参数,并应用dropout机制来规避实验的过拟合.表2是实验所用参数的具体说明。
表2 实验参数
本文中采用ARIMA模型、RNN模型、SVR模型、双层LSTM模型、双向单层LSTM模型来进行对比实验,通过比较测试集上MSE、RMSE、MAE、R2的值来进行优劣评判。同时实验还在各个模型中嵌入了回调参数(totaltime),以计算不同模型下数据预测运行的时间。实验对比结果如图4所示,并将对比结果进行了整理,如表3所示。
图4 各模型预测结果
表3 对比结果
对比表3的实验结果可以看出,在LSTM模型中,预测效果并未随着模型层数增加而变好,反而出现了过拟合现象。这说明多层LSTM模型并不适用于本文所选用的数据信息。但本文给出的双向LSTM模型相比于ARIMA模型、RNN模型、SVR模型、双层LSTM模型,双向LSTM模型评价指标 RMSE、MAE、MAPE、R2超过了所有对比的模型,达到了较好的效果,预测模型均得到了良好的提升,同时在确保预测准确性的前提下,双向LSTM模型和SVR模型的运行时间较短。综上,说明本文给出的双向LSTM模型对于黄金期货价格预测效果的提升是有效的。
对于黄金期货市场来说,只要知道近期黄金期货的走势以及价格,就对投资者的选择带来有价值的参考。本文将深度学习方法应用在黄金期货价格预测方面,可以看出LSTM神经网络既承继了RNN在处理序列问题上的优点,又进一步提升了时间序列数据的高精度的预测结果。通过对黄金期货价格数据进行归一化等预处理操作后,对LSTM神经网络的各项参数作出调整,并引入了dropout机制,对实验结果进行比较,探索出适宜的双向网络模型,实现对COMEX黄金期货价格序列的分析预测,通过观察RNN模型、SVR模型、双层LSTM模型和双向LSTM神经网络的表现,可以发现双向LSTM模型在黄金期货价格预测方面有较好的使用前景,下一步可研究如何在LSTM网络引入其他模型并构成混合模型,进一步提高其预测精度。