1. 引言
改革开放以来,政府机关和企业陆续着手推出股票、债券等各类有价证券产品,这促使中国逐渐发展并完善了成体系的证券交易平台。1990年11月26日,上海证券交易所正式启动运营。1991年7月,深圳证券交易所也正式开市。上海和深圳两大证券交易所的成立,代表了中国证券交易市场向标准化和规范化方向的重要迈进。经过几十年的发展,中国上市公司越来越多,为了综合反映股票价格的总体水平及其波动情况,两家证券交易所先后推出了各种指数。1991年,他们分别发布了上证综指和深证综指,随后又陆续推出了上证a股、b股指数,深证成指、深证100等指数,这使得中国证券市场的指数体系得到了极大的完善。然而,这些指数都只单一地反映了相应各市的波动情况,不能同时反映出沪深两市的整体情况,基于此,上海交易所和深圳交易所在2005年4月8日联合推出了沪深300指数,它以规模和流动性为选样的两个根本标准,选取了上海证券a股交易市场中的179支上市股票和深圳证券a股交易市场中的121支上市股票作为样本编制而成。沪深300指数的样本股大致占据了沪深两市市值的60%左右,体现出较好的市场代表性,该指数的推出,为现有的市场指数架构增添了新的维度,方便了投资者全面把握市场的运行状况。股票市场作为长期证券市场中必不可少的一部分,在金融市场中占据了重要的地位,它不仅具有强波动性、高流动性等特点,而且具有风险性、收益性。此外,由于受到行业因素、政治因素、公司财务状况等多重影响,股票市场逐渐演变为一个复杂的非线性、非平稳的金融市场。对股票价格指数的统计特征进行分析,探索隐藏在数据背后的统计规律,能够使我们更好地了解市场的动向,预测市场的变化,从而降低由于市场的不确定性带来的风险。已有的预测股票价格指数的文献如[1]-[4]。本文将针对股票价格指数利用深度学习算法构建统计模型,刻画其波动过程,揭示运行规律。
最早的时域分析方法由英国统计学家yule于1927年建立,他提出了自回归模型。随后陆续有学者提出了移动平均模型、自回归积分滑动平均模型、自回归条件异方差模型、自回归积分滑动平均模型等。后来,随着神经网络的兴起,促使学者们将深度学习方法如rnn、lstm等应用到时间序列分析领域。
随着计算科学的兴起,学者们发现神经网络在处理非线性关系及长期依赖时更有优势。sulandari和subanar [5]研究了双季节模式的指数平滑模型与神经网络模型的结合。首先运用指数平滑状态空间模型来获得趋势、季节和不规则成分,然后将其作为神经网络的输入,最后利用混合模型对巴温变电站和爪哇地区的能源消耗进行预测。结果表明,与现有的其他模型进行比较,文章[5]所提出的混合模型预测精度最高。bhattacharjee和tollner [6]使用9年降水、温度、垫料体积、总悬浮物、生物需氧量等时间序列数据,证明了递归神经网络的详细敏感性分析可以更好地解释收集径流的水质动态。huang等人[7]提出了一种新的基于da-rnn的周期时间序列预测模型da-skip以弥补现有的深度学习模型在处理周期性和长距离依赖序列时存在的不足。在太阳能、电力消耗和空气质量数据集上的实验结果表明,文章[7]中提出的模型在捕获序列的周期性和长距离依赖特征方面优于另外三个对比模型。cantero-chinchilla等人[8]提出了一种定制的卷积神经网络架构,用于从超声时间序列测量中估计腐蚀轮廓的厚度值。研究结果表明,与传统的用于最小厚度预测的越限技术相比,所提出的网络更一致,对阈值的变化不敏感。lazcano等人[9]结合图卷积网络(gcn)和双向长短时记忆网络(bilstm)的特点,将两种类型的神经网络结合起来,为时间序列的分析提供了新的可能。研究结果表明,与单独的bilstm和gcn模型以及传统的模型相比,联合的bilstm-gcn方法具有更好的性能,在文章所有使用的误差指标中具有更低的误差。jo和kim [10]提出了一种新的神经网络架构,通过使用一种广义的可加方法,包括对多变量时间序列数据的预测的可解释性。实验结果表明,所提出的方法在预测mts数据时的性能与最先进的神经网络相当。hadwan等人[11]提出了一种新的混合方法对时间序列进行预测,该方法结合了arima模型,bpnn模型和ann模型,该方法用于预测也门居民消费价格指数(cpi)的各项指标。研究结果表明,该方法在提高预测精度和降低整体预测误差方面表现优于文中其他模型。文豪和陈昊[12]提出了一种结合小波变换的长短期记忆神经网络的税收预测模型。在数据预处理阶段,采用小波变换技术消除税收数据中的噪声以提高模型的泛化能力。结果表明,基于lstm神经网络的编码器–解码器结构相比于单步滑动窗口的lstm神经网络模型、灰色模型和arima模型来说,在预测精度上有明显提升。薛涛等人[13]结合经验模态分解(emd)和韦布尔分布对金融时间序列进行预处理,提出一种基于emd和多分支长短期记忆网络的分类预测模型,用于从高频金融时间序列中提取有关价格走势的信息并对未来的价格趋势作出预测。次必聪和张品一[14]以非线性组合的方式构建了arima-lstm组合模型,分别对道琼斯工业指数、上海证券综合指数以及伦敦金价格指数进行预测,并将预测结果与arima模型、lstm模型和线性组合模型的预测结果进行对比。结果显示,构建的非线性组合预测模型相比于单一预测模型以及线性组合预测模型展现出更优越的性能。徐存东等人[15]提出了基于arima和svm模型组合的泵站机组运行趋势预测方法,选择机组运行技术参数中的能源单耗和平均负荷作为实验样本,研究结果表明,提出的新型预测方法有着更高的预测精度和更低的预测误差。范京道等人[16]提出了一种基于arima模型和svm模型的组合预测模型,该模型用于对瓦斯浓度进行预测,研究结果表明,混合模型的预测结果在预测精度和预测误差方面均优于单一模型。廖雪超等人[17]为了更好地预测风电场的风电功率,提取风电场相邻站点之间时空信息和潜在联系,提出了一种基于卷积神经网络(cnn)、互信息(mi)法、长短时记忆网络(lstm)、注意力机制(at)和粒子群优化(pso)的短期风电场预测模型。实证结果表明,提出的混合模型具有最优的统计误差,cnn-lstm模型可以高效提取风电场时空信息并进行时间序列预测。谢学斌和孔令燕[18]提出了一种基于arima和xgboost的时间序列组合预测模型。他们将该模型用于预测交通事故的相关指标。实例结果表明,4项指标的混合预测模型的预测精度均优于单一的arima模型和holt-winters模型。杨博和石岩松[19]提出了一种cnn-lstm算法,他们将该算法用来预测黄金期货价格,研究结果表明,提出的cnn-lstm模型优于其他模型。类似使用神经网络对时间序列数据进行预测的文献还有[20]-[25]。
2. 理论模型与评价指标
2.1. 长短期记忆网络
由于梯度消失的原因,rnn只能拥有短期记忆,难以捕捉长期依赖信息。为解决这一问题,hochreiter和schmidhuber在1997年提出了一种改进的rnn模型——长短期记忆网络(long short-term memory, lstm),它通过门控机制将加法运算带入网络中,一定程度上解决了梯度消失的问题,使得网络可以学习长期依赖信息。普通的rnn模型的重复神经网络模块的链式模型如图1所示。
figure 1. chained model diagram for rnns
图1. rnn的链式模型图
其中,
表示模型的输入信号,
表示模型的输出信号。这个重复的模块仅包含一个单一的神经网络层,限制了其处理信息的能力。而lstm在这一基础上进行了改进,采用了四个神经网络层,并通过一种独特的机制相互协作,图2展示了一个基本的lstm网络结构。
figure 2. lstm network architecture diagram
图2. lstm网络架构图
lstm主要由遗忘门、输入门和输出门这三个关键的门控结构组成,它们共同负责调控信息的存储与传递,三个门控结构的作用机制如下:
遗忘门。遗忘门决定着从上一状态到当前状态,哪些信息应该被遗忘。它通过一个sigmoid激活的神经网络层来实现,为每个输入的细胞状态计算一个0到1之间的权重,其中接近0的权重意味着“遗忘”,接近1的权重意味着“保留”。遗忘门的输出与上一个细胞状态相乘,从而实现信息的遗忘。
输入门。输入门负责决定当前状态需要添加哪些新信息。它包含两个部分:一个是sigmoid层,它决定哪些值将被更新或允许通过;另一个是tanh层,它生成一个新的候选细胞状态,作为当前输入和前一个隐藏状态的函数。输入门的sigmoid层输出与tanh层输出相乘,得到最终将被添加到细胞状态的量。
输出门。输出门决定细胞状态如何影响当前的隐藏状态输出。它同样包含两个部分:一个是sigmoid层,它基于当前的细胞状态和输入,决定隐藏状态的哪些部分将被输出;另一个是tanh层,它将细胞状态通过tanh函数转换,以得到一个位于−1和1之间的值。输出门的sigmoid层输出与tanh层输出相乘,得到最终的隐藏状态输出。
(1)
(2)
(3)
(4)
(5)
(6)
(7)
这三个门控结构的相互作用,使得lstm能够有效地学习并记忆长期依赖关系。具体来说,lstm的计算过程如下:首先在遗忘门使用公式(1)计算遗忘权重;再应用公式(2)计算丢弃的不需要的信息;通过公式(3)和公式(4)在输入门计算添加到细胞状态的新信息;使用公式(5)更新细胞状态;再通过公式(6)在输出门计算隐藏状态的输出;最终通过公式(7)计算出最终的隐藏状态输出。
2.2. 注意力机制
注意力机制源于对人类视觉的研究,在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。这种机制可以帮助人类在面对大量信息时,优先处理重要信息,提高信息处理的效率。深度学习中的注意力机制模仿了人类视觉注意力的功能,允许模型在处理大量信息时能够动态地聚焦于当前最为重要的部分,其主要有两个方面的作用:一是决定需要关注输入的哪部分,二是分配有限的信息处理资源给重要的部分。在计算能力有限的情况下,注意力机制是解决信息超载问题的主要手段之一,目前注意力机制在自然语言处理、计算机视觉、语音识别等多个领域中均有着广泛的应用,其工作流程主要分为以下三个步骤:
(8)
(9)
(10)
步骤一:计算注意力分数。首先评估输入序列中每个元素的重要性,并为它们计算一个注意力分数。假定给定一个查询(query) q和一个键(key)
,则它们之间的注意力分数
其计算公式为公式(8)所示。
步骤二:生成权重分布。步骤一中的注意力分数通过一个归一化过程(如softmax函数)转换成权重,确保所有权重的和为1,形成一个概率分布。第i个元素的注意力权重的计算公式为公式(9),其中
是所有注意力分数的集合;
步骤三:加权求和。计算出注意力权重之后,将每个输入位置的表示和对应的注意力权重相乘,并对所有加权结果进行求和,这样可以得到一个加权的输入表示,它能够更好地反映输入数据中重要的部分。假定输入值为
,得到最终的聚合表示为公式(10)。最终的输出结果可以作为下一层的输入,也可以作为模型的最终输出。
这三个阶段可以用图3表示。
figure 3. the mechanism of attention works
图3. 注意力机制的工作原理
2.3. 模型评价指标
对于一个预测模型来说,有许多指标可以评判其预测效果的好坏。假设预测值表示如下:
(11)
真实值表示为:
(12)
常用的三种指标如下:
定义1:平均绝对误差(mae),所有单个观测值与算术平均值的偏差的绝对值的平均。计算公式如下:
(13)
定义2:均方误差(mse),即对平均绝对误差求平方根,一方面,该指标避免了平均绝对误差的绝对值导致函数不能求导的问题;另一方面,均方误差可以通过平方来放大预测偏差较大的值,提高了检测的灵敏度。计算公式如下:
定义3:均方根误差(rmse),即对均方误差开根号,计算公式如下:
(14)
(15)
相比于均方误差,均方根误差使得结果在数量级上更为直观。
三种评价指标的取值范围均为
。当预测值与真实值完全吻合时,三种评价指标均为0;随着模型误差的增大,三种指标的值也会随之增大。
3. 基于lstm多因子模型的实证分析
3.1. 数据预处理
沪深300开盘指数的时间序列图如图4所示。
figure 4. csi 300 opening index time series chart
图4. 沪深300开盘指数时间序列图
本节实证分析选取2010年1月4日~2024年2月20日的样本数据作为训练集,2024年2月21日~2024年3月5日的样本数据作为测试集。在建模之前需要对数据进行归一化处理,这是因为神经网络在训练过程中通常采用梯度下降等优化算法来使得损失函数最小化,数据归一化可以确保不同特征的值在相似的范围内,有助于加速梯度下降的收敛过程,从而减少训练时间。本文采用的归一化方法为min-max归一化,具体公式如下:
(16)
其中,
表示归一化后的数值,
表示观测数据,
表示观测数据的最小值,
表示观测数据的最大值。归一化处理后,数据的大小范围限定在
之间。
3.2. 影响因素分析
股票市场是一个复杂的系统,其波动受到多种因素的影响,包括经济状况、国际形势、政策变化等,本节将从这三个维度出发,分别选取居民消费价格指数(cpi),农产品批发价格总指数(agricultural),美元兑人民币汇率(rate),纳斯达克综合指数(nasdaq)和中信行业指数–黄金(gold)指标作为参考,本节所使用的数据均来自于前瞻数据库。对所选指标数据进行关联度分析来评估自变量对因变量的解释能力,从而确定它们是否适合作为模型的候选预测因子。本文采用灰色关联分析,开盘指数与各影响因素之间的关联度热力图如图5所示。
figure 5. heat map of the correlation between the opening index and each influential factor
图5. 开盘指数与各影响因素之间的关联度热力图
通过观察图中颜色的深浅可以迅速辨识出不同因素间的关联性强弱,颜色较深的区域则代表着更高的关联度。可以看出,各因素对沪深300开盘指数的影响程度从大到小依次为纳斯达克综合指数、中信行业指数–黄金、美元兑人民币汇率、居民消费价格指数、农产品批发价格总指数,且各指标关联度均大于0.5,表明它们与参考序列之间存在着显著的相关性,因此可以将所选的五个特征变量加入到模型中。
3.3. 模型的构建及预测
优化算法:训练神经网络的核心目标是调整模型的参数,以实现模型预测误差最小化。在深度学习任务中,通常会事先设定一个损失函数作为评估标准,并采用适当的优化算法来减少该损失。在这一优化问题中,损失函数充当目标函数的角色,通过有限次的参数更新迭代,使得该目标函数的值不断减小,当迭代终止时,则意味着模型的训练完成,此时得到的参数即为模型通过训练所学习到的结果。本章采用adam算法来训练神经网络,adam优化算法是diederik kingma和jimmy ba在2015年提出的,其具体的计算过程如下:
步骤一:初始化。在开始训练之前,需要初始化模型的参数
以及用于计算梯度一阶矩和二阶矩的变量
和
。同时,设定学习率
、衰减率
和
以及迭代次数t;
步骤二:前向传播。计算当前参数下的预测值
;
步骤三:计算损失。使用损失函数
计算当前参数下的损失值;
步骤四:反向传播。计算损失函数关于参数
的梯度
;
步骤五:计算梯度矩。分别计算梯度的一阶矩和二阶矩如下:
(17)
(18)
步骤六:更新矩估计。分别计算一阶矩和二阶矩的偏差校正如下:
(19)
(20)
步骤七:参数更新。使用公式(21)来更新参数
,其中
是一个很小的常数,用来保证数值稳定性,避免分母为零。
(21)
步骤八:迭代。将
更新为
,然后重复步骤二到七,直到满足停止条件,如达到最大迭代次数或损失函数下降到某个阈值以下。
参数设定:基于tensorflow深度学习框架构建lstm多因子预测模型时,需要设定的参数如下:
(1) 网络结构:本节模型包含一个lstm层,一个dropout层以及一个全连接层。
(2) 神经元结点数:如果神经元结点过少,可能会导致网络的表达能力有限,无法充分拟合数据,从而使得模型的预测精度降低。如果神经元结点过多,可能会引入过多的噪声和冗余信息,使得网络对新数据的泛化能力减弱,从而导致网络过拟合。因此,综合考虑本文的数据量,将lstm层的结点数设定为64。
(3) 损失函数:损失函数用来评估模型预测值与真实值之间的差异。损失函数的值越小,表明模型的预测结果与实际情况越接近,模型的性能越好。对于不同类型的任务,有不同形式的损失函数与之适配,本章在实验时采用的是回归问题中经常使用的均方误差损失。
(4) 学习率:本节采用adam优化算法,其中的学习率是一个关键的超参数,它影响着模型参数每次更新时的变化幅度。本节在实验时采用默认的学习率0.001。
(5) 迭代次数:在神经网络中,一次迭代是指在训练过程中数据集被完整遍历一次。
(6) batch_size:它指的是在训练过程中每次更新模型权重时用于计算损失函数和梯度的样本数量。本节设定batch_size = 32,即在每次训练迭代中,模型会使用32个样本来计算损失函数和更新权重,这是一个常见的选择,它在训练速度、内存使用和模型性能之间提供了一个较好的平衡。
模型工作流程:下面结合前文中设定的优化算法和模型参数,对从数据输入到模型训练到预测的整个流程进行详细介绍,具体如下:
步骤一:对沪深300数据进行预处理,包括划分训练集测试集,归一化;
步骤二:将步骤一获得的训练集转换为监督型数据,即生成训练集的特征值及标签值;
步骤三:根据上面设定的参数,构建lstm模型;
步骤四:将训练集数据输入到步骤三定义的lstm预测模型中,得到对应的预测值;
步骤五:计算预测值和实际值之间的损失函数;
步骤六:通过反向传播算法和优化器来更新模型的权重参数,完成一个批次的训练;
步骤七:重复步骤四到步骤六20次,得到训练完成的lstm模型;
步骤八:将训练好的lstm模型应用于时间序列预测任务中,对未来的数据进行预测。
一个完整的lstm工作流程如图6所示。
figure 6. lstm model workflow diagram
图6. lstm模型工作流程图
训练及预测:下面对构建的模型进行训练,得到损失函数如图7所示。
figure 7. loss function plot of lstm multi-factor model based on attention mechanism
图7. 基于注意力机制的lstm多因子模型损失函数图
可以看出,随着迭代次数的增加,模型的训练损失逐渐收敛至0,对应的训练结果如图8所示。
figure 8. training results of lstm multi-factor model based on attention mechanism
图8. 基于注意力机制的lstm多因子模型训练结果
可以看出,该模型在训练集上的拟合效果很好。下面使用该模型对未来十天的数据进行预测,得到结果如表1所示。
table 1. prediction results of lstm multifactor model based on attention mechanism
表1. 基于注意力机制的lstm多因子模型预测结果
时间 |
预测值 |
2024-2-21 |
3367.0698 |
2024-2-22 |
3393.8499 |
2024-2-23 |
3425.4958 |
2024-2-26 |
3456.5000 |
2024-2-27 |
3484.0010 |
2024-2-28 |
3505.6865 |
2024-2-29 |
3522.5417 |
2024-3-1 |
3534.7334 |
2024-3-4 |
3542.2356 |
2024-3-5 |
3546.0469 |
将其与测试集进行对比,结果如图9和表2所示。
figure 9. comparison of prediction results of lstm multifactor model based on attention mechanism
图9. 基于注意力机制的lstm多因子模型预测结果对比图
table 2. predictive effect of lstm multifactor model based on attention mechanism
表2. 基于注意力机制的lstm多因子模型预测效果
模型 |
mae |
rmse |
多因子lstm-attention |
35.3749 |
43.4630 |
模型预测的mae为35.3749,rmse为43.4630,预测误差较低,说明多因子lstm-attention模型能够很好地拟合出沪深300指数的趋势。
3.4. 结果分析
为了验证模型的准确性,本文分别使用arima-egarch模型、lstm单因子模型和基于注意力机制的lstm单因子模型对沪深300指数进行预测,训练集和测试集的划分与上文保持一致,得到不同模型的预测结果如表3所示。
table 3. predictive effectiveness of different models
表3. 不同模型的预测效果
模型 |
mae |
rmse |
多因子lstm-attention |
35.3749 |
43.4630 |
arima-egarch |
88.2273 |
98.3199 |
单因子lstm |
43.3968 |
48.5884 |
单因子lstm-attention |
91.8196 |
96.9999 |
为了更直观地比较各模型的预测误差,各模型预测结果的误差柱状图如图10所示。
figure 10. error histograms of prediction results for each model
图10. 各模型预测结果的误差柱状图
根据表3和图10,我们清晰地观察到多因子lstm-attention模型在预测沪深300指数方面表现出更低的预测误差,具体来说,mae为35.3749,rmse为43.4630。相较之下,该模型在mae方面相对于arima-egarch模型的88.2273和单因子lstm-attention模型的91.8196,分别降低了59.90%和61.475%。在rmse方面,相对于arima-egarch模型的98.3199和单因子lstm模型的48.5884,分别降低了60.07%和10.55%。综上所述,多因子lstm-attention模型在预测沪深300指数时展现出更高的预测精度。
4. 结论与建议
本文主要研究对象为股票价格指数。当该指数呈现上升趋势时,表明股票的整体平均价格上涨;反之,则表示股票的整体平均价格下降。准确预测股票价格指数可以降低投资者的风险,协助政府相关部门制定经济政策。研究结果发现:(1) 沪深300指数具有非线性趋势和长期依赖性,线性模型难以准确预测其趋势。(2) 深度学习算法能有效处理非线性关系和长期依赖,对捕捉复杂的市场动态具有优势。深度学习算法擅长处理复杂模式识别任务,能够提供更精确的预测结果。
在未来的预测中,可以考虑将多种模型结合进行预测。本文提出如下建议:(1) 传统的时间序列模型在处理线性关系和周期性方面表现出色,而深度学习算法则擅长处理非线性关系和长期依赖,未来的研究可以探索将两者结合起来形成组合预测模型,充分利用各自的优势,提高预测的准确性和稳定性。(2) 深度学习算法的黑盒性质使得模型的可解释性较差,未来的研究可以探索如何提高深度学习模型的解释性,使得投资者和决策者能够更好地理解模型的预测结果和决策依据。(3) 股指预测不仅仅是为了预测未来的价格走势,更重要的是为投资者提供风险管理和交易策略优化的参考。未来的研究可以进一步探索如何将股指预测与风险管理和交易策略优化相结合,为投资者提供更全面的决策支持。
基金项目
江苏省高等学校基础科学(自然科学)研究面上项目(23kjb110013)和大学生实践创新训练项目(2024nfuspitp0135)。
notes
*通讯作者。