徐渺,王雷春,史含笑,陈敏,刘丹妮
(湖北大学计算机与信息工程学院,湖北 武汉 430062)
股票市场是市场经济的关键组成部分,对国家经济的稳定运行和健康发展具有重要的作用。随着股票交易的广泛普及,各种交易数据及衍生的技术指标被用于股市预测;特别是对股票价格的预测,得到了学者和投资者的广泛关注,成为金融领域的一个关注焦点和研究热点[1]。股票价格走势是一种非线性、非稳定的时间序列,不但有其自身规律,还受到文化、心理、政策等因素的影响,存在着明显的非理性特征[2-3]。目前,股票价格的预测方法一般可分为三类:传统方法、机器学习方法和深度学习方法。
传统方法通常利用统计学、经济学等方法对股票交易的特征和技术指标进行建模以预测股票价格。典型的方法包括自回归移动平均法[4]、差分整合移动平均自回归法[5]、广义自回归条件异方差方法[6]等。股价的不平稳、非线性[7]等特点导致传统方法在股票价格预测方面存在着较大的不足。
机器学习方法从股票中选择能够表征股票关键信息的特征,使用支持向量机(support vector machine,SVM)[8]、多层感知器(multilayer perceptron,MLP)[9]、随机森林(random forest)[10]和支持向量回归(support vector regression,SVR)[11]等方法对其建模,对未来的股票价格进行预测。机器学习方法要求人工选择和处理股票特征,工作量大,对具有时间性、非线性等特点的股票价格预测效果并不理想。
深度学习方法将循环神经网络(recurrent neural network,RNN)[12]、长短期记忆网络(long short-term memory,LSTM)[13]和门控循环单元 (gated recurrent unit,GRU)[14]等深度学习网络引入,对股票历史交易数据进行建模,预测股票未来的价格。例如,文献[15]将LSTM和卷积神经网络(convolutional neural network,CNN)融合构成(CNN-LSTM)模型,使用CNN提取原始股票数据的深度特征,使用LSTM来挖掘股票长期时间序列特征。深度学习方法倾向于将股票交易数据作为时间序列,使用循环神经网络及变体对其进行处理,但对不同股票之间的关联特性还缺乏有效的挖掘。
近年来,图神经网络(graph neural network,GNN)[16-17]在交通流量预测[18-19]和电力负荷预测[20-21]等领域取得较好的研究效果,一些学者将GNN引入金融领域对股票价格进行预测。文献[22]中的研究结果表明了股票市场预测和图神经网络结合的有效性。文献[23]中利用维基百科的行业关系数据对股票市场静态建模后进行股票预测。然而,如何有效挖掘和融合不同股票之间的关联特征和时序特征,还需要进一步的研究。
总结以上研究的局限性,主要包括三个方面:1)现有文献大多从静态角度挖掘不同股票之间的关联关系,对股票之间的关联关系随时间变化而动态变化的特性缺乏足够的考虑;2)没有深入研究不同特征对股票之间关联关系的不同影响;3)未能将股票之间的关联特征和股票序列的时序特征进行有效融合。为了克服现有工作的局限性,本研究提出一种基于双向门控循环单元(bidirectional gated recurrent unit, BiGRU)和残差图神经网络(graph attention network with residua,ResGAT)的股票价格预测模型(stock price prediction model based on BiGRU and ResGAT,BiGRU-ResGAT),主要工作如下:1)通过一种新的结合注意力机制的时间滑动窗口方法动态获取不同股票之间的关联关系,构建股票图结构;2)使用多重BiGRU[24]提取股票数据的时序特征,学习股票数据的上下文信息;3)采用带残差(Residual)[25]的图注意力网络GAT[26](ResGAT)对不同维度的股票特征进行融合,充分挖掘股票数据的深层语义信息,对股票价格进行预测。
股票价格预测目的是根据股票历史数据建立模型,提取股票的强表征信息,对股票未来的价格进行预测。本文股票价格预测的思路是采用时间滑动窗口的方法,对指定窗口长度范围内的股票数据进行学习,预测未来一个交易日的股票价格(指股票收盘价格Close)。
(1)
(2)
其中:ξ表示转换函数,功能是将股票数据转换为股票图结构。
H=ψ({Dt-L+1,Dt-L+2,…,Dt})
(3)
其中:ψ表示提取函数,功能是从股票序列中提取时序特征。
假定股票数据特征融合模型为φ,则股票数据的融合特征MH可通过式(4)得到:
MH=φ(A,H)
(4)
(5)
股票价格预测模型BiGRU-ResGAT是对股票数据的纵向时间特征和横向关联特征建模,挖掘股票数据中的关键信息,从而实现准确的股票价格预测(见图1)。
图1 BiGRU-ResGAT框架
如图1所示,BiGRU-ResGAT模型主要包含四个部分:股票图构建层、时序特征提取层、关联特征提取与融合层和股价预测层。其中,股票图构建层通过一种结合注意力机制的时间滑动窗口(time sliding window method combining attention mechanism,TSWMCAM)方法挖掘不同股票之间的关联关系构建股票图结构;时序特征提取层使用由BiGRU组成的时序特征组件从股票序列中提取时序特征;关联特征提取与融合层利用ResGAT提取关联特征后与股票时序特征进行融合;股价预测层则使用融合后的股票特征对未来一个交易日的股票价格进行预测。
股票数据是一个不包含股票序列间关联关系的多维时间序列,无法被图网络直接处理。因此,对股票数据进行建模,构造股票图结构G=(V,E,F,A),如图2所示。
图2 股票图构建
在股票图G中,不同股票间的关联关系信息由特征矩阵F和邻接矩阵A组成。股票图的特征矩阵F∈RL×N×K,由模型选取的股票指标参数构成,包括:6个日线行情指标,即开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)和成交额(Amount);4个技术指标,即5日移动平均线(MA5)、10日移动平均线(MA10)、20日移动平均线(MA20)和30日移动平均线(MA30)。
在股票市场中,股票的关联关系可能随着时间的推移不断变化,且股票的不同特征对于股票之间关联关系的重要性也不相同。因此,在文献[27]基础上,提出一种结合注意力机制的时间滑动窗口方法动态计算股票之间的关联特性。具体步骤如下:
1)使用最小-最大规范化方法将股票在时间滑动窗口长度为L的特征矩阵F∈RL×N×K中不同数据的特征值进行归一化,方法如式(6)所示:
(6)
其中:x′表示归一化的数据;x表示原始数据;xmax和xmin分别表示该维数据的最大值和最小值。
Ci=Fi⊗Watt
(7)
3)计算股票i和j之间在L内的关联系数ρij,如式(8)所示:
(8)
4)确定股票i和j之间在L内的关联关系,通过邻接矩阵A=(aij)表示,如式(9)所示。
(9)
其中:θ表示事先设定的阈值。
为了解决股票序列的时间距离依赖问题,BiGRU-ResGAT采用由BiGRU组成的时序特征层提取股票数据的时序特征。通过BiGRU门控机制控制股票的输入与记忆等信息,能够循环神经网络的梯度消失问题,简化长短期记忆单元的计算机制,从而提高股票预测的效率和精度(见图1)。
由图1可知,股票序列的时序特征由时序特征提取层的时序特征组件提取。一个时序特征组件包括若干时序特征单元,每个时序特征单元由多重BiGRU组成,负责提取一支股票的时序特征。时序特征提取单元的结构如图3所示。由图3可知,一只股票的时序特征包括正向时序特征和反向时序特征,分别由正向GRU和反向GRU提取。
图3 时序特征单元
GRU提取一个时间滑动窗口内第i支股票序列时序特征的步骤如下:
(10)
其中:Wz和Uz分别为更新门中时序特征和上一交易日隐藏状态的权重矩阵,bz为偏置值,σ表示Sigmoid激活函数。
(11)
其中:Wr和Ur分别为重置门对时序特征和上一交易日隐藏状态门中的权重矩阵,br为偏置值。
(12)
其中:Wh和Uh分别为新记忆状态计算中重置门对时序特征和上一交易日股票隐藏状态的权重矩阵,bh为偏置值,⊙表示向量间的点乘,用于计算不同交易日股票信息的残留情况;tanh表示激活函数。
(13)
为了充分挖掘和利用股票的不同特征,BiGRU-ResGAT在关联特征提取与融合层采用ResGAT对股票之间的关联特征进行深度挖掘后再与股票序列的时序特征进行融合,如图4所示。
图4 关联特征提取与融合层
该层的输入为股票图G的邻接矩阵A和股票序列的时序特征H∈RN×K;输出为融合特征MH∈RN×2K。
首先,将股票图G的邻接矩阵A和股票序列的时序特征H使用多重ResGAT进行处理,获得关联特征M∈RN×K。上一重ResGAT的特征输出为下一重ResGAT的输入,过程如式(14)~(16)所示:
M1=ResGAT(A,H)
(14)
M2=ResGAT(A,M1)
(15)
M3=ResGAT(A,M2)
(16)
其中:Mi(i=1,2,3)表示第i重ResGAT的输出。
然后,对关联特征Mi(i=1,2,3)进行算术运算处理,并送入下一重ResGAT处理,过程如式(17)~(18)所示:
(17)
Mout=ResGAT(A,Mave)
(18)
其中:Mave为Mi(i=1,2,3)算术运算处理的结果;Mout为最后一重ResGAT的输出。
以第2重ResGAT为例(输入为M1,输出为M2),其更新关联特征M∈RN×K分为两个阶段。
阶段1:GAT计算特征。
1)计算股票节点vi的一阶邻居股票节点vij对vi的注意力系数βij,计算方法如式(19)所示:
(19)
2)根据注意力系数βij可计算归一化权重系数αij,计算方法如式(20)所示:
(20)
其中:LeakyReLu表示激活函数,Si表示节点vi的一阶邻接节点的编号集合。
(21)
其中:Wα表示权重矩阵;ReLu表示激活函数。
阶段2:残差连接。
将阶段1的输入M1和经过GAT后输出进行连接得到最终ResGAT的输出M2,其过程如式(22)所示:
M2=GAT(A,M1)+M1
(22)
将时序特征H和深度关联特征Mout进行融合,得到融合后的特征MH,如式(23)所示:
MH=Concat(Mout,H)
(23)
其中:Concat表示特征融合函数。
(24)
其中:Wpre表示维度变换参数矩阵;FC表示全连接函数。
本研究提出的BiGRU-ResGAT模型通过TSWMCAM方法构建股票关系图,解决了不同股票之间的动态关联特性问题;采用BiGRU提取股票序列过去和未来的时序特征信息,解决了股票序列的时序距离长依赖问题;同时,使用ResGAT对股票之间的关联特征进行深度挖掘,再与股票时序特征进行融合,最后对股票未来价格进行有效的预测。BiGRU-ResGAT的算法流程如算法1所示。
算法1 BiGRU-ResGAT股票价格预测输入:股票数据集D={D1,D2,…,DT}输出:预测的股票价格Y^t+1FOREACHCj∈{C1,C2,…,CN}:ρij=Corr(Ci,Cj)aij←ρijENDFORFOREACHDi∈{D1,D2,…,DN}://计算时序特征h↔it=Bi-GRUs({Dit-L+1,Dit-L+2,…,Dit})ENDFORFOREACHi∈{1,2,3}://计算中间关联特征Mi=ResGAT(A,Mi-1)//M0=HENDFORMave=Ave(A,Mi)(i=1,2,3)//多层ResGAT平均值Mout=ResGAT(A,Mave)//最后一层ResGAT输出MH=Concat(Mout,H)//特征融合Y^t+1=BiGRU-ResGAT(MH)//股票价格预测RETURNY^t+1//返回股票的预测价格
实验数据来源于公开的财经数据接口Tushare(https://www.tushare.pro/),选取上海证券交易所主板市场498支股票在2017年1月1日至2021年12月31日的股票交易数据作为实验数据集(简称股票数据集)。在实验中,将数据集划分为训练集、验证集和测试集,如表1所示。
表1 股票数据集划分
实验模型采用Python编程语言、PyTorch深度学习框架和PyTorch Geometric图神经网络库(简称PyG)实现。在训练过程中,学习率设置为0.001,epoch 设置为200,batch size设置为32,采用Adam优化器。时间滑动窗口长度设置为16。所有实验均在具有16GB RAM的单个NVIDIA Quadro RTX 5000上进行。
本文中选用平均绝对误差(mean absolute error,MAE)、均方根误差(root mean squared error,RMSE)和决定系数(Rsquared,R2)对模型的预测性能进行评估,如式(25)~(27)所示:
(25)
(26)
(27)
3.3.1 消融实验
为了验证BiGRU-ResGAT的有效性,分别对关键模块和关系系数计算方法进行消融实验。
1)模块消融
首先,时序特征层的提取模型LSTM和关联特征提取与融合层的提取模型GCN作为基线模型(LSTM-GCN)。然后,在基线模型的基础上进行改进得到3组消融实验:将时序特征提取层的LSTM模型改进为BiGRU模型(BiGRU-GCN)、将关联特征提取与融合层的关联关系提取模型GCN改进为GAT(LSTM-GAT),同时将LSTM与GCN模型替换为BiGRU与GAT (BiGRU-GAT)。最后,再将ResNet网络结构引入得到4组不同的消融实验:LSTM-ResGCN、BiGRU-ResGCN、LSTM-ResGAT和BiGRU-ResGAT。实验结果如表2所示。
表2 模块消融实验结果对比
由表2可知,在所有的模型中,LSTM结合图卷积网络模型的效果最差;将图卷积网络改进为图注意力网络后,模型预测效果明显提升,这说明股票间的影响程度是不同的。在加深模型网络结构的同时引入残差网络,深层提取股票关联特征信息,在预测效果上也取得了较好的表现。将LSTM改进为BiGRU,通过双向提取股票历史特征信息,再融合残差图注意力网络得到最终的BiGRU-ResGAT模型,在预测效果上均优于其他融合模型。
2)关联系数计算方法对比
为了验证模型中TSWMCAM在构建股票图时的有效性,实验将其和全连接(FCs)、皮尔逊系数(Pearson)、行业关系(Industry)和无滑动窗口的注意力关联系数(ACCM)等方法构建邻接矩阵的效果进行对比实验(见表3)。
表3 不同方法生成邻接矩阵对比
由表3可知,全连接方法将所有股票进行连接,引入了大量的“噪音股票”,预测误差大,导致模型预测性能大幅下降;皮尔逊关联系数方法在构建邻接矩阵时仅考虑股票收盘价格,影响了模型预测效果;行业关系方法静态构图并未考虑股票特征信息,效果欠佳;采用基于注意力机制的关联系数方法利用了股票特征信息,但未考虑股票的动态关联特性;TSWMCAM方法综合考虑了股票所有的特征信息和动态关联特性的,股票预测效果优良。
3.3.2 模型参数实验
实验通过控制变量法,对比不同阈值θ、BiGRU层数和ResGAT层数时BiGRU-ResGAT的MAE、RMSE和R2的变化情况。
1)阈值对比分析
计算邻接矩阵aij的阈值θ是决定股票间是否有关联边的重要参数,对股票图构建起着非常关键的作用。阈值θ太低会引入过多的噪音股票,过高不能反映股票间真实的关联关系,都会导致BiGRU-ResGAT的预测误差变大。由表4可知,当阈值θ范围为0.66~0.70时误差最低。
表4 不同阈值取值性能对比
2)BiGRU层数对比分析
模型中的BiGRU能够提取股票的时序特征,挖掘上下文股票的特征信息,但过深的BiGRU层数在训练中会出现梯度消失、局部收敛等情况。由表5可知,当层数为2时BiGRU-ResGAT的性能相对较好。
表5 不同BiGRU层数性能对比
3)ResGAT层数对比分析
ResGAT能够聚合股票间关联节点的特征信息。较少的ResGAT层数只能提取浅层的股票关联特征信息;层数增多可以提取更深层的特征信息,但会导致计算时间过长和过平滑等现象。由表6可知,当ResGAT层数为3时BiGRU-ResGAT的误差相对较低。
表6 不同ResGAT层数性能对比
因此,BiGRU-ResGAT最终确定阈值θ为0.68,BiGRU层数为2,ResGAT层数为3。
3.3.3 模型性能实验
1)不同模型性能对比
为了验证BiGRU-ResGAT的性能,实验对测试集的498支股票价格进行了预测,选择基准模型SVM[8]、GRU[14]、CNN-LSTM[15]和RSR[23]在MAE、RMSE和R2指标上进行对比。实验结果如表7所示。
表7 不同模型性能对比
由表7可知,SVM的MAE、RMSE比其他模型(均为深度学习模型)高,R2系数比其他模型低;在深度学习模型中,GRU的MAE、RMSE比其他模型高,R2系数比其他模型低;BiGRU-ResGAT的MAE、RMSE比最低,R2系数最高。
实验结果表明:深度学习模型比机器学习模型具有更好的非线性学习能力;通过行业关系构图的RSR模型,以静态角度挖掘股票之间关系,在股票价格预测的效果上也相对较优;BiGRU-ResGAT通过BiGRU和残差图注意力网络能够更好地挖掘和融合股票数据的时序特征、关联特征,极大地降低股票价格预测的误差。
2)模拟投资组合
为了进一步评价模型的性能,本文中通过股票的累计收益率来评判不同模型的预测能力。累计收益率的计算方法如式(28)所示:
(28)
其中:profitt0表示初始交易日t0的总资产,profitt表示交易日t的总资产,Rt表示交易日t的累计收益率。
图5 股票投资收益曲线
由图5可知,不同模型在几只股票上的累计收益率都随着股票价格的波动而波动。在模拟交易期间,SVM和GRU在几支股票的累计收益率表现相似,处于图形的下方;与SVM相比,GRU在几支股票的最终收益率要高一些。CNN-LSTM、RSR和BiGRU-ResGAT在整个交易期间的累计收益率表现更好,最终收益率更高;但BiGRU-ResGAT在几支股票的累计收益率表现最好,最终累计收益率也最高(特别是600761.SH股票)。
图6显示了各模型在整个股票数据集上的的最终投资收益率。由图6可知,SVM的最终收益率最低,BiGRU-ResGAT的最终收益率最高。BiGRU-ResGAT的最终收益率分别比SVM、GRU、CNN-LSTM和RSR高出10.77、7.89、6.81、5.03个百分点。
图6 投资总收益结果
BiGRU-ResGAT比其他模型具有更好投资收益率的原因是BiGRU-ResGAT能够有效地提取和融合股票数据的时序特征和关联特征,准确地预测股票上涨和下跌时间,从而买入或卖出股票,给股民带来较好的投资收益率,降低投资风险;其他模型不能很好地提取和挖掘股票数据的关键特征,在股票价格预测上存在较大的误差,导致投资收益率下降。
本研究提出了基于BiGRU和ResGAT的股票价格预测模型BiGRU-ResGAT,该模型通过TSWMCAM动态获取股票之间的关联特征并构建股票图结构,使用BiGRU提取股票序列的时序特征,然后利用ResGAT对股票之间的关联特征和股票序列的时序特征进行深度挖掘和融合,对未来一个交易日的股票价格进行预测。实验结果表明,BiGRU-ResGAT能够同时挖掘和融合股票序列的时序特征和股票之间的关联特征,解决股票价格预测的横向特征关联问题和纵向时间依赖问题,对股票价格进行有效的预测。在今后的工作中,将继续优化BiGRU-ResGAT以提高模型的预测结果,并进一步探讨所提模型在基金、债券及其他领域的预测性能。