1. 引言
随着我国经济的高速发展,股票市场的价格走势已经成为公众关注的焦点。股票价格不仅反映了市场的实时变化,还受到众多经济和政策等因素的影响[1] [2]。因此,如何准确预测股票价格,获得更科学的投资决策,已成为投资者和研究者亟待解决的问题。
为了实现更精确的股票价格预测,基于机器学习的预测方法逐渐被广泛应用。特别是人工神经网络,尤其是反向传播(BP)神经网络,凭借其在非线性关系建模方面的优势,已被证明在股票预测中具有显著的实用性和预测精度[3] [4]。然而,随着时间序列数据的复杂性和高波动性,BP神经网络在某些情况下可能面临不足,因此,具有时间序列特征的股票数据分析常常需要结合更加先进的技术。
本文将基于循环神经网络(RNN),特别是长短时记忆(LSTM)网络,来对股票价格进行深入分析。RNN和LSTM模型具有较强的时间序列数据建模能力,能够处理股票市场中的时序依赖关系,对于股票价格预测和趋势分析具有极大的潜力。通过对历史股票数据的学习,结合技术指标的可视化分析,本文不仅能够帮助预测短期的股票价格变化,还能提供长期趋势的预判,为投资者提供更具前瞻性的决策依据。
具体而言,本研究将股票的历史价格数据和技术指标输入神经网络模型中,通过训练和优化得到更准确的预测结果。此外,本文还将探索股票市场中的潜在模式和规律,通过对比实际走势与模型预测结果,评估网络模型的预测能力与实际应用效果。
通过这种基于RNN的股票价格预测方法,投资者将能够更有效地理解市场变化,并做出更加合理的投资决策。同时,本文的研究成果也为机器学习在金融领域中的应用提供了新的思路和技术支持,具有重要的理论价值和实践意义。
2. 循环神经网络
在深度学习以及自然语言处理领域,理解和捕捉时间序列及文本序列中的长期依赖关系是一项具有挑战性的任务。循环神经网络(RNN)因其能够有效地记忆序列中的历史信息,并将其应用于当前时刻的计算,成为解决这一问题的强大模型[5] [6]。在下文中,将深入介绍循环神经网络的原理,探讨其在捕捉序列数据中长期依赖关系方面的优势。
2.1. 递归神经网络
递归神经网络(RNN)的关键在于它可以处理顺序数据并在时间步骤之间共享信息。每个时间步骤接收当前输入并依赖于前一个时间步骤的隐藏状态,从而形成了一个循环结构。这可以捕获时间序列中的相关性,下面我们将深入介绍其工作原理。
RNN的基本结构如下,见图1:
1) 输入层:在每个时间步t,RNN接受一个输入向量
。
2) 隐藏层:在每个时间步t,RNN会计算隐藏层状态
,使用上一时间步的隐藏状态
以及当前的输入
来计算当前的隐藏状态。
3) 输出层:RNN根据隐藏层的状态
生成输出
。
隐藏状态
可以用以下公式表示:
(1)
(2)
其中
是隐藏状态到输出的权重矩阵,
是输出的偏置。
Figure 1. RNN working principle diagram
图1. 递归神经网络工作原理图
2.2. 长短时记忆网络
由于传统的RNN在捕捉长期依赖关系时效果较差。为了克服这个问题,研究者提出了长短时记忆网络(LSTM)和门控循环单元(GRU)等变体,它们能够更有效地捕捉长时间跨度的依赖关系。下面我们将介绍LSTM的工作原理,见图2。
LSTM在传统RNN的基础上进行了一些改进,它通过设计几个门来控制信息的流动:
1) 遗忘门:根据当前输入和上一时刻的隐藏状态,决定遗忘多少记忆(细胞状态)。它的输出
是一个0到1之间的数值向量,表示每个元素的遗忘比例。公式如下:
(3)
(4)
(5)
(6)
其中
是更新门的权重矩阵,
是候选单元状态的权重矩阵,
是更新门的偏置向量,
是候选单元状态的偏置向量,
是当前时刻的单元状态。
Figure 2. LSTM working principle diagram
图2. 长短时记忆网络工作原理图
(7)
其中
是输出门的权重矩阵,
是输出门的偏置向量,
是输出门输出。
最终,计算当前时刻的隐藏状态和输出,公式如下:
(8)
(9)
这些方程描述了LSTM中各个门控单元和记忆单元的计算过程,长短时记忆网络(LSTM)相比传统递归神经网络(RNN)在结构上的主要优势体现在引入了丰富且功能完备的门控单元。通过这些门的控制,LSTM使得模型能够保留有关时间序列中长期依赖关系的重要信息,同时有效地抑制无关信息。
3. LSTM模型股票预测
3.1. 数据来源
为了确保本实验的数据来源具有高度的准确性和权威性,所有使用的实验数据均来自于广受认可的宏观经济与金融数据平台http://macrotrends.net/。本次研究的对象为Tesla的股票数据,时间范围覆盖了2018年1月1日至2025年1月7日的每日数据。这一时间段内,特斯拉经历了从初创阶段到成为全球领先的电动车制造商的转变,市场表现经历了显著的波动与成长。因此,选择这一时间范围的数据可以帮助我们更全面地分析特斯拉股价的历史趋势。
3.2. 数据处理
由于Tesla股票数据具有较大的波动范围,因此本文使用最大最小归一化方法,将数据缩放到0到1的区间,这样做能够有效减少数据中不同特征值之间的差异,避免由于某些特征的数值较大或较小而对模型训练结果产生偏差,确保模型更好地适应不同范围的数据。
通过Pandas库中info()对数据进行缺失值检查,箱线图可视化数据的分布情况并通过3倍标准差规则来检测异常值。根据该规则,任何超过均值3倍标准差的值都被视为异常值。最终,经过分析,确认收盘价中并不存在缺失值和异常值。
在数据集的划分上,本文采用了常见的75%用于训练,25%用于测试的比例。训练集包含了前75%的收盘价(Close)数据用于模型的学习和训练,测试集则包含剩余25%的收盘价(Close)数据用于验证模型的准确性和泛化能力。
考虑到LSTM模型对时间序列的预测依赖于过去数据的趋势和周期性特征,因此本文采用了滑动窗口技术,其中时间步长设置为60。这意味着,训练样本的输入数据将包含过去60天的股价数据,模型基于这些数据来预测下一天的股价。通过这样的方式,LSTM能够学习并捕捉到时间序列数据的长期依赖性,从而提高预测的准确性和可靠性。
3.3. 模型结构
本论文的模型图3展示了一个基于Keras的Sequential模型,具体结构如下:
1) 第一层:LSTM层,该层包含50个神经元,并输出每个时间步的隐藏状态。为了防止过拟合,接着使用了Dropout层,该层随机丢弃20%的神经元,从而增强模型的泛化能力。
2) 第二层:LSTM层,该层包含50个神经元,仅输出最后一个时间步的隐藏状态。并再次使用D-ropout丢弃20%的神经元。
3) 第三层:Dense层,该层包含一个神经元,用于输出最终的预测结果,即股票预测的收盘价。
该模型通过Adam优化器和均方误差(MSE)损失函数进行训练。为了避免过拟合,模型采用了EarlyStopping回调函数,监控测试集的损失值,若测试集损失在连续10个epoch内没有下降,训练将提前停止。通过这种方式,模型能够恢复到验证集损失最小时的最佳权重,从而防止在训练过程中出现过拟合现象,确保模型在测试集上的表现更加稳健。
4. 实验分析
4.1. 实验环境
代码采用Python语言编写,主要使用的框架为Tensorflow2.2.0集成的Keras框架。采用单步预测,将股票数据(
)时间序列的价格用于预测当前时间(t)的股票价格,其中时间步长设置为60的持续滚动过程。
Figure 3. Model structure diagram
图3. 模型结构图
4.2. 模型可视化
在股票预测中,我们选择了相对强弱指数(RSI)、布林带(Bollinger Bands)和阿隆振荡器(Aroon Oscillator)作为关键技术指标。这些指标各自具有独特的功能,有助于我们更全面地分析和预测股票市场的动态。
RSI主要用于评估股票是否处于超买或超卖状态,从而帮助投资者识别潜在的价格反转。RSI的值通常在0至100之间波动,当其超过70时,通常表示超买状态,而低于30则意味着超卖状态。
Bollinger Band由三条线组成,分别是中间的移动平均线以及上下两条波动范围线。通过观察价格是否突破布林带的上下边界,我们能够判断当前的趋势强度,若股价突破上轨,则可能意味着上涨趋势强劲;反之,突破下轨则可能表明下行压力加大。
Aroon Oscillator则是一种衡量趋势强度和方向的工具。它通过计算价格在特定周期内的最高点和最低点,帮助预测趋势的转变。阿隆振荡器的数值变化可以提供关于趋势是否接近反转的早期信号,从而对投资者的决策具有重要参考意义。
这些技术指标各自侧重于不同的市场动态和趋势,通过将它们综合起来使用,我们能够捕捉到更多的市场信号,进而提高预测的准确性。在此基础上,我们将这些技术指标作为输入特征加入到LSTM模型中,从而增强模型的预测能力。
为了进一步验证我们提出的模型的有效性和先进性,我们将先与传统的支持向量机(SUV)模型进行比较,通过这样的对比,我们能够展示结合多种技术指标和LSTM模型的优势,并最终选择出最优的预测模型。
4.2.1. SUV模型可视化
为了评估模型的预测性能,我们使用RMSE和
量化预测误差。预测图像见图4。
(10)
(11)
Figure 4. SUV model stock price prediction
图4. 支持向量机模型预测图
4.2.2. LSTM模型可视化分析
首先我们使用未带技术指标模型的预测性能,使用RMSE和
量化预测误差。发现模型在大多数情况下能够较为准确地预测股票价格。
(12)
(13)
图5是一个展示LSTM模型在特斯拉股票收盘价格预测的折线图。具体而言,它包含了训练数据集、测试数据集和预测结果的可视化。图中的第一条线表示训练集的实际收盘价格数据,帮助我们了解模型训练时使用的实际数据变化趋势。图中的第二条线表示测试集的实际收盘价格数据,图中的第三条线表示模型在测试集上进行的预测结果。
Figure 5. Tesla close stock price prediction
图5. 特斯拉股票收盘价的预测图
为了预测未来30天的股票走势,LSTM模型通过训练历史数据,学习了股票价格的时间序列模式。基于这一模式,模型能够在给定的测试数据基础上进行预测,进而推测未来30天的股票价格变化图6。这些预测值反映了未来一段时间内股票价格的可能走势。
Figure 6. Tesla stock closing price trend in the next 30 days
图6. 未来30天特斯拉股票收盘价走向
接着我们计算了特斯拉股票的50日和200日移动平均线,并将它们与收盘价一起绘制在图7。50日移动平均线表示过去50天内的股票收盘价的平均值。它能够反映出股票价格在短期内的整体趋势。一般来说,50日均线可以帮助识别股票价格的短期波动趋势。而200日移动平均线表示过去200天内的股票收盘价的平均值,反映了更长期的趋势。200日均线通常被用来衡量股票的长期走势,能够较好地平滑掉短期波动。
Figure 7. Tesla stock closing price versus 50-day and 200-day moving averages
图7. 特斯拉股票收盘价与50日和200日移动平均线股票
4.2.3. 技术指标可视化分析
我们选择了相对强弱指数(RSI)、布林带(Bollinger Bands)和阿隆振荡器(Aroon Oscillator)作为技术指标,并通过可视化分析来理解每个指标的作用。RSI用于评估股票是否处于超买或超卖状态,Bollinger Bands用于判断当前趋势是否强劲,Aroon Oscillator可以提前显示趋势的转变。
这三个指标分别聚焦于不同的市场动态和趋势,结合使用能够提供更为全面的市场信号,进而提升预测能力。因此,我们将这些技术指标作为输入特征加入LSTM模型中,最终通过对比选择出最优的预测模型,以实现更准确的股票预测。
我们通过计算并可视化特斯拉股票14日RSI,并绘制RSI图,图8帮助分析股票的市场状态,
股票被认为处于超买状态,可能会出现价格回调。
被认为处于超卖状态,可能会有反弹。通过这些技术指标,投资者可以更好地评估股票的短期走势,并做出更加明智的投资决策。
Figure 8. RSIs
图8. 相对强弱指数
通过计算并绘制布林带,分析股票的价格波动情况和趋势。我们发现当价格接近上轨时,股票可能被视为超买;当价格接近下轨时,可能被视为超卖。从图9我们发现价格从2018年到2025年整体呈上升趋势,但存在多次波动的高峰和低谷。在价格上涨上升的时期(如2021年初和2024年末),收盘价格显着突破上轨线,表明市场可能进入超买区域。在价格初步下跌的时期(例如2022年),收盘价接近或突破下轨线,表明市场可能进入超卖区域。
Figure 9. Bollinger bands with close price
图9. 布林线收盘价
通过计算分析Aroon Oscillator的值(振荡器),这是由Aroon Up和Aroon Down之间的差值计算得到的,代表市场的趋势强度和方向性。靠近100表明市场处于上升趋势,近期高点更接近。靠近−100表明市场处于下降趋势,近期低点更接近。接近0表示市场可能处于横盘震荡或没有明显趋势。
我们可以从图10发现从2018年到2025年,收盘价经历了几个主要的上涨和回调阶段。2021年到2022年出现了较大幅度的波动,到2025年初,股票价格再度达到新高,说明近期价格处于强势上升趋势。
Figure 10. Aroon oscillator value
图10. 阿隆振荡器值
在价格趋势中,当Oscillator在接近100的区域徘徊时,通常对应价格上涨(如2021年初和2024年底到2025年初),当Oscillator靠近−100时,通常对应价格下跌(如2022年中),Oscillator在零附近震荡的时间段(如2018年至2019年),对应价格横盘整理或波动幅度较小。
Oscillator值的变化可以帮助投资者判断进场和出场的时机。Oscillator快速从负值转向正值时可能是买入机会。Oscillator从正值跌破0或靠近−100时,可能提示市场疲软或卖出机会。
通过将RSI和Bollinger Bands结合,我们发现测试集上的RMSE和
如下,预测图像图11。
(14)
(15)
Figure 11. Stock price prediction with technical indicators RSI and Bollinger bands
图11. 使用相对强弱指数和布林带技术指标进行股价预测
通过将RSI和Aroon Oscillator结合,我们发现测试集上的RMSE和
如下,预测图像图12。
(16)
(17)
通过将Bollinger Bands和Aroon Oscillator结合,我们发现测试集上的RMSE和
如下,预测图像图13。
(18)
(19)
Figure 12. Stock price prediction with technical indicators RSI and Aroon oscillator
图12. 使用相对强弱指数和阿隆振荡器技术指标进行股价预测
Figure 13. Stock price prediction with technical indicators Bollinger bands and Aroon oscillator
图13. 使用布林带和阿隆振荡器技术指标进行股价预测
Figure 14. Stock price prediction with RSI, Bollinger bands and Aroon oscillator
图14. 使用相对强弱指数,布林带和阿隆振荡器进行股价预测
最后将RSI,Aroon Oscillator和Bollinger Bands结合,我们发现测试集上的RMSE和
如下,预测图像图14。
(20)
(21)
通过上面的可视化分析和模型指标量化分析,我们可以得出使用相对强弱指数,布林带和阿隆振荡器三者结合进行的股价预测是最优的。这一组合策略的成功应用不仅验证了RSI、Aroon Oscillator和Bollinger Bands在金融市场分析中的重要性,还表明这些指标相互补充,能够提供更加全面和精准的市场趋势判断。整体而言,这个模型展现了在金融预测领域的强大潜力和可靠性,是目前测试集上表现最好的模型。
基金项目
国家自然科学基金项目(72171126),青岛大学“系统科学+”联合攻关项目(XT2024301)。