神经网络在上证综指预测中的应用
2020-09-10谢君杰
摘要:本文首先确定了反映股票交易数据的特征指标,构建BP神经网络模型和LSTM神经网络模型,并将它们应用于上证综指状态的分类预测。实验通过对两种模型应用结果的比较,验证了LSTM模型在时序数据的预测分析上较BP神经网络有十分显著的优势。BP神经网络的预测准确率为66.98%,而LSTM的准确率达到了87.4%,充分验证了所设计模型的有效性。
关键词:股票预测;神经网络;LSTM;分类预测
1.引言
股票市场对商品市场有着十分重要的影响,它的走势一定程度上也能反应国家经济状况。上证综指反应了整个上海证券市场的股票价格总趋势及涨跌幅度,如果能够较好地对其涨跌进行预测,对投资者进行投资的风险控制和收益最大化来说有着巨大的实际应用价值。
BP神经网络是当前使用最广泛的神经网络模型之一。它能够在不知道具体映射关系的情况下,通过学习输入数据,依靠所确定的目标函数,使网络结构误差最小化,完成模型训练。误差逆向传播的原理是利用网络输出和真实标签之间的误差进行反向传播逐层更新并缩小每一层误差。
近年来关于长短期记忆神经网络的应用开始逐渐出现,它是一种特殊的循环神经网络。国内外在股票市场预测领域使用较广泛的都是BP神经网络及其各种优化算法。而LSTM神经网络主要被用在自然语言处理方面,在金融预测领域使用较少。2016年Luca Di Persio等人使用了MLP、CNN、RNN等多种模型来对S&P500的日交易数据进行预测,说明了RNN在股票趋势预测方面有着自己的优势。
本文主要将日线交易数据进行特征提取,通过建立神经网络模型,实现对未来T+1天上证综指的涨、跌、持平三种状态的预测。本文对BP神经网络和LSTM神经网络这两种模型进行比较,利用归一化、dropout等工具优化模型,最终应用到上证综指状态预测中,比较两者模型的实验结果,证明模型的适用性和准确性以及模型的泛化能力。
2.样本数据预处理
考虑到2008年金融危机股市波动较大,故本文采用2009年1月1日至2019年4月1日10年余的共2490条上证综指的日交易数据。数据来源于网易财经。
根据分析,本文选取收盘价、最高价、最低价、开盘价、成交量、10日ROC、14日RSI、14日CMO、10日MA、20日EMA、MACD、9日KDJ、调整的OBV差值等17个特征指标作为反应上证综指交易信息、指数走势等的特征进行实验,特征提取使用python中的Talib库。
由于数据中几个特征的维度不一致,因此本文将对各个输入变量特征数据进行归一化处理。归一化处理能够把数据的量级范围控制在0到1之间,使得各个变量特征在误差逆向传播过程中,更新步长与数据的数量级一致,可以提升模型的收敛速度和预测精度。归一化函数计算公式如下:
本文将T+1天上证综指的状态分为三类,分别为:上涨、持平、下跌。T+1天上证综指状态持平的阈值设为0.5%,即上涨幅度大于0.5%即认为上涨,下跌亦然,这样选择阈值的原因是为了保证样本在三种状态下分布大致均匀。
3.模型与实验
3.1BP神经网络模型
BP神经网络一般分为三个层,输入层、隐藏层和输出层。每一层上都有许多神经元节点,层与层之间的神经元节点相互连接,完全连接的神经元层称为全连接层。每一层的神经元节点都有一个权值参数称为连接的权重,后一层的输入为前一层的输出乘以前一层的权重加上一个偏置(bias)并经过一个激活函数。
BP神经网络的向前传播公式如下:
其中,X是输入的数据特征向量,维度是17;b1是第一层的偏置向量,维度等于隐藏层单元的个数n;W1是第一层的权值参数矩阵n×17,维度是;b2是第二层的偏置向量,维度等于3;W2是第二层的权值参数矩阵,维度是3×n; 是输出的估计值,该估计值的每个维度的数表示属于各个类别的概率值。
BP神经网络的隐藏层激活函数全部选择Sigmoid函数,这也是一般BP神经网络最普遍运用的一个激活函数,它能将任意范围的数映射到0到1之间。由于本文研究的是三分类问题,因此输出层激活函数将采用Softmax函数,相应的损失函数选择多分类交叉熵函数,反向传播的优化算法选择Adam算法。
对于BP神经网络来说,隐藏层的节点个数合适与否将是模型效果好坏的关键。本文将不同数量隐藏层节点个数的模型进行准确性比较,由此得到最适合的节点个数。
3.2长短时记忆模型
长短时记忆模型是一种特定形式的循环神经网络,但LSTM单元比RNN单元性能更好,收敛更快,能够感知数据的长时依赖。
LSTM单元内部传播由三个门进行控制,遗忘门和更新门负责对时序数据的特征进行筛选控制,提取隐藏的信息进行长时记忆,输出门则负责向后一个单元进行数据输入,或者进行结果输出。
本文使用的LSTM模型預测方式为利用前14个交易日的交易数据及各个指标特征实现对T+1天指数状态的预测。因此,模型设计为14个连接的LSTM单元,各个LSTM单元的权值参数共享,设置α[t]隐藏层的神经元个数为30个。
3.3实证分析
模型训练所使用的数据按8:2的比例划分为训练集和测试集,在用训练集训练模型的时候又将训练集按9:1的比例划分出验证集。
本为分别设置三层BP神经网络的隐藏层神经元个数为20、30、40,分别在30和40个神经元的网络隐藏层后面都加入了Dropout层以防止模型发生过拟合。Dropout层的参数设置为0.2,表示随机丢掉20%的神经元个数。迭代次数根据模型拟合需要分别选有700次和800次。
表1是BP网络(模型1-5)和LSTM网络(模型6、7)训练模型的准确率结果表。
由准确率结果表可以看出,BP网络模型隐藏层神经元个数为20、30、40的三个模型的准确率相差并不是很大,准确率均在65%到66%之间。三个模型在训练过程阶段的拟合效果均不错,但在测试集上的准确率明显低于模型训练时的准确率,由此可以看出模型的泛化能力有待提高,都存在较轻较重的过拟合现象。分别在隐藏层神经元个数为30、40的模型隐藏层之后添加一层Dropout层之后,能够明显改善模型的过拟合现象,提高模型的泛化能力,并且模型在测试集中应用的准确率也略有提高,这说明Dropout工具能够显著改善模型的适用性和准确性以及模型的泛化能力。
从准确率来看,五个模型在测试集上的准确率均在65%到67%之间,五个模型的准确性相去不大。而从模型训练效果和泛化能力来讲,模型3要略优于另外四个模型,在三个数据集上的准确率十分稳定,均在66%到67%之间。
LSTM单元隐藏层节点设置为30个,由于LSTM层较深,易产生过拟合现象,因此本文在LSTM层之后又添加了一个Dropout层,Dropout层参数设置为0.4。模型迭代次数为120次。
LSTM模型6在训练集上的准确率达到了91.46%,在验证集上为87.24%,而在测试集上较低,为86.83%。可以看出LSTM网络模型过拟合现象较BP网络模型要更为严重,在训练模型的时候就已经出现了过拟合。添加了Dropout层的模型7的准确率在三个数据集上十分相近,显著提高了模型的泛化能力。从测试集上的准确率来看,模型7较模型6略有提高,这说明模型的适用性和准确性略有提升。
LSTM模型在预测能力上要显著高于BP网络模型。在相同的數据集上,BP网络模型的最优准确率在66.98%左右,而LSTM网络模型的最优准确率高达87.4%,提升了20%有余。
4.总结
本文实验的研究对象是上证综指。实验所采用的股票数据是日线交易数据,并对这些数据进行特征提取,得到了ROC、RSI、CMO、MACD等17个指标特征。
实验结果证明了LSTM模型在对诸如股票这类时序数据的预测中较传统的BP网络有非常明显的优势,模型最终的准确率达到了87.4%。并且Dropout工具能够显著改善模型的适用性和准确性以及模型的泛化能力。
神经网络模型的好坏也很大程度上依赖于输入特征的选择,有关于分类对象更完善的特征对分类的准确性提高有很大的帮助,以后研究除了从优化模型结构、改变优化算法亦可以从完善特征工程入手。
参考文献:
[1]吴凌云.BP神经网络学习算法的改进及其应用[J].信息技术,2003,27(7):42-44.
[2]Luca Di Persio,Ole Ksandr Honchar.Artificial neural networks approach to forecast of stock market price movements[J].International Journal of Economics and Management Systems, Vol.1, 2016: 158-162.
[3]张翔.量化投资与Python语言[M].北京:清华大学出版社,2018.
作者简介:谢君杰(1997.2-),男,汉族,浙江绍兴人,上海大学经济学院,2019级研究生。