1. 引言
随着投资行业的不断发展,人们对股票价格预测的需求也越来越高。能够有效研究股票的技术分析已成为股票市场运行的决定因素。但由于股票市场的复杂性,运行的规律也非常复杂。股票价格的运行,是依据一定规律以及各种外部要素的影响而确定的。股票价格分析的目的,就是研究股票市场的规律性动态,根据各种外部要素影响股票价格,并研究之间的关系,以探究获得股票投资的可靠依据。股票技术分析也具有中介作用,使得投资者能够客观综合各种因素,然后依据市场实际变化进行投资,准确定位投资方向,从而达到放大投资者的投资回报的目的。
本文拟打算使用RNN、LSTM深度学习方法进行股票价格预测,通过构建模型架构,利用历史股票数据进行训练与优化,精准把握股票价格的动态变化趋势,对股票价格进行预测。准确预测股票价格走势,不仅能够为投资者提供极具价值的决策依据,辅助其制定合理的投资策略,实现资产的稳健增值,还对金融机构进行风险管理、优化资源配置等诸多业务环节起着至关重要的作用。
2. 研究现状
早期的股票价格预测多依赖于传统统计模型。时间序列分析中的自回归移动平均模型(ARIMA)及其扩展形式被广泛应用于相关预测研究中。Box和Jenkins提出的ARIMA模型通过对历史数据的平稳化处理,识别数据的自回归和移动平均阶数,从而构建预测模型。翁紫霞[1]利用ARIMA模型对建设银行股票市场指数进行短期预测,发现该模型能够捕捉到价格序列中的线性趋势和季节性波动,在平稳市场环境下取得了一定的预测精度。曹沥方等[2]使用STATA17,建立ARIMA模型,以牧原股份的股价为例,采取差分法使序列平稳化,并利用差分后的序列进行股价分析预测。然而,由于ARIMA模型是基于线性进行假设,难以处理股票价格中的非线性特征,当市场出现突发冲击或结构性变化时,预测效果会大打折扣。
随着计算机技术的发展,机器学习算法逐渐应用于股票价格预测领域,为解决非线性问题带来希望。
决策树模型以其直观易懂、能够处理非线性数据的优势受到关注。分类与回归树(CART)算法通过对特征空间的递归划分,构建类似树形的决策结构。杨光远[3]运用CART算法联合逐步回归算法分析股票历史交易数据,依据7类财务数据包括29个财务指标构建特征集,能够有效区分不同市场状态下股票价格的走势,但容易出现过拟合现象,泛化能力有待提高。
支持向量机(SVM)基于结构风险最小化原则,通过寻找一个最优分类超平面将不同类别样本分开。在股票价格预测中,SVM通常用于预测股价上涨或下跌的二分类问题或预测股价具体数值的回归问题。孙若愚[4]采用核函数,使用SVM处理高维非线性数据对股价进行预测。对比传统方法,SVM在小样本、非线性数据上展现出较高的预测准确率,但模型训练时间较长,参数选择对结果影响较大。
深度学习的兴起为股票价格预测开辟了新路径,其强大的自动特征学习能力使其在处理海量、高维、非线性金融数据时表现出色。
在股价预测领域,时间序列分析至关重要,而循环神经网络(RNN)凭借其独特优势,受到众多学者的青睐,逐渐成为股价预测的常用方法之一。RNN模型在处理时间序列时,初期能够有效捕捉数据间的动态关联,展现出较强的适应性。然而,随着时间跨度不断拉长,会出现慢慢“忘却”早期状态信息的情况,导致预测准确性大打折扣。鉴于此,长短期循环神经网络(LSTM)被引入相关研究。相较于传统RNN,LSTM设计了专门的记忆存储机制,能够有效存储过往的关键信息,从而在处理长序列数据时,为更精准的股价预测提供有力支撑。长短期记忆网络(LSTM)作为一种特殊的循环神经网络(RNN),专门设计用于处理序列数据中的长短期依赖关系。在股票价格预测中,LSTM能够捕捉到股票价格随时间动态变化的趋势。曹玉贵等[5]构建基于LSTM的预测模型,输入历史股价、成交量等时序数据,模型成功学习到股价波动规律,在长时间跨度的预测任务中优于传统机器学习模型。不过,LSTM模型训练过程较为复杂,对计算资源要求较高。
3. 研究内容及方法
3.1. RNN循环神经网络
参考文献[6]可知,循环神经网络(Recurrent Neural Network, RNN)是一类递归神经网络,该神经网络以序列数据为输入,网络中的所有节点(循环单元)以链式形式连接,并在序列的演进方向上进行递归操作。它包含输入层、隐藏层以及输出层。该网络在t时刻接收到输入
之后,隐藏层的值为
,输出值为
。并且,
的值并非仅由当前时刻的输入
决定,还与上一时刻隐藏层的输出
有关。RNN的计算方法如公式(1)、(2)所示:
(1)
(2)
其中,
为t时刻向量,表示输入层的值;
也为t时刻向量,表示隐藏层的值。U为输入层到隐藏层的权重矩阵,
表示t时刻输出层的向量;V为隐藏层到输出层的权重矩阵。权重矩阵W表示隐藏层上一次的值作为这一次的输入的权重。
3.2. LSTM长短期记忆网络
长短期记忆网络[7] (LSTM, Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN (循环神经网络)存在的长期依赖问题而专门设计出来的。传统RNN具备通过记忆体实现短期记忆的能力,能够对连续数据序列进行预测。其工作机制基于在每个时间步更新隐藏状态,从而捕捉序列中的短期依赖关系。然而,在处理长序列数据时,传统RNN会暴露出其局限性。随着连续数据序列长度的增加,反向传播过程中需要展开的时间步大幅增长。在反向传播更新参数的过程中,梯度需要沿着时间步连续相乘。这种累积效应使得梯度在传播过程中迅速衰减,即出现所谓的梯度消失问题。当梯度消失时,模型难以学习到长距离的依赖关系,导致长序列数据的处理效果不佳,故长短记忆网络LSTM被提出。
LSTM长短期记忆网络中引入了三个门限:输入门
、遗忘门
、输出门
。引入了表征长期记忆的细胞态
;引入了等待存入长期记忆的候选态
。引入的这三个门限都是当前时刻的输入特征
和上个时刻的短期记忆
的函数,分别表示为:
输入门决定了多少比例的信息会被存入当前细胞态,公式如(3)所示:
(3)
遗忘门将细胞态中的信息选择性地遗忘,公式如(4)所示:
(4)
输出门将细胞态中的信息选择性地进行输出,公式如(5)所示:
(5)
上述三个公式中,
、
、
是待训练参数矩阵,
、
和
是待训练偏置项。
为sigmoid激活函数,它可以使门限的范围在0到1之间。
细胞态
表示长期记忆,它等于上个时刻的长期记忆
通过遗忘门的值和当前时刻归纳出的新知识
通过输入门的值之和。细胞态
的表达式如公式(6)所示:
(6)
上式中,第一项
表示留存在脑中的对过去的记忆,第二项
表示即将存入脑中的现在的记忆(包括当前的输入和上一时刻短期记忆的留存)乘以输入门。两者一同存储为长期记忆。
定义
为记忆体,它表示短期记忆,是当前细胞态经过输出门得到的,属于长期记忆的一部分。即:留存在脑中的长期记忆通过输出门筛选后的内容,就是记忆体的输出。记忆体
的表达式如公式(7)所示:
(7)
上式中,候选态
表示归纳出的待存入细胞态的新知识,是当前时刻的输入特征
和上个时刻的短期记忆
的函数。候选态
的表达式如公式(8)所示,其中
是待训练参数矩阵,
是待训练偏置项。
(8)
即LSTM表示当前时刻的输入和上一时刻的短期记忆归纳形成即将存入脑中的现在的记忆。
3.3. 模型评价标准
在股价预测模型中,模型评价主要参考预测股价与实际股价的偏离程度[8]。由于股票价格数据通常是连续的数值型数据,因此本文选用均方误差(Mean-Square Error, MSE)、均方根误差(Root Mean Squared Error, RMSE)以及平均绝对误差(Mean Absolute Error, MAE)对参与预测的模型进行评价。
均方误差(Mean-Square Error, MSE)作为一种关键的统计量,用于量化估计量与被估计量之间的差异程度。均方误差表示各数据偏离真实值的距离平方和的平均数,即误差平方和的平均数。MSE的具体计算公式如式(9)所示:
(9)
均方根误差(Root Mean Squared Error, RMSE):也称之为标准误差,是均方误差的算术平方根。引入均方根误差与引入标准差(均方查)的原因是完全一致的,即均方误差的量纲与数据量纲不同,不能直观反映离散程度,故在均方误差上开平方根,得到均方根误差。通常使用均方根误差来衡量观测值与预测值之间的偏差。RMSE的计算公式如式(10)所示:
(10)
平均绝对误差(Mean Absolute Error, MAE):是模型预测值
与样本真实值y之间距离的平均值。平均绝对误差可以避免误差相互抵消的问题,因而可以准确反映实际预测误差的大小。MAE的计算公式如式(11)所示:
(11)
4. 实验及结果分析
4.1. 数据来源
本文以中石油股份2013年6月5日到2023年6月5日的日k线开盘数据作为样本,共获取到2431天交易日数据。该数据集使用tushare模块下载获取。tushare是一个免费、开源的Python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,tushare返回的绝大部分的数据格式都是pandas DataFrame类型,便于进行数据分析和可视化。
4.2. 数据预处理
Figure 1. Time series diagram of stock price after stabilization
图1. 平稳化后股价时间序列图
本文选取交易日数据集当中开盘价的目的是通过使用连续60天的开盘价预测第61天的开盘价。首先将获取到的数据集进行划分,将前2131天的开盘价作为训练集,后300天的开盘价作为测试集。数据集划分过后,使用ADF检验方法对开盘价数据进行平稳性检验,原假设认为序列存在单位根,即序列是非平稳的,检验结果
,即无法拒绝原假设,认为数据处于非平稳状态,因此使用一阶差分方法对数据进行预处理,使其平稳化,从而提高预测的准确性。平稳化后的时间序列图如图1所示。
并且对数据进行归一化,使得送入神经网络的数据分布在0到1之间,目的是保障模型训练过程中梯度稳定传播,维持模型学习的稳定性,防止因数据量级问题致使训练陷入停滞或发散。并且,归一化后的数据有助于提升模型的泛化性能,使其在面对真实股市中未知股价数据时,依然能依据训练所学给出相对合理的预测结果。数据集划分及归一化完成后,分别构建训练集输入特征、训练集标签、测试集输入特征、测试集标签。
4.3. 构建神经网络模型
4.3.1. 构建RNN模型
本文采用包含两层循环计算层的RNN神经网络结构来构建股票价格预测模型。每一层结构设定记忆体的数量为100个,即在每层RNN中都存在100个单元用于处理和存储序列数据中的信息,帮助模型学习股票价格序列的模式。在时间序列数据处理过程中,每一个时间步将本层在该时间步计算得到的隐藏状态传递给下一层,下一层可以基于上一层传递过来的信息继续处理序列中的下一个时间步,从而使得模型能够逐步地对整个股票价格序列进行学习和分析。在Dropout层中,其参数设定为0.1,表示在训练过程中,会随机将该层输入神经元的10%置为0,起到防止过拟合的作用。通过随机丢弃部分神经元,让模型在训练时不过度依赖某些特定的神经元连接,从而增强模型的泛化能力。
4.3.2. 构建LSTM模型
在搭建LSTM神经网络模型时,需要对关键参数与超参数进行设定。其中,参数包含预测步长step,超参数涵盖每层神经元个数units、批量大小batch_size以及迭代次数epoch。
本文所选取参数配置如下:预测步长step设定为60,即模型在处理序列数据时,将以60个时间步长为跨度挖掘数据规律从而实现精准预测;每层神经元个数units确定为50,该数量的神经元能赋予模型恰到好处的复杂度,使其足以从输入数据中提取关键特征并高效转换,助力后续预测任务;批量大小batch_size选定为64,此规模下的样本批量既能确保每次训练时梯度更新的稳定性,又能兼顾训练效率,推动模型朝着最优解稳步迈进;迭代次数epoch取值为100,这一迭代次数既能保障模型充分学习数据蕴含的规律,又能有效规避过拟合风险,维持模型良好的泛化能力。
4.4. 模型预测
Figure 2. Visualization of loss function using RNN model
图2. 使用RNN模型进行损失函数可视化
Figure 3. Visualization of loss function using LSTM model
图3. 使用LSTM模型进行损失函数可视化
损失函数[9]反映了模型在训练数据上的拟合情况。随着训练的进行,通常希望这个损失值逐渐减小。如果损失值持续下降并最终趋于一个较小的值,说明模型在学习数据中的规律,能够较好地拟合训练数据。
本文分别使用RNN模型以及LSTM模型对中石油股份股票价格进行预测,将每个epoch对应的训练和测试的损失函数进行可视化表达,两种模型损失函数可视化结果分别如图2、图3所示。
本文股票预测模型中,训练损失函数表现出下降的趋势,这表明模型通过学习历史股票价格数据,使得预测的股票价格和真实的训练数据中的股票价格之间的差异越来越小。从图中可以看到,两种模型在训练过程中,损失值均越来越小。但是,使用LSTM模型的损失值明显低于RNN模型,这表明模型长序列数据处理能力不同。RNN模型结构简单,在处理长序列数据时存在梯度消失或梯度爆炸的问题,由于股票价格是较长时间跨度的序列,因此RNN难以有效地学习到序列中的长期依赖关系,从而导致预测效果不佳,损失值较高。而LSTM模型通过引入门控机制和记忆单元,能够选择性地保留和更新信息。遗忘门可以决定哪些信息从记忆单元中丢弃,输入门确定新信息的加入,输出门控制输出值。从而使得LSTM能够更好地捕捉长序列中的长期依赖关系,在处理股票价格这种时间序列数据时,可以更好地利用历史价格信息进行更准确的预测,因此损失值更低。
4.5. 模型评价
本文使用MSE均方误差、RMSE均方根误差、MAE平均绝对误差对模型进行评价。RNN模型和LSTM模型的评价指标结果如表1所示。
Table 1. Comparison of evaluation index results between RNN model and LSTM model
表1. RNN模型与LSTM模型的评价指标结果对比
模型 |
MSE |
RMSE |
MAE |
RNN |
0.020023 |
0.141502 |
0.096082 |
LSTM |
0.013458 |
0.116011 |
0.074065 |
从表中可知,将三个指标运用在两个模型的评价中能够更直观地反映模型预测误差的大小。其中,使用LSTM模型预测比使用RNN模型预测的评价指标更小,表明使用LSTM模型预测的股票价值与真实股票价格的预测误差更小,即LSTM模型在整体上能够更准确地逼近真实的股票价格。结合文献[10],从上述结果可知,如果数据具有很强的长期依赖关系,那么LSTM模型在数据预测中的优势相比于RNN模型会更加明显。
股票价格在预测中难度较高,原因是其涉及政策变化,如货币政策、财政政策、行业监管政策等。例如,政府出台鼓励石油行业发展的政策,可能会刺激石油企业股价上涨;而加强环保监管等政策,也可能会对中石油的生产经营产生一定压力,影响股价表现。另外,股票可能受到行业周期的影响,其价格在几年内呈现出规律性的波动,LSTM模型相较于RNN模型,能够更好地捕捉这种长期规律,模型泛化能力更强,从而在评价指标上表现更好。因此,使用LSTM模型对中国石油股票价格的预测效果较好。
5. 总结
本文使用RNN模型和LSTM模型预测中石油股价,通过对两者模型预测损失函数以及评价指标的对比来进行研究和分析。
本文最初采用RNN模型进行中石油股价预测,实证分析发现该模型预测时序数据效果欠佳,即RNN模型在处理长序列数据时存在梯度消失或梯度爆炸的问题。在股票价格预测中,股票价格序列往往具有复杂的时间序列特性,包含长期趋势、季节性变化等。当预测这种长序列数据时,在反向传播过程中随着时间步的增加,梯度会随着时间步的增加而呈指数级减小或增大。这就导致RNN难以有效地学习到股票价格序列中的长期依赖关系。鉴于此模型的不足,本文使用LSTM模型来对股票价格进行进一步预测。LSTM模型通过引入输入门、遗忘门和输出门来解决RNN模型中长期依赖的问题。这种机制使得LSTM模型能够有选择地记住或遗忘信息,从而更好地处理长序列数据中的长期依赖关系。实验结果显示,LSTM模型能更为准确地模拟股价的真实趋势,且其均方误差、均方根误差以及平均绝对误差指标均优于RNN模型,证明多元LSTM模型在预测中石油股价方面的效果更优,更适用于进行股票预测行为。