基于LSTM、RNN及滑动窗口CNN模型的股票价格预测

 

Abstract

原文:Stock price prediction using LSTM, RNN and CNN-sliding window model

股票市场或股票市场对当今经济产生深远影响。股价的上涨或者下跌对投资者的收益具有重要的决定作用。现有的预测方法使用线性(AR,MA,ARIMA)和非线性算法(ARCH,GARCH,神经网络),但它们侧重于使用每日结算预测单个公司的股票指数变动或价格预测 价钱。 所提出的方法是独立于模型的方法。 在这里,我们不是将数据拟合到特定模型,而是使用深度学习架构来识别数据中存在的潜在动态。 在这项工作中,我们使用三种不同的深度学习架构来预测NSE上市公司的价格,并比较它们的表现。 我们正在应用滑动窗口方法来短期预测未来值。最后使用百分比误差去量化模型的性能。

1.Introduction

预测问题可以定义为通过分析历史数据进行对未来事件的预测与分析。它涵盖了许多领域,包括工商业、经济学、环境科学和金融等。 预测问题可归类为

•短期预测(预测几秒,几分钟,几天,几周或几个月)

•中期预测(预测1至2年)

•长期预测(预测超过2年)

许多预测问题涉及时间分析。时间序列数据可以定义为所选变量的时间顺序的观察序列。 在我们的例子中,变量是股票价格。它可以是单变量或者多变量。 单变量数据仅包括一个特定的股票信息,而多变量数据包括不同时间的多个公司的股票价格。时间序列数据分析有助于识别数据中存在的模式、趋势或者周期。 在股票市场中,尽早的了解股票看涨或者看跌模式有助于明智地进行风险投资。此外,模式分析有助于确定在特定时期内表现最佳的公司。这使得时间序列分析和预测成为一个重要的研究领域。

现有的股票价格预测方法可分为以下几种[1]

•基本面分析

•技术分析

•时间序列预测

基本面分析是一种投资分析,通过分析其销售额、收益、利润和其他经济因素来估算公司的股票价值,此方法最适合做股票的长期预测。技术分析使用股票的历史价格来确定未来价格。 移动平均线是一种常用的技术分析算法。它可以被认为是过去n个数据点的未加权平均值。该方法适用于短期预测。第三种方法是分析时间序列数据。它基本上涉及两类算法,它们是

•线性模型

•非线性模型

不同的线性模型有AR、ARMA、ARIMA及其变体[2] [3] [4]。 这些模型使用一些预定义的方程来将数学模型拟合到单变量时间序列。这些模型的主要缺点是,它们不能解释数据中存在的潜在动态。由于他们只考虑单变量时间序列,因此这些模型不能识别各种股票之间的相互依赖关系。同时,为一个系列确定的模型也不适合另一个。 由于这些原因,不可能识别整个数据中存在的模式或动态。

非线性模型涉及ARCH,GARCH,[3] TAR,深度学习算法[5]等方法。在[6]中,对NIFTY 50中列出的29家选定公司的股票价格和库存量之间的依赖性进行了分析。 这项工作主要集中在深度学习算法在股票价格预测中的应用[7] [8]。 深度神经网络可以被认为是能够映射非线性函数的非线性函数逼近器。 基于应用类型,使用各种类型的深度神经网络架构。 这些包括多层感知器(MLP),递归神经网络(RNN),长期短期记忆(LSTM),CNN(卷积神经网络)等[9]。它们已经应用于图像处理,自然语言等各个领域。 处理,时间序列分析等。深度学习算法能够通过自学习过程识别数据中的隐藏模式和潜在动态。

在股票市场的情况下,产生的数据是巨大的并且是高度非线性的。 为了模拟这种动态数据,我们需要能够分析隐藏模式和潜在动态的模型。 深度学习算法能够通过自学习过程识别和利用数据中存在的交互和模式。 与其他算法不同,深度学习模型可以有效地模拟这些类型的数据,并且可以通过分析数据中的交互和隐藏模式来提供良好的预测。 在[5]中,我们可以看到各种深度学习模型在多变量时间序列分析中的应用。 [10]中介绍了使用神经网络模型对金融时间序列建模的第一次尝试。 这项工作试图模拟神经网络模型,以解码IBM资产价格变动的非线性规律。 然而,工作范围有限,但它有助于建立针对EMH的证据[11]。

使用NN模型的金融时间序列分析领域的研究使用不同的输入变量来预测股票收益。 在一些工作中,来自单个时间序列的数据被用作输入[10],[8]。 某些作品考虑了包含异构市场信息和宏观经济变量。 在[12]中,引入了金融时间序列分析和NLP的组合。 在[13]和[7]中,深度学习架构已被用于多元金融时间序列的建模。 在[14]中,已经实施了一个使用技术分析变量的NN模型来预测上海股市。 该工作比较了两种学习算法和两种权重初始化方法的性能。 结果表明,通过多重线性回归权重初始化的共轭梯度学习可以提高反向传播的效率。

1996年,[15]使用反向传播和RNN模型来预测五个不同股票市场的股票指数。在[16]中,引入了时间延迟,循环和概率神经网络模型的应用,用于每日股票预测。在[17]中,PSO和LS-SVM等机器学习算法的应用已被用于标准普尔500股票市场的预测。 [18]中介绍了遗传算法和神经网络模型的实现。该工作结合了遗传算法和人工神经网络在预测中的应用。在这项工作中,NN的权重是从遗传算法中获得的。然而,该模型的预测精度很低。在[19]中介绍了小波变换在预测中的应用。该工作使用小波变换来描述股票趋势中的短期特征。随着LSTM [20]的引入,对时间相关数据的分析变得更加有效。这些类型的网络具有保存过去信息的能力。它们已被用于股票价格预测[8],[7]。

该方法的重点是预测NSE(国家证券交易所)上市公司的股票价格。我们采用的方法是数据重叠的滑动窗口方法。 该数据集包含NSE上市公司的分钟数据。 在这里,我们试图获得用于预测目的的通用模型,其可以使用分钟数据作为输入。 这种建模在算法交易中具有应用,其中发生高频交易。

本文的结构如下[II]部分解释了所提出的方法。结果和讨论见第[III]节,第[IV]节包括结论。

Methodology

该数据集包括2014年7月至2015年6月期间1721家NSE上市公司的分钟股票价格。它包括日戳,时间戳,交易ID,股票价格和每分钟售出的股票数量等信息。 对于这项工作,我们选择了两个不同的部门,IT部门和制药部门。 来自IT部门的两家公司和一家来自制药行业的公司参加了这项研究。 这些公司是在NIFTY-IT指数和NIFTY-Pharma指数的帮助下确定的。 这三家公司的数据是从现有数据中提取出来的,并进行预处理以获得股票价格。

该工作基于滑动窗口方法,用于短期未来预测。 窗口大小固定为100分钟,重叠90分钟的信息,并且将来预测10分钟。 通过计算各种窗口大小的误差来识别最佳窗口长度。 训练数据包括2014年7月1日至2014年10月14日期间Infosys的股票价格,测试数据包括Infosys,TCS和CIPLA在2014年10月16日至至11月28日期间的股票价格。

 

 

 
 

Fig. 1: Proposed Model Block Diagram

 

对于Infosys和TCS,数据在2000到4000的范围内变化,对于Cipla,数据在400到700之间变化。为了统一数据范围,它被进行归一化并被映射到0到1的范围。这个归一化的数据是 给予网络培训。 通过改变层尺寸进行微调,所有模型都训练了1000个时期。 如果当前时期的损失(均方误差)小于前一时期中获得的值,则存储该时期的权重矩阵。 在训练过程之后,测试这些模型中的每一个并且将具有最小RMSE(均方根平方误差)的模型作为预测的最终模型。

我们使用了三种不同的深度学习架构,RNN,LSTM和CNN来完成这项工作。 RNN是一类神经网络,其中计算单元之间的连接形成有向圆。 与前馈网络不同,RNN可以使用其内部存储器来处理任意输入序列。 RNN中的每个计算单元具有随时间变化的实值激活和可修改的权重。 通过在类似图形的结构上递归地应用相同的权重集来创建RNN。 许多RNN使用(1)来定义其隐藏单元的值。

ht f (ht1, xtθ) (1)

在RNN的情况下,学习模型总是具有相同的输入大小,因为它是根据从一个状态到另一个状态的转换来指定的。 此外,该架构在每个时间步使用相同的转换函数和相同的参数。 LSTM是一种特殊的RNN,由Hochreiter和Schmidhuber于1997年引入[20]。 在LSTM架构的情况下,通常的隐藏层被LSTM单元替换。 单元由各种可控制输入流量的门组成。 LSTM单元由输入门,单元状态,遗忘门和输出门组成。 它还包括sigmoid层,tanh层和逐点乘法运算。各种门及其功能如下:

•输入门:输出门由输入组成。

单元状态:在整个网络中运行,并且能够在门的帮助下添加或删除信息。

•忘记门层:确定允许的信息部分。

•输出门:它由LSTM生成的输出组成。

•Sigmoid层生成0到1之间的数字,描述每个组件应该通过多少。

•Tanh层生成一个新的向量,该向量将被添加到该状态。

基于来自门的输出更新单元状态。 在数学上我们可以使用以下等式表示它。

ft σ(Wf .[ht1, xt] + bf ) (2)

it σ(Wi.[ht1, xt] + bi) (3)

ct = tanh(Wc.[ht1, xt] + bc) (4)

ot σ(Wo[ht1, xt] + bo) (5)

ht = ot ∗ tanh(ct)                 (6)

其中xt:输入向量,ht:输出向量,ct:单元状态向量,ft:忘记门向量,它:输入门向量,ot:输出门向量,W,b是参数矩阵和向量。卷积神经网络或CNN是用于处理具有已知的网格状拓扑的数据的专用神经网络。这包括时间序列数据,可以被认为是一维图像数据,可以被认为是像素为2D的网格。网络采用称为卷积的数学运算,因此称为卷积神经网络。这是一种特殊的线性操作。卷积网络在其至少一个层中使用卷积而不是一般矩阵乘法。使用这三种模型背后的动机是确定给定数据中是否存在任何长期依赖性。这可以从模型的性能中识别出来。 RNN和LSTM架构能够识别长期依赖性并将其用于未来预测。然而,CNN架构主要关注给定的输入序列,并且在学习过程中不使用任何先前的历史或信息。使用来自其他公司的数据测试模型的动机是检查公司之间的相互依赖性并理解市场动态。

训练数据被标准化。 测试数据也经历相同的标准化。 在获得预测输出后,应用非规范化并使用可用的真实标签计算百分比误差。使用(7)计算误差百分比。

 

其中ep是误差百分比,Xireal是第i个实数值,Xipredicted 预测是第i个预测值。 误差百分比给出输出中存在的误差幅度。

 

Results and discussion

该实验针对三种不同的深度学习模型进行。 表[I]中给出了每种模型获得的误差百分比的最大值。 从表中可以清楚地看出,CNN提供的结果比其他两个模型更准确。 这是由于CNN不依赖于任何先前的信息进行预测的原因。 它仅使用当前窗口进行预测。 这使模型能够理解当前窗口中发生的动态变化和模式。 然而,在RNN和LSTM的情况下,它使用先前滞后的信息来预测未来的实例。 由于股票市场是一个高度动态的系统,系统中存在的模式和动态并不总是相同的。 这导致LSTM和RNN架构的学习问题,因此模型无法准确捕获动态变化。

为了比较,我们使用了ARIMA,这是一个用于预测的线性模型。这三家公司获得的误差百分比如下:

 

 

 

从表[I]和表[II]可以看出,深度学习模型的表现优于ARIMA。

 

 

从图(2)和图(3)可以看出,RNN和LSTM都无法捕捉到最终的趋势和动态(在时间段9000到11000之间),即; 与先前的窗口相比,该时间窗口的库存模式的行为发生了变化。 在CNN的情况下,从图(4)可以看出,网络能够捕获9000到11000时间段内趋势的变化。

在TCS,图(5)和图(6)的情况下,RNN和LSTM网络不识别窗口开始时的模式(在前1000分钟期间)。 在此期间,TCS的趋势发生了变化。 这使得预测不太准确,而在图7中,我们可以看到CNN与其他两个网络相比更准确地捕获这些变化。

在Cipla,图(8)和图(9)的情况下,在2000和6000的时段之间,很明显RNN和LSTM的预测值与原始数据的模式不匹配。这可以被视为系统行为的变化 。在Cipla的情况下,图(10),我们可以观察到CNN能够捕获指定时期内股票价格行为的变化。

 

可以看出,与其他两种模型相比,CNN网络几乎能够捕捉趋势并提供准确的预测。 CNN能够分析Infosys,TCS和Cipla的趋势变化。 还应该注意到,我们在2014年7月1日至2014年10月14日期间使用Infosys数据对网络进行了培训,即使这样,Infosys的测试精度也低于其他公司。这表明无论趋势如何 Infosys在7月至10月14日期间的展品不存在于测试数据中(从2014年10月16日至2014年11月28日),即; 动态发生了变化。这可以解释Infosys与其他模型相比的误差百分比差异。 该模型还能够预测Infosys以外的公司的股票价格。 这表明,模型识别的模式或动态对其他公司也是共同的。

Conclusion

我们提出了一种基于深度学习的股票价格预测形式化。可以看出,深度神经网络体系结构能够捕获隐藏的动态并能够进行预测。我们使用Infosys的数据训练模型,并能够预测Infosys,TCS和Cipla的股票价格。这表明,所提出的系统能够识别数据中的某些相互关系。此外,从结果中可以明显看出,CNN架构能够识别趋势的变化。对于所提出的方法,CNN被确定为最佳模型。它使用在特定时刻给出的信息进行预测。即使其他两个模型用于许多其他时间相关的数据分析,在这种情况下也不是在执行CNN架构。这是由于股票市场突然发生的变化。股票市场中发生的变化可能并不总是处于规则模式,或者可能并不总是遵循相同的周期。根据公司和部门,趋势的存在和存在的时期将有所不同。对这些类型的趋势和周期的分析将为投资者带来更多利润。为了分析这些信息,我们必须使用像CNN这样的网络,因为他们依赖于当前的信息。

REFERENCES

[1] A. V. Devadoss and T. A. A. Ligori, “Forecasting of stock prices using multi layer perceptron,” Int J Comput Algorithm, vol. 2, pp. 440–449, 2013.

[2] J. G. De Gooijer and R. J. Hyndman, “25 years of time series forecast- ing,” International journal of forecasting, vol. 22, no. 3, pp. 443–473, 2006.

[3] V. K. Menon, N. C. Vasireddy, S. A. Jami, V. T. N. Pedamallu,

V.Sureshkumar, and K. Soman, “Bulk price forecasting using spark over nse data set,” in International Conference on Data Mining and Big Data. Springer, 2016, pp. 137–146.

[4] G. E. Box, G. M. Jenkins, G. C. Reinsel, and G. M. Ljung, Time series analysis: forecasting and control. John Wiley & Sons, 2015.

[5]

G. Batres-Estrada, “Deep learning for multivariate financial time series,” ser. Technical Report, Stockholm, May 2015.

[6] P. Abinaya, VS Kumar, P. Balasubramanian, and VK Menon, “Measuring stock price and trading volume causality among nifty50 stocks: The toda yamamoto method,” in Advances in Computing, Com- munications and Informatics (ICACCI), 2016 International Conference on. IEEE, 2016, pp. 1886–1890.

[7] J. Heaton, N. Polson, and J. Witte, “Deep learning in finance,” arXiv preprint arXiv: 1602.06561, 2016.

[8] H. Jia, “Investigation into the effectiveness of long short term memory networks for stock price prediction,” arXiv preprint arXiv: 1603.07893, 2016.

[9] Y. Bengio, I. J. Goodfellow, and A. Courville, “Deep learning,” Nature, vol. 521, pp. 436–444, 2015.

[10] H. White, Economic Prediction Using Neural Networks: The Case of IBM Daily Stock Returns, ser. Discussion paper- Department of Eco- nomics University of California San Diego. Department of Economics, University of California, 1988.

[11] B. G. Malkiel, “Efficient market hypothesis,” The New Palgrave: Fi- nance. Norton, New York, pp. 127–134, 1989.

[12] X. Ding, Y. Zhang, T. Liu, and J. Duan, “Deep learning for event-driven stock prediction.” in IJCAI, 2015, pp. 2327–2333.

[13] J. Roman and A. Jameel, “Backpropagation and recurrent neural net-works in financial analysis of multiple stock market returns,” in System Sciences, 1996., Proceedings of the Twenty-Ninth Hawaii International Conference on,, vol. 2. IEEE, 1996, pp. 454–460.

[14]M.-C. Chan, C.-C. Wong, and C.-C. Lam, “Financial time series fore-casting by neural network using conjugate gradient learning algorithm and multiple linear regression weight initialization,” in Computing In Economics and Finance, vol. 61, 2000.

[15] J. Roman and A. Jameel, “Backpropagation and recurrent neural net-works in financial analysis of multiple stock market returns,” in System Sciences, 1996., Proceedings of the Twenty-Ninth Hawaii International Conference on,, vol. 2. IEEE, 1996, pp. 454–460.

[16] EW Saad, DV Prokhorov, and DC Wunsch, "Comparative study of stock trend prediction using time delay, recurrent and probabilistic neural networks," IEEE Transactions on neural networks, vol. 9, no. 6, pp. 1456–1470 , 1998.

[17] O. Hegazy, O. S. Soliman, and M. A. Salam, “A machine learning model for stock market prediction,” arXiv preprint arXiv: 1402.7351, 2014.

[18]K.-j. Kim and I. Han, “Genetic algorithms approach to feature discretiza tion in artificial neural networks for the prediction of stock price index,” Expert systems with Applications, vol. 19, no. 2, pp 125–132, 2000.

[19] Y. Kishikawa and S. Tokinaga, "Prediction of stock trends by using the wavelet transform and the multi-stage fuzzy inference system optimized by the ga," IEICE Transactions on Fundamentals of Electronics, Com- munications and Computer Sciences, vol 83, no. 2, pp. 357–366, 2000.

[20] S. Hochreiter and J. Schmidhuber, “Long short-term memory,” Neural computation, vol. 9, no. 8, pp. 1735–1780, 1997.

发布了38 篇原创文章 · 获赞 192 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/weixin_40651515/article/details/104549914