范 辉,朱勇丞,李晋江
(山东工商学院 a.计算机学院 ;b.山东省未来智能金融工程实验室,山东 烟台 264005)
在一定程度上,股票市场可以反映金融市场的变化情况,是国家经济发展的重要指标之一。提升股票预测的准确性,有助于投资者制定策略并获得回报。因此,股票预测一直是从业者和学者的热门研究课题。然而,由于股票市场本质上的复杂性和外部因素的不确定性,股票曲线的走势表现出非线性和高波动性,这使得股票预测成为一项具有挑战性的工作。
随着计算机技术在金融领域的应用,股票预测受到了经济学家和计算机科研人员的共同关注。早期的股票预测研究主要是基于统计学的线性预测方法,例如自回归移动平均模型(ARMA)、差分整合移动平均自回归模型(ARIMA)等。这些方法在预测平稳时间序列的时候通常表现良好。然而,股票序列实际上是非线性、非平稳的,这导致线性预测方法在捕捉股票数据的非线性规律时效果不佳。
机器学习的发展为股票预测提供了新的工具,支持向量机(SVM)、隐马尔可夫模型(HMM)等方法有效地弥补了统计学方法的不足,被成功应用于股票预测。作为机器学习中的新兴方法,深度学习具有记忆性、参数共享和图灵完备性等优点。这些优点有利于分析股票数据,深度学习因此被广泛应用于股票预测。具体而言,反向传播神经网络(BPNN)、卷积神经网络(CNN)、循环神经网络(RNN)[1]和其它深度学习方法已经有了大量的研究进展,在股票预测中取得了良好的效果。
在众多深度学习方法中,RNN尤其适用于股票预测,因为它能够捕捉前后输入之间的关联。1997年,Hochreiter等人基于RNN的原理提出了长短期记忆网络(LSTM)[2]。LSTM不但解决了原始RNN存在的长期依赖问题,而且缓解了梯度消失问题,所以成为了股票预测领域的热门。此后,对LSTM的改进出现了许多成果,例如门控循环单元(GRU)、简单循环单元(SRU)等。这些方法在进行股票预测时同样具有良好的预测效果。
尽管传统的神经网络架构在股票预测中有着成功的应用,但仍然具有一定的局限性。事实上,神经网络在拟合数据的过程中,会不同程度地忽略一部分有价值的信息。为了应对这种情况,Ashish等人于2017年提出了一种以注意力机制为核心的全新深度学习架构,并在自然语言处理领域中取得了巨大成功。与之前的深度学习方法相比,注意力机制可以并行地处理数据,因此能够更好地获取全局信息。鉴于注意力机制在自然语言处理领域的成功,使用注意力机制分析与股票市场相关的金融新闻和媒体评论,于是成为了一种实用的股票预测方法。同时,在对注意力机制进行研究的过程中,证明其不仅适用于自然语言处理,而且对数据的拟合和预测也具有可行性。目前,注意力机制已经发展出了多种应用方式,为股票预测提供了丰富的选择。
考虑到上述股票预测方法的特性,为了获得更准确的股票预测曲线,本文提出了一种基于注意力机制和特征融合的股票预测方法,称为AFG。该方法首先对每一条股票数据进行位置编码和时间编码,以便于后续模块获取股票数据的位置信息和时间信息。然后,将经过预处理的股票数据分别输入到门控循环单元和注意力机制中,门控循环单元和注意力机制会对股票数据进行特征提取,得到股票数据在不同维度中的特征。最后,将门控循环单元和注意力机制的股票特征进行融合,得到更全面的股票特征。为了将股票特征转换为可理解的、具体的股票数据,还需要将股票特征通过全连接层改变维度来实现解码,从而获得最终的股票预测结果。AFG的整体结构如下页图1所示。本文使用真实的股票数据进行了相关测试,测试结果验证了所提出方法的有效性。综上,本文的主要贡献如下:
图1 AFG的整体结构图
(1)基于注意力机制和特征融合,设计了一种用于股票预测的深度学习方法,并通过相关实验论证了该方法的有效性。
(2)为了更好地兼顾门控循环单元和注意力机制两类方法的优点,将两类方法的股票特征进行融合,并自适应地导出股票预测曲线。
(3)在股票预测中使用注意力机制时,不是结合文字数据进行预测,而是将多头自注意力机制直接作用于股票数据。
直接使用股票市场的历史数据进行预测是主要的股票预测方法之一,统计学方法、机器学习、深度学习以及各种衍生方法都能有效地拟合和预测股票数据。Zhou等人[3]组合了多种神经网络进行预测,并设计了一种多目标优化算法来寻找最优的神经网络。Mehdi等人组合了差分自回归移动平均模型和多层感知器,并尝试了不同的组合方式来尽可能提升最终模型的预测准确性。Feng等人首先使用前馈神经网络处理股票数据,然后使用LSTM对经过处理的股票数据进行预测,最后使用注意力机制优化LSTM的预测结果并得出最终预测结果。Liu等人[4]首先使用双向GRU处理股票数据,然后使用层次互补注意力网络量化股票数据,最后使用胶囊网络输出股票预测结果。Bisoi等人[5]首先使用变分模态分解算法处理股票数据,然后使用鲁棒核极限学习机对分解后的股票数据进行预测,还使用差分进化算法优化了核函数参数。Niu等人[6]首先使用变分模态分解算法处理股票数据,然后使用LSTM对分解后的股票数据进行预测,最后将每组数据的预测结果合并。Zhou等人[7]首先使用经验模态分解算法处理股票数据,然后使用因子分解机神经网络对分解后的股票数据进行预测。他们将所有数据一起输入预测模块,直接输出最终预测结果,而不需要做合并操作。
一部分研究人员认为,直接使用股票市场的历史数据进行预测能够达到的准确性是有限的。除了基本的股票数据以外,使用与股票市场相关的金融新闻和媒体评论作为辅助,同样是一种重要的股票预测方法。Thien等人[8]提出了一种利用社交媒体信息预测股价走势的方法,并通过一个大型实验评估了所提出方法的有效性,进而证明了对社交媒体信息进行分析确实可以提高股票预测的准确性。Lorenzo等人[9]研究了社会舆论对金融市场的影响,通过从纽约证券交易所收集民众看法和股票数据用于测试,证明了所提出方法的有效性。另外,他们还发现,相比于机器学习算法,基于深度学习的LSTM更适合金融时间序列。Sahar等人使用LSTM、doc2vec和CNN分别分析发表在StockTwits上的股票信息,证明了深度学习方法可以有效地进行金融信息分析。Andrea等人[10]将股票数据和新闻文字结合起来预测股票走势,通过选取纳斯达克中的20只股票进行预测并用于高频交易模拟测试,证明了所提出方法为开发新的交易策略提供了起点。
由于注意力机制在自然语言处理领域的优异表现,启发了结合文字数据的股票预测中注意力机制的尝试,涌现了不同形式的研究成果。Jin等人[11]将投资者的倾向和股票价格数据结合起来进行股票预测,先采用经验模态分解算法处理股票价格数据,然后使用注意力机制为核心预测模块提取关键性辅助信息,最后采用LSTM作为核心预测模块输出最终结果。Abdullatif等人提出了一个源自Twitter的土耳其社交评论数据集,并针对这个数据集测试了多个基于注意力机制的预测方法,证明了注意力机制在结合文字数据的预测中确实有效。Arthur等人[12]基于巴西的金融新闻数据确定了最适合股票预测的神经网络架构,并根据实验结果提出了一种新的投资策略。
在本文中,基于注意力机制和特征融合,设计了一种新的股票预测方法AFG,由三个模块组成,如图1所示。在该方法的“数据处理”模块中,使用了位置编码和时间编码对股票数据进行处理,有利于后续模块获取股票数据的位置信息和时间信息。为了得到更全面的股票信息用以提升方法的预测准确性,在“特征提取”模块中使用了门控循环单元和多头自注意力机制对经过预处理的股票数据分别进行特征提取。然后,在“特征融合”模块中将两类不同维度的特征融合,并通过全连接层对股票特征进行维度转换和数据解码,从而导出最终的股票预测曲线。在本节中,主要对所提出的方法进行了详细介绍,同时还对实验中涉及的一些方法做了相关介绍。
在将股票数据输入到“特征提取”模块时,一般是以顺序方式输入的。事实上,各个时间步之间的股票数据并不是简单的顺序关系,每个时间步的股票数据都可能与多个时间步的股票数据相互影响。为了更准确地对股票数据进行特征提取,需要标记每个时间步的相对位置。考虑到上述原因,在“数据处理”模块中使用位置编码技术对股票数据进行了处理。位置编码技术使用不同频率的正弦函数和余弦函数编码股票数据的位置,具体公式如下:
PE(pos,2i)=sin(pos/100002i/d),
PE(pos,2i+1)=cos(pos/100002i/d)。
其中1≤2i≤d,pos表示股票数据的位置,i表示股票数据的第i维,PE表示股票数据的位置编码结果,d表示股票数据的完整维度。这个公式表明,位置编码的每个维度对应于一个正弦曲线,且波长构成了一个从2π到10000·2i的几何级数。这种编码方法能够让股票数据的相对位置更加突出,编码结果通过对应相加的矩阵运算嵌入到股票数据中。
除了原本的位置信息,股票数据还受到时间信息的影响。每个时间步的股票数据都有对应的真实时间,因此股票数据与真实时间有极强的关联性,结合时间信息进行股票预测是很有必要的。为了将真实时间嵌入到股票数据中用于预测,需要先对股票数据的真实时间进行时间编码。时间编码技术根据时间单位的不同分别对股票的真实时间数据进行编码,然后将各种时间单位的编码结果合并为最终的时间编码结果,相关公式如下:
E=W·D+b,
Et=Ey+Em+Ed。
其D中表示股票的真实时间数据,E表示时间数据的编码结果,W表示编码时的权重矩阵,b表示编码时的偏置向量,Ey表示年份数据的编码结果,Em表示月份数据的编码结果,Ed表示日期数据的编码结果,Et表示最终的时间编码结果。与位置编码类似,时间编码的结果通过对应相加的矩阵运算嵌入到股票数据中。
对于股票预测问题,要解决的最大难点是如何对上下文中相互依赖的信息进行建模。早期常用的方法是RNN,通过引入记忆单元存储和传递过去的信息来解决这个问题。RNN成功地完成了上下文中数据的顺序链接,但是也具有相应的缺点,即这种链接会随着单元距离的增加而变得不够可靠。
不同于原始RNN的输出仅由权重、偏置和激活函数决定,LSTM对原始RNN的单元做了替换,引入了“门”机制用于控制信息的流通和损失。在每个单元内部,信息通过遗忘门、输入门和输出门进行更新。LSTM的结构如图2所示。
图2 LSTM的结构图
图3中的ft、it和ot依次为遗忘门、输入门和输出门。遗忘门控制上一单元信息ht-1和新输入信息xt的放弃,计算公式如下:
图3 GRU的结构图
ft=σ(Wf·[ht-1,xt]+bf)。
输入门控制上一单元信息ht-1和新输入信息xt的输入,计算公式如下:
it=σ(Wi·[ht-1,xt]+bi)。
LSTM单元中还有一个重要部件Ct,贯穿LSTM的整个链式系统,称为单元状态,相关公式如下:
ot=σ(Wo·[ht-1,xt]+bo),
ht=ot∘tanh(Ct)。
以上公式中,Wf、Wi、WC和Wo表示权重矩阵,bf、bi、bC和bo表示偏置向量, ∘表示矩阵的哈达玛积,σ和tanh分别表示Sigmoid函数和双曲正切函数,表达式如下:
根据LSTM的原理,可以发现遗忘门和输入门发挥了相似的作用。GRU将遗忘门和输入门合并为“更新门”,简化了单元内部的信息通路。此外,它移除了单元状态这一设计,并加入了“重置门”等其它改动。在保证神经网络能力不下降的同时,这些改动加快了计算速度,获得了更高的效率。
GRU的结构如图3所示。
图3中的rt和zt依次为重置门和更新门。重置门决定了如何将新的输入信息xt与上一单元的信息ht-1相结合,计算公式如下:
rt=σ(Wr·[ht-1,xt]+br)。
更新门控制上一单元信息ht-1和新输入信息xt的放弃与保留,计算公式如下:
zt=σ(Wz·[ht-1,xt]+bz)。
GRU能够仅用一个更新门发挥两个门(遗忘门和输入门)的作用,依赖于对zt的精妙使用,相关公式如下:
注意力机制是深度学习方法不断发展和适应现实需求而产生的创新,相比于过去的深度学习方法,注意力机制可以并行地处理数据同时将数据中重要的局部区域凸显出来,因此能够节省计算资源并快速获取最有用的信息。一般而言,注意力机制是一种根据重要程度对输入的数据进行加权处理的机制,加权处理的权重通常来源于归一化指数函数的结果。最初,注意力机制往往与CNN和RNN配合使用,Ashish等人摆脱了传统的设计思维,提出了仅使用自注意力机制的深度学习方法,称为Transformer。作为这一方法的核心,自注意力机制的公式定义如下:
其中Q是查询矩阵,K是键矩阵,V是值矩阵,d是矩阵内数据的维度。查询矩阵、键矩阵和值矩阵是由相同的输入分别与三个不同的权重矩阵相乘而得到的,图4展示了自注意力机制的结构。
图4 GRU的结构图
自注意力机制能够关注到重要的信息,为数据分析提供了一种新的选择。为了发挥自注意力机制的全部能力,进一步提出了多头自注意力机制。在多头自注意力机制中,每个自注意力机制与查询矩阵、键矩阵和值矩阵的不同投影矩阵并行运算。然后,将所有自注意力机制的输出连接到一起并通过一个前馈神经网络产生多头自注意力机制的结果。多头自注意力机制的公式定义如下:
MultiHead(Q,K,V)=Concat(head1,head2,…,headh)Wo,
正如上一小节所述,多头自注意力机制以其特有的全面性,相对于其它深度学习方法展现出更优越的性能。然而,在一些特定的应用场景中,多头自注意力机制的全面性可能会对预测结果产生负面作用。Zhou等人研究了自注意力机制的特征分布图,发现并不是每个查询矩阵和键矩阵的乘积都是有效值,因此没有必要对这些数据进行计算。客观来说,一个数据大概率只与几个数据有高度的关联性,而对于其它数据则没有显著的关联性。多头自注意力机制在全面关注数据的同时,也使得一些关联性不强的数据之间产生了相互干扰,从而影响了最终的预测结果。考虑到多头自注意力机制的不足,Zhou等人提出了稀疏自注意力机制(ProbSparse Self-Attention):在对数据进行加权处理之前,先通过稀疏性度量确定哪些查询矩阵和键矩阵有必要计算并生成相应的稀疏矩阵,然后使用得到的稀疏矩阵输出注意力机制的结果。稀疏性度量和稀疏自注意力机制的计算公式如下:
本节进行了若干组实验来论证所提出方法的有效性。本节首先介绍实验的数据集、参数设置和评价指标,然后结合实验结果和图表进行说明和讨论。
1.数据集。为了验证AFG在不同情况下的有效性,实验数据集由2018年1月2日至2020年12月31日中国股票市场和美国股票市场的数据组成,包括SSE数据集和DJI数据集。SSE数据集来源于中国股票市场上证50指数中的股票,DJI数据集来源于美国股票市场道琼斯工业指数中的股票。在删除两个数据集中存在数值异常的股票之后,实际得到70支股票的数据。
SSE数据集中包括41支股票,代码为:600000,600015,600016,600018,600028,600036,600048,600050,600104,600111,600585,600637,600795,600837,600887,600958,601006,601088,601166,601169,601186,601211,601288,601318,601328,601336,601398,601601,601628,601668,601669,601688,601766,601800,601818,601857,601901,601985,601988,601989,601998。DJI数据集中包括29支股票,代码为:AAPL,AMGN,AXP,BA,CAT,CRM,CSCO,CVX,DIS,GS,HD,HON,IBM,INTC,JNJ,JPM,KO,MCD,MMM,MRK,MSFT,NKE,PG,TRV,UNH,V,VZ,WBA,WMT。
SSE数据集中的具体数据来源于Tushare,DJI数据集中的具体数据来源于Yahoo Finance。两个数据集的股票数据按照4∶1∶1的比例被划分为训练集、验证集和测试集。为了减轻噪声数据的影响,根据以下公式对每个数据进行了归一化处理:
其中x表示归一化处理前的数据,x′表示归一化处理后的数据,xmin表示一支股票中数据的最小值,xmax表示一支股票中数据的最大值。
2.参数设置。整个实验过程使用Pytorch框架实现,实验时每个训练批次的批量大小设置为16,训练时使用的优化器为Adam,训练过程中的学习率设置为0.01,总的训练轮次设置为100以保证训练结果的收敛性。为了避免过拟合问题,在实验中还使用了dropout技术,dropout的相关参数设置为0.1。在输入数据时,每次的输入长度设置为10,经过位置编码和时间编码后的输入维度设置为512。对于多头自注意力机制,表示子空间的数量设置为8。对于门控循环单元,隐藏神经元的数量设置为512。
3.评价指标。为了全面评估方法的预测性能,使用基于预测精度和交易表现的两类指标进行评价。基于预测精度的评价指标是均方误差(MSE)、平均绝对误差(MAE)和平均绝对百分比误差(MAPE),计算公式如下:
其中Xi表示真实值,Yi表示预测值,N表示样本数。相比于MAE,MSE对异常值产生的误差更敏感,通常能更好地反映方法的预测稳定性。MAPE反映了预测值与真实值之间的相对误差,相比于MSE和MAE,在不同类型的数据集上具有更好的普遍性。MSE、MAE和MAPE的数值越小表明方法的预测精度越高。
基于交易表现的评价指标是回报率(RR)和夏普比率(SR),计算公式如下:
其中X0表示每次交易开始时的股票数据,Xp表示p天后的股票数据,E(Rp)表示平均回报,Rf表示无风险利率,σp表示超额回报的标准差。一般来说,回报率和夏普比率的数值越大表明股票预测方法的交易表现越好。
为了展现AFG的预测性能,将其与一些热门方法进行了比较,包括ARIMA、Transformer和PF-LSTM。这些方法的介绍如下:
ARIMA是由Box和Jenkins于20世纪70年代提出的一种时间序列预测方法[13]。由于ARIMA在平稳时间序列上的良好表现,成为了统计学中的热门方法。在面对非平稳的、复杂的股票序列时,ARIMA通常存在局限性。
Transformer是由Ashish等人提出的一种以注意力机制为核心的全新深度学习方法。该方法不仅在自然语言处理领域中取得了巨大成功,而且为模式识别、数据预测等其它领域提供了宝贵的借鉴经验。
PF-LSTM[14]是由Liu等人提出的一种股票预测方法。该方法作为粒子滤波循环神经网络的替代方法,被用于股票预测的实验测试中。股票预测的测试结果表明,PF-LSTM在真实的股票数据集上具有良好的预测能力。
表1展示了ARIMA、Transformer、PF-LSTM和AFG四种方法在SSE和DJI两个数据集的测试集上的MSE、MAE和MAPE。表中的最优指标使用粗体凸显。从表中可以看出,AFG的MSE、MAE和MAPE在两个数据集上均取得了最优,这证明了所提出方法的有效性。
表1 四种方法在SSE和DJI上的预测精度
此外,为了更直观地展示所提出方法的股票预测能力,本文绘制了SSE数据集中中国石化公司(股票代码:600028)的股票预测曲线和DJI数据集中波音公司(股票代码:BA)的股票预测曲线,如图5和图6所示。两支股票皆依据2018年1月至2020年6月的股票数据,对之后120天的股票数据进行预测。从图中可以看出,两支股票的预测曲线均能够与真实变化曲线高度吻合,这证明了所提出方法的有效性。
图5 中国石化公司的股票预测曲线
图6 波音公司的股票预测曲线
为了论证所提出方法的合理性,本节将比较一些其它方法的实验结果,这些方法基于AFG做了改变:(1)不进行数据处理,直接进行特征提取和特征融合,命名为AFG-1;(2)不进行特征融合,只使用门控循环单元进行特征提取,命名为AFG-2;(3)不进行特征融合,只使用多头自注意力机制进行特征提取,命名为AFG-3;(4)使用长短期记忆网络替换门控循环单元进行特征融合,命名为AFG-4;(5)使用稀疏自注意力机制替换多头自注意力机制进行特征融合,命名为AFG-5。
表2定量地展示了AFG-1、AFG-2、AFG-3、AFG-4、AFG-5和AFG六种方法在SSE和DJI两个数据集的测试集上的MSE、MAE和MAPE。表中的最优指标使用粗体凸显。从表中可以看出,AFG的预测精度显著优于其它方法。AFG-1的预测精度低于AFG,说明对股票数据进行位置编码和时间编码是必要的。AFG-2和AFG-3的预测精度均低于AFG,说明对两类股票特征进行融合确实能够提高股票预测的准确性。AFG-4的预测精度低于AFG,说明门控循环单元比长短期记忆网络更适合基于特征融合的股票预测。AFG-5的预测精度低于AFG,说明多头自注意力机制比稀疏自注意力机制更适合基于特征融合的股票预测。
表2 核心作者及其发文量
事实上,预测精度仅能反映股票预测方法的理论性能,实际的交易表现才是更受关注的指标。为了保证交易表现完全取决于所提出方法,计算时选择简单的多空交易策略。多空交易策略的解释如下:如果预测到股票将要上涨,则买入股票并持有,直至预测到股票将要下跌。本节根据AFG的预测结果使用多空交易策略进行测试,并与事后交易策略和买入持有策略进行比较。事后交易策略假定股票的变化是完全已知的,是一种前瞻策略。买入持有策略作为交易表现的基线,其含义是在开始时买入股票并持有到结束。事后交易策略虽然在实践中无法实现,但可以作为交易表现的上限。交易时假定三个条件:(1)市场总是有足够的流动性;(2)买卖的价格为当日的收盘价格;(3)不考虑交易成本。
表3定量地展示了AFG和两种特殊策略在SSE和DJI两个数据集的测试集上的回报率和夏普比率。由于已知未来,事后交易策略在两个数据集上具有最高的回报率和夏普比率。相反地,买入持有策略在两个数据集上具有最低的回报率和夏普比率。从表中可以看出,AFG在两个数据集上的回报率和夏普比率显著高于买入持有策略,这说明所提出的方法能够收获良好的投资回报。
表3 在SSE和DJI上的交易表现
此外,为了更直观地展示交易回报的累积过程,在图7和图8绘制了AFG和两种特殊策略在SSE和DJI两个数据集的测试集上的回报率变化曲线。从图中可以看出,买入持有策略的曲线一直在震荡,没有上升的趋势。这是因为该曲线的变化仅取决于股票的涨跌。事后交易策略的曲线一直在上升,这是因为该曲线能够理想地规避所有的下跌。AFG的曲线虽然存在震荡,但是整体呈上升趋势,这证明了AFG能够有效地进行股票预测。
图7 在SSE上的回报率变化曲线
图8 在SSE上的回报率变化曲线
在本文中,提出了一种基于注意力机制和特征融合的股票预测方法AFG。“数据处理”模块使用位置编码和时间编码获取股票数据的位置信息和时间信息,“特征提取”模块使用门控循环单元和多头自注意力机制对股票数据分别进行特征提取以得到更全面的股票信息。最后,“特征融合”模块通过全连接层对融合后的股票特征进行维度转换和数据解码,产生了相对准确的股票预测曲线。此外,在中国股票市场和美国股票市场的交易实验证明了AFG的有效性,这说明本文所提出的方法能够预测微观经济的变化,从而为宏观经济的发展提供重要的参考价值。
随着经济和科技的不断进步,金融行业正在逐渐地意识到人工智能的作用,因此作为人工智能方法之一的AFG对金融经济领域具有一定指导意义。总之,由人工智能和金融行业结合而来的智能金融,未来将成为经济研究领域的重要方向之一。考虑到智能金融的现状,下一步的研究方向可以着眼于将所提出的方法应用于更多的经济场景,例如汇率预测、风险预测等。