1. 引言
股票市场一直是人们广泛关注的话题之一。许多个人投资者、机构投资者和分析师希望能够准确预测股票价格的走势,以做出明智的投资决策。
然而,股票市场的价格变化受到诸多因素的影响,这使得股票价格的预测变得极为复杂和困难。传统的统计模型和方法往往无法充分捕捉到这些复杂的非线性关系和动态变化。随着计算机技术的发展,深度学习技术在股票价格预测领域取得了巨大进展。传统的机械学习方法如决策树、逻辑回归、随机森林和支持向量机(SVM)等在股票价格预测中被广泛应用。然而,现代机器学习中的神经网络模型在处理多种影响因素和复杂非线性问题时相对传统的机械学习方法具有优势。因此,越来越多的学者开始使用神经网络模型来预测股票价格。其中,基于长短期时间记忆(LSTM)和门控循环单元(GRU)的模型备受关注。LSTM和GRU都能更好地捕捉时间序列数据中的长期依赖关系和非线性关系,避免了标准RNN中梯度爆炸和梯度消失的问题,这些模型通过学习历史股价的模式和趋势来预测未来价格的变化趋势,由于考虑多个时间步长的信息,利用之前的价格和相关指标来预测未来走势,因此提高了预测的准确性。
本研究旨在探讨利用LSTM和GRU模型进行股价预测的可行性和有效性。本文将使用光大银行2015年1月5日到2023年6月30日的历史数据,构建和训练LSTM和GRU模型,并通过对比实验结果和评估指标,评估它们在股价预测任务上的性能表现。通过对LSTM和GRU模型在股价预测中的研究,本文希望为金融市场的参与者和研究者提供有益的见解和指导,并促进深度学习在金融领域的应用和发展。
2. 文献综述
传统股票价格预测方法包括VAR、ARIMA和GARCH模型等。赵宁 [1] (2021)通过结合技术指标和ARIMA模型成功预测了万科公司股票收盘价走势,说明该方法适用于股票预测。王星慧等 [2] (2023)使用GARCH模型平均(MA)方法,在收益序列中引入非线性分位数回归模型,并提出了固定形式和非固定形式的非线性分位数回归方法(QR + GARCH族MA和QRNN + GARCH族MA)来测度多期VaR和CVaR风险。研究结果发现,QRNN + GARCH族MA方法在多期VaR和CVaR风险测度中表现出更高的准确性和稳健性,为GARCH模型测度VAR值提供了新思路。
然而,由于股票数据的非线性性和干扰因素的影响,传统线性模型在处理股票数据时存在局限性。因此,学者们尝试引入非线性模型,如支持向量机(SVM)和神经网络等方法,并成功应用于预测股票。在1988年,White已经利用BP神经网络预测IBM股票,但由于BP神经网络的局限性(优化方法缺乏全局性、学习速度慢、难以保证最优解等问题),其预测效果不理想。尽管BP神经网络存在局限性,且受主观因素的影响较大,但仍有许多学者采用其他方法进行股价预测。例如,张玉川和张作泉 [3] (2007)使用多个技术指标作为数据支持进行股价预测,而张晨希等 [4] (2006)在解决较大数据集求解二次优化时发现支持向量机存在一定的局限性。支持向量机在二分类问题上表现出色,但在多类别问题中仍有改进的空间。通过结合其他相关算法、改进SVM算法或应用集成学习和深度学习方法,可以进一步提高支持向量机在多类别问题中的预测性能。
近年来,随着深度学习的发展,神经网络模型在各个领域得到广泛应用。在处理时间序列数据的预测任务中,常用的神经网络模型包括MLP神经网络模型、CNN模型、RNN模型、LSTM模型和GRU模型。乔若羽 [5] (2019)发现,在处理时间序列任务时,相对于MLP和CNN,递归神经网络具有更好的性能。RNN广泛应用于序列数据分析和预测,但由于梯度消失和梯度爆炸问题,处理长期记忆任务时存在困难。因此,近年来广泛使用LSTM模型。李洁和林永峰 [6] (2019)的研究表明,LSTM递归神经网络能够有效处理和预测时间跨度较长的数据,在许多领域取得显著成果。Gers等人在1999年引入了遗忘门机制,提出了三门控模型,包括遗忘门、输入门和输出门,这些门控机制帮助LSTM模型处理序列数据中的长期依赖关系。于孝建等 [7] (2013)在LSTM模型中加入了市场情绪特征,进一步提高了LSTM模型的准确度和精准性,对LSTM模型预测股价变化提供了新思路。而其他人则在LSTM模型本身的基础上进行改进,丛敬奇等 [8] (2023)构建了一种CEEMD-CNN-LSTM模型,将补集成经验模态分解(CEEMD),卷积神经网络(CNN)与长短期记忆网络(LSTM)结合在一起,提高了股票预测的准确性,将神经网络学习的各模型的优点结合在一起,进一步预测股价。
3. 相关理论和模型介绍
3.1. 长短期时间记忆(LSTM)
LSTM (长短期记忆网络)是RNN (循环神经网络)的一种变体,用于处理序列数据和时间序列数据的建模和预测任务。相对于传统的RNN,LSTM通过引入特殊的门控机制来解决梯度消失和梯度爆炸等问题,从而更有效地捕捉到长期依赖性。
LSTM的核心思想是引入三个特殊的门控机制来控制信息的流动和记忆的选择性。这三个门控机制分别是遗忘门(
)、输入门(
)和输出门(
)。这些门控机制使得LSTM具备了记忆和选择性更新细胞状态的能力,使网络可以更好地学习和适应时间序列数据中的模式和趋势。通过这种特殊的门控机制,LSTM可以在训练过程中自主学习和优化每个门的参数,以适应不同的序列数据。这使得LSTM在处理时间序列数据时表现出色,并被广泛应用于股价预测、自然语言处理、语音识别等领域的任务中。
LSTM的结构如图1所示。
遗忘门(
):遗忘门用于确定哪些信息应该被丢弃或保留。它接收来自前一个隐藏状态和当前输入的信息,并通过一个sigmoid函数输出一个介于0和1之间的值。这个值与每个细胞状态中的信息相关,接近0的值表示应该丢弃该信息,接近1的值表示应该保留该信息。
其公式是:
遗忘门的输入信息由两部分组成,分别是
,
,它将
与
先拼接,拼接以后再与
相乘,之后加上一个偏置
,最后经过一个sigmoid激活函数,这个sigmoid函数的作用是将线性变换后的
的取值变为为(0,1),这个值决定了
的值表示记忆程度或遗忘程度。
输入门(
):用于更新细胞状态,包含以下几个步骤:首先,输入门接收来自前一个隐藏状态和当前输入的信息,然后经过sigmoid函数进行处理。这个sigmoid函数的输出值被调整到0到1之间,用于确定哪些信息应该被更新。当输出接近0时,表示相应的信息是不重要的,而输出接近1时,表示该信息是重要的。
其次,前一个隐藏状态和当前输入的信息同时传递到tanh函数中,生成一个包含关于当前输入的新信息的候选值向量。tanh函数的输出值在−1到1之间。最后,通过将tanh函数的输出值与sigmoid函数的输出值相乘,决定哪些信息是重要的并需要被保留。如果sigmoid函数的输出接近0,那么相应的值将被忽略,不会对细胞状态产生影响;反之,如果sigmoid函数的输出接近1,那么相应的值将被保留。
这个机制允许LSTM模型根据输入和前一个隐藏状态的信息来更新细胞状态。通过使用输入门和tanh函数的组合,LSTM可以选择性地记忆或遗忘特定的信息,从而实现对重要上下文信息的捕捉和长期依赖的建模。
其公式是:
其中,
决定着
的遗忘能力,
是LSTM需要记忆的新的值。
将
遗忘剩余的部分,与新的要记忆的部分
相加,就得到要输出的
,其公式为:
输出门(
):输出门用于确定下一个隐藏状态的值以及包含先前输入信息的隐藏状态。首先,前一个隐藏状态和当前输入经过sigmoid函数处理,计算出输出门的输出。接着,新计算得到的细胞状态经过tanh函数处理。最后,tanh函数的输出与sigmoid函数的输出相乘,以确定隐藏状态所携带的信息。隐藏状态被用作当前细胞的输出,并将新的细胞状态和隐藏状态传递到下一个时间步长中。
其公式为:
3.2. 门控制循环单元(GRU)
GRU (门控循环单元)是一种常用的网络结构,与长短期时间记忆(LSTM)功能几乎相似。它将遗忘门和输入门合并为一个更新门,同时混合了细胞状态和隐藏状态,并进行了其他一些改动。相较于LSTM的三个控制门,GRU只有两个门结构,分别是重置门和更新门。重置门控制是否重置之前的状态,即控制遗忘程度,用来决定多大程度上忘记之前的信息。更新门表示多大程度上使用候选信息来更新当前的隐藏状态,以捕捉输入的新信息。GRU的结构如图2所示,它在结构上相对简单,但仍然具备强大的表达能力。通过合并门结构和隐藏状态的信息流动,GRU可以在处理序列数据时适应长期依赖关系,并且相对于LSTM有更少的参数需要学习。
其公式是:
图中的
和
分别表示更新门和重置门。更新门确定前一时刻的状态信息对当前状态的影响程度。较大的更新门值表示前一时刻的状态信息会更多地传递到当前状态中。而重置门用于决定前一时刻的状态中有多少信息被写入当前的候选集中。较小的重置门值表示前一时刻的状态信息会较少地写入到当前状态中。
GRU的基本原理是:首先,引入
和
生成两个门结构,用重置门通过与上一时刻的状态相乘,控制是否要重置以及需要重置的程度;然后,当前输人的x会与重置门的输出进行拼接,并经过一个经过tanh函数激活的网络变换,生成候选信息的隐含变量
;最后,将上一时刻的
和候选信息
做一个线性组合,两者的权重之和为1,候选信息的权重即为更新门的输出,表示需要更新信息的大小。
LSTM和GRU在功能上有一些相似之处,但也存在一些不同之处。LSTM的遗忘门与GRU的重置门功能类似,它们都控制前一时刻状态的遗忘程度或重置程度。而LSTM的输入门则与GRU的更新门功能相似,它们都决定多大程度上使用候选信息来更新当前状态。不过,LSTM相对于GRU有一个额外的控制门,即输出门,用于控制当前状态的输出。
相对于LSTM而言,GRU模型具有更少的参数,更容易训练,并且结构相对简单。这也是本文选择这两个模型进行评价和预测比较的原因之一。使用GRU模型可以在减少计算负担的同时,实现相当的性能和准确度。这使得GRU成为一个在许多序列建模任务中广泛应用的选择。
4. 实证研究
4.1. 数据选取
本文使用了东方财富的数据作为数据来源,其中选择了一只随机抽取的A股股票,即光大银行(股票代码601818)。数据集包含了10列数据,包括日期(trade_date)、开盘价(open)、最高价(high)、最低价(low)、收盘价(close)、前一天的成交价(pre_close)、涨跌值(change)、收益率百分比变化(pct_chg)、成交量(volume)和成交金额(amount)。这些数据记录了从2015年1月5日至2023年6月30日的股票数据,共计2054条数据。在本文中,将光大银行的股票数据集的前80%作为训练集用于模型训练,剩下的20%则用作测试集来验证模型的泛化能力。
在构建预测模型之前,对原始数据进行了预处理。首先,对数据按照时间进行排序。由于各个指标变量之间存在量纲上的差异,需要对它们进行统一的量纲处理。本文选择了归一化的方法,采用了min-max标准化,将指标数据的值映射到区间[0, 1]之间。这样可以消除不同指标之间的尺度差异,为后续的模型建立提供一致的数据输入。转化函数公司如下:
其中,
为样本的最大值,
为样本的最小值,
为需要被标准化处理的原始值。在进行归一化处理后,为了确保模型预测结果与原始数据保持相同的量纲,需要进行反归一化处理,具体的反归一化转换函数如下:
其中,
是模型输出的原始数据,
是原始数据进行反归一化后的数据。
4.2. 模型评估标准
为了对训练后的模型在测试集上进行性能评估,本文选择了三个常用的深度学习评估指标,即平均绝对误差(MAE)、均方根误差(RMSE)和平均绝对百分比误差(MAPE)。通过使用这三个评估指标,可以全面评估模型在测试集上的性能表现,了解预测结果的准确性和拟合效果。这些指标的值越小,表示模型在测试集上的性能越好。
平均绝对误差计算公式为:
均方根误差计算公式为:
平均绝对百分比误差计算公式为:
其中,
表示真实值,
表示预测值,n表示值的个数。
4.3. 模型训练及结果对比分析
4.3.1. LSTM模型
该模型下平均绝对误差(MAE)为0.12046552099194613,均方根误差(RMSE)为0.1772226347676657,平均绝对百分比误差(MAPE)为2.6276476071219093。
4.3.2. GRU模型
该模型下平均绝对误差(MAE)为0.08697603444506105,均方根误差(RMSE)为0.13067548475327212,平均绝对百分比误差(MAPE)为1.9226223886380536。图3、图4表示股票真实值与预测值的对比折线(蓝色线条为股票真实开盘价,红色线条为模型预测价格)。
通过股票真实值与预测值的对比折线图可知,拟合效果优劣为:LSTM < GRU。
通过查看模型的误差值来看,误差由大到小为:GRU < LSTM。
通过对模型的结果分析,可明显得出的三个模型的拟合效果优劣为:LSTM < GRU,即GRU模型的拟合效果更好。
5. 结论
本文使用了LSTM和GRU模型对股票的收盘价进行了预测研究。这两个模型都可以学习历史数据中包含的信息,但它们对历史数据的学习效果有所不同。根据结果显示,GRU模型在对股票价格的拟合效果上相对于LSTM模型表现更优。这表明GRU模型能更准确地预测股票的收盘价,并提供更高的预测精度。可能是因为GRU模型在处理时间序列数据时更灵活且适应性更强,能更好地捕捉和利用时间序列的模式和关联性。
这些结果为投资者提供一定的依据和参考,使他们能更明智地运用这些模型来预测股票价格。然而,股票市场是复杂且多变的,单一的预测模型可能无法涵盖所有情况。因此,投资者在做出股票投资决策时仍需综合考虑其他因素和指标,以及行业和市场的整体状况,以提高决策的准确性。