孔荫莹, 柯锐恺, 胡亚美, 杨 舟
(1. 广东财经大学经济与管理国家级实验教学示范中心, 广州 510320; 2. 广东财经大学统计与数学学院, 广州 510320;3. 华南师范大学数学科学学院, 广州 510631)
目前,中国的股市市值占GDP的比值为72%,随着经济的发展,股票市值仍有35万亿元的增长空间[1]。股票作为资本市场的重要组成部分,对A股价格进行预测,有利于分析和完善市场的定价机制、完善和加强现有的监管体制、提高股票市场的开放程度和融资能力,对促进经济平稳健康发展有重要的意义。
股票市场本质上是一个动态、非平稳、多噪声的系统,股票的波动除了受经济周期、金融市场等错综复杂的经济因素影响外,还受国际关系、国家政策和突发事件等影响。因此,对股价进行预测,不仅有利于健全和完善现有的市场监管体制,还有利于股票市场的高质量开放,促进经济平稳健康发展。对于股票预测的问题,其基本思想是通过股票价格的历史数据对股票未来的价格进行预测。最初通过长期观察各只股票的K线图及一定金融知识,总结归纳出股价波动周期性规律,制定最优投资消费策略[2]。随着时间序列预测模型的发展,股价预测历经了从传统统计方法到机器学习算法的发展。近期伴随图神经网络(GNN)的兴起,关于时间序列的预测有新的方向。
传统的序列预测方法有移动平均自回归模型(ARIMA)[3]、广义自回归条件异方差模型(GARCH)[4]、指数广义自回归条件异方差(EGA-RCH)[5]和整积广义自回归条件异方差(IGA-RCH)[6]等, 这些模型被运用于早期的股票价格预测,对整个股票价格预测界有重大的影响,但对具有大量非线性特征的股票数据的拟合效果不佳。
机器学习方法(如支持向量机(SVM)[7]等)在解决小样本、高维度和非线性的问题上展现出特有的优势。基于这些方法,KIM等[8]直接将SVM用于股价预测,准确度较之前有一定提升;MEI等[9]将SVM与ARIMA模型相结合,提出了ARIMA-SVM模型进行股价预测;CHUNG等[10]将SVM与GARCH模型相结合,提出了GARCH-SVM模型用于股价预测。
循环神经网络(RNN)[11]具备对时序数据的记忆,其变体LSTM、GRU能更好地处理梯度爆炸或消失的问题,在序列预测上得到广泛应用。如:SAJJAD等[12]将 CNN和GRU相结合,将时间序列数据分别从空间特征和序列特征2个角度进行预测;SHIH等[13]将TPA注意力机制引入LSTM中;SHI等[14]在CNN-LSTM的基础上引入注意力机制和集成学习,一定程度上提高了预测的精准度。
随着GNN的兴起,越来越多研究者关注GNN的应用。传统的神经网络只能对欧氏数据进行预测,而现实中,各股间的关系往往不是简单的欧式数据结构,如果强行使用欧式数据结构将会导致股票间空间特征丢失,进而影响预测准确度。GNN的相关应用处于起步,如:CHEN等[15]利用公司持股信息构建图结构,将图卷积神经网络运用到股价涨跌的预测;ZHAO等[16]提出构建含有多支股票的拓扑图,并将构建的图应用于短期信息建模中,捕捉不同股票间的空间信息;LIN等[17]设计了条件局部卷积核,用以改进RNN-GNN,使其在时空数据中预测性能提升。
本文主要研究内容包括自适应训练出股票间的图数据结构,并提取各板块股票价格的时间和空间特征,来进行股价预测,进而提出一种基于股票各板块内部的单向自适应图神经网络的股价预测模型(Stock-GNN)。一个板块内部往往存在一些龙头股,股票板块的上涨,往往是由这些个股的上涨而带动。这些个股即在某一时期股票市场的炒作中,对同行业板块的其他股票具有影响和号召力的股票。Stock-GNN的图学习层基于板块内部龙头股的启发,训练出单向的图结构,并且图结构随时间变化随时更新。时序卷积模块根据股价常见指标的周期,设计不同大小的卷积核来提取时序上的特征,图卷积模块提取各股票间的特征关系。本文贡献包括两点:一是提出Stock-GNN预测模型,将各只股票作为图的节点,股票之间的关系作为图的边,通过图学习层,能自适应地从股价的历史数据中提取稀疏图邻接矩阵;二是受龙头股的启示,将A股按板块划分,根据不同板块训练出不同的图,并使用时序卷积模块和图卷积模块分别提取股价的时间和空间特征。
本模型基于图神经网络提出,利用图神经网络在非欧数据结构优秀的表现进行股价预测,下面给出描述图的相关定义。
定义1[18]图是指由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
定义2[18]有向图是指图中任意2个顶点之间的边都是有向边。
定义3[18]节点邻域为N(v)={uV|(v,u)E}。
定义4[18]邻接矩阵Aadp是一个n×n的矩阵,如果eijE,则Aij=1;如果eijE,则Aij=0。
本文由各板块的股票收盘价和关系数据构建图数据结构,其中,节点代表股票收盘价,边则代表各股票间价格的影响关系。本文主要基于各行业板块内各只股票的收盘价训练生成图,对时间和空间特征进行提取,预测出下一个交易日的收盘价。
由于股票价格之间存在潜在的关系,尤其是在同一个板块内部,各只股票价格之间有较大的关联,选择某一板块的各只股票收盘价作为图的节点,训练出一张图,并利用图神经网络的模型进行预测。其中,图学习模块基于板块内部龙头股的启发训练出单向的图结构,并且图结构随时间变化随时更新。运用类似GoogLeNet的Inception模块,根据股价常见指标的周期,设计不同大小的卷积核来提取时序上的特征;运用改进的图卷积模块来提取各股票间的特征关系。综上,本文提出了一种基于股票各板块内部的单向自适应图神经网络的股价预测模型(Stock-GNN)。
模型的总体框架图如图1所示,主要包括单向图学习层、图卷积模块和时序卷积模块交替堆叠5层,最后使用1×1卷积核作为输出层,控制输出维度。为了避免在训练的过程中梯度爆炸和梯度消失问题,提高网络的训练效率和性能,各模块间还使用了残差连接和跳跃连接。
图1 Stock-GNN预测模型的整体框架
在股票价格预测中,各只股票间的关系没有预先形成的图结构,因此各股票之间潜在的关系不能直接获得。受各板块内龙头股往往对同行业的其他股票的涨跌起引导和示范作用的启示,并且在同一板块板块内各股票往往有相似的趋势(图2),绘制了浦发银行(600000.SH)、华夏银行(600015.SH)、民生银行(600016.SH)3支银行板块股票的每日收盘价格曲线图。
图2 3只银行股的股价曲线图
基于上述思想,本文提出基于各板块内部的单向自适应的图结构学习,即构造一个参数化的邻接矩阵。基于梯度下降的方法,在反向传播中不断进行优化,更新邻接矩阵。
单向图学习模块是通过学习一个邻接矩阵,从多元时间序列数据中获取变量之间的单向影响关系,并且能与图卷积层进行共同优化[19]。本文使用多只股票的收盘价作为图的节点进行股价预测,以探索股票价格间的影响关系。受龙头股的启示,股票价格间的影响关系是单向的,一个节点状态的变化会引起其他节点的变化,因此,模型的图学习模块训练出的邻接矩阵是非对称的。另外,由于部分股票的关系较小,但模型仍训练出边的权重,为了减少无意义矩阵的计算量,每个节点相邻的节点数的最大值设置为8,即1个节点最多与8个关系密切的节点相连,与其他节点的边权重为0。图学习模块的计算公式如下:
Aadp=ReLU(tanh(αK)),
(1)
(2)
K1=PReLU(E1θ1),
(3)
K2=PReLU(E2θ2),
(4)
其中,E1、E2分别为源节点、目标节点,θ1、θ2是模型的参数,K为源节点指向目标节点的方向权重,α为激活函数的饱和率,ReLU(·)为控制邻接矩阵的非对称性的激活函数;PReLU(·)为增加非线性的激活函数。
时序卷积模块使用多个不同大小的一维卷积核来抽取高维的时序特征[20]。时序卷积模块使用类似GoogLeNet的inception模块,不同的卷积核大小提供了不同的感受野,使该模块提取到不同股票价格周期的变化特征,其结构如图3所示。
图3 时序卷积模块
通过多个卷积核提取不同交易周期的信息,最后进行拼接。关于卷积核大小的选择,考虑到卷积核太大会忽略股票短周期的特征,而太小又不能充分提取长期的特征,本文受常用的股票周期指标(5日均线、10日均线、20日均线、30日均线)的启发,对每一个节点的时间序列使用大小为1×5、1×10、1×20、1×30的卷积核进行时序特征提取。
图卷积层可将节点及其相邻节点信息进行整合,对信息起到传递和筛选的作用,更广泛地提取股票间价格的影响关系的特征。通过重复混合不同距离的邻居特征表示,可以实现对节点特征的多尺度建模,从而能更准确地捕捉节点之间的关系和特征。该模块横向利用多次邻接矩阵,纵向通过训练权重W,其结构如图4所示。
图4 图卷积模块
信息传递即从相邻的节点和相邻节点的节点一直延伸进行信息提取,使用超参数β控制保持输入时节点的信息的比例,计算公式如下:
Hk=βH输入+(1-β)AHk-1,
(5)
信息筛选的作用是防止随着网络层数的增加,每个节点的隐层表征会趋向于收敛到同一个值的过度平滑问题和筛选掉噪声的信号。对每一个Hk训练出一个权重Wk,将每个Hk乘上权重Wk后相加就得到当前层的输出,既保持了源节点的部分信息,又更新到邻居节点信息,信息筛选公式如下:
(6)
将基于股票各板块内部的单向自适应图神经网络模型(Stock-GNN)与常用于股价预测的AR[3]、GARCH[4]、CNN-GRU[12]、TPA-LSTM[13]、CNN-LSTM-Attention[14]模型和不按板块划分的图神经网络(All-SGNN)模型进行比较,使用各支股票的历史数据进行股价预测。为了评估模型的预测性能,本文使用相对平均误差(RSE)、相对绝对误差 (RAE)、预测序列与实际序列的相似度系数(CORR)3个指标对预测结果进行分析。首先对比Stock-GNN与其他模型的性能,然后对Stock-GNN在不同板块的预测效果进行分析,最后在每个板块随机选择一个股票进行可视化分析。
实验数据来源于沪深A股主板中市值排名前4的行业板块(银行、白酒、电力设备和生物医药)。选取这些行业板块中市值都不低于总计100亿元,并已上市超过10年的股票共61只,具体分类和名称见表1。使用2011年1月4日至2022年5月6日,共计2 754个交易日的股票收盘价数据进行训练和测试。数据集分为训练集、验证集和测试集。训练集为2011年1月4日至2017年10月24日,共1 654条数据,占该数据集的60%;验证集为2017年10月25日至2020年1月22日,共550条数据,占该数据集的20%;测试集为2020年1月23日至2022年5月6日,共550条数据,占该数据集的 20%。
表1 实验所选取的股票
各只股票的价格差异较大,若直接将这些数据输入图神经网络中,会对图学习和预测结果有较大的影响。为了消除各股价之间的量纲影响,需要对股价进行归一化处理,归一化公式[11]如下:
(7)
其中,X为各只股票每天的收盘价数据,Xnormation为归一化股价,Xmax为对应股票的最高收盘价,Xmin为对应股票的最低收盘价。
本文选择每支股票的相对平均误差(RSE)、相对绝对误差 (RAE) 、预测序列与实际序列的相似度系数(CORR)作为模型评价指标。其中,RSE和RAE是用来衡量预测值与真实值之间误差大小的指标,因此相对平均误差和相对绝对误差越小则预测准确性越好;CORR是用来衡量2个序列之间相关程度的指标,因此越大越好。计算每只股票的指标数值后求平均值即为对应模型的误差评价。所用指标的计算公式如下:
(8)
(9)
(10)
其中,a为实际值,p为预测值。
本实验使用操作系统为Windows10,CPU为Inter Core i7-10700F,显卡为 NVIDIA GeForce RTX 3060 Ti,编程使用的版本为Python 3.7.9,PyTorch 1.9.1,CUDA 11.3。
本实验对各只股票进行单步预测,即根据股票历史收盘价对股票进行下一个交易日收盘价的预测,据此持续滚动进行预测。
模型参数设置方面,优化器选择 Adam 优化器,损失函数为L1范数,batch size设置为4,epochs设置为30,iteration设置为100,dropout设置为0.3,learn rate设置为0.000 1, weight decay设置为0.000 01。
将本文提出的Stock-GNN模型与常用的股价预测模型进行实证分析,并计算每支股票的相对平均误差(RSE)、相对绝对误差 (RAE) 、预测序列与实际序列的相似度系数(CORR)。由结果(表2)可知:在3类评价指标中,与不按板块划分的All-SGNN相比,Stock-GNN模型对股票价格的预测效果略有提升;与AR、GARCH、CNN-GRU、TPA-LSTM、CNN-LSTM-Attention模型相比,Stock-GNN模型的相对平均误差和相对绝对误差有较大提升,相似度系数也有一定提升。
表2 7个股票预测模型的性能对比
对不同板块分别进行训练得到不同的图,计算每支股票的相对平均误差(RSE)、相对绝对误差 (RAE) 、预测序列与实际序列的相关系数(CORR)作为模型评价指标,各板块取平均值并计算标准偏差。由结果(表3)可知:(1)四大板块的股票预测序列和实际序列的相似度系数(CORR)都在0.98以上,即2个序列极高度相关,说明股票价格的涨跌趋势预测效果非常好;(2)银行板块的RSE和RAE只有0.029 4和0.019 5,并且各只银行股预测误差的标准偏差较小,说明各银行股的预测效果都很好,与现实中银行板块波动较小,各股关系较明显吻合;(3)白酒板块由于受市场及政策影响,股票波动大,标准偏差大,说明各股预测效果差异较大,RSE和RAE为0.089 3和0.063 6,预测效果不如其他板块。
表3 各板块预测指标对比
在个股的预测方面,本文随机选取上述4个板块中的1只股票,并将股价预测结果进行可视化。由结果(图5)可知:(1)个股的预测曲线基本与实际吻合,趋势基本一致,但个别时刻存在轻微的滞后;(2)除了古井贡酒外,其他个股的价格预精确度都很高;(3)古井贡酒虽然趋势预测基本准确,但是预测值与实际值存在一定误差,该结论与表3结果吻合,即白酒板块预测误差明显高于其他板块,但序列相似度仍较高。
图5 股票预测曲线
本文提出一种基于股票各板块内部的单向自适应图神经网络的股价预测模型(Stock-GNN),该模型可以训练出各股票之间的图数据结构关系,并利用图卷积模块和时序卷积模块提取它们的时空特征进行预测。爬取A股4大行业板块共61只股票的真实数据进行实证分析,将Stock-GNN模型与常用于股价预测的AR、GARCH、CNN-GRU、TPA-LSTM、CNN-LSTM-Attention模型和不按板块划分的图神经网络(All-SGNN)模型进行比较。结果表明:与其他预测模型相比,Stock-GNN模型的相对平均误差和相对绝对误差有较大提升,相似度系数也有一定提升;个股的预测曲线基本与实际吻合,趋势基本一致,但个别时刻存在轻微的滞后;受市场及政策的影响,白酒板块波动较大,预测精确度会略低于其他板块。
本文将图神经网络与股价预测结合,考虑到同板块股票间的影响和龙头股的影响,后续研究可考虑更多板块的股票,训练双向的图数据结构,探索预测效果更好的模型。