基于离散化和LSTM 神经网络的股票指数趋势预测研究
2019-03-04吉睿
吉睿
(四川大学计算机学院,成都610065)
0 引言
在金融时间序列这个研究领域中,股票市场预测一直是一项受到各个领域研究者关注且极具挑战性的任务。股票市场预测可以在一定程度上为投资者做投资决策时提供参考建议,也可以在一定程度上有效提高投资者的投资回报。金融时间序列预测,从最初传统的统计方法,发展到机器学习[1],再发展到深度学习[2]。最近几年,由于深度学习的广泛应用,使股票预测的结果表现更优。一般来说,由于股票价格具有非平稳性、非线性、高噪声的特点,股票价格与其影响因素之间存在着复杂的非线性关系。传统的统计学模型难以对其做出精度较高的预测,而神经网络[3]以其良好的非线性逼近能力为股价预测提供了新的方法。这些任务基本可以分为两类:一是预测未来股票涨、跌趋势的分类问题;二是预测股票未来价格的回归问题。目前大多研究中,预测某支股票未来的价格或者趋势大多基于它自身的历史数据[4-6],例如收盘价、最高价、最低价、成交量等交易数据,或者根据交易数据进行一系列计算,得到一些对股票走势有指导作用的相关技术指标,对股票进行预测。但是,通常影响股票走势的因素有多个,这些因素包括:股票历史交易数据、技术指标、企业的财务报表、宏观经济状况、财经新闻、股民情绪、国家政策、政治事件等。针对当前使用股票历史数据预测股市精度不高的问题,提出将连续型数值的股票技术指标特征离散化为一系列0、1 特征,同时加入宏观经济指标的方法应用于股票指数预测。
1 股指趋势预测框架
本文主要工作是利用离散化的方法以及基于LSTM[7]长短时期记忆神经网络对股票指数的涨、跌进行分类预测。主要包含以下几个步骤,一是股票指数数据的采集,根据需要从股票历史交易数据中选取相应时间段内的数据,并计算相应的技术指标,同时根据技术指标的特定含义对技术指标进行离散化处理,并将原始数据集划分为训练集和测试集;二是构建LSTM长短期记忆神经网络预测模型;三是利用构建的模型完成对股票指数涨、跌的分类预测;四是对预测结果进行评估。整个实验流程如图1 所示。
2 数据预处理
2.1 数据来源
本文主要研究对象为沪深300 成分指数(399300.SZ)从2009 年8 月31 日至2018 年6 月25 日,沪深300 成分指数是从上海和深圳证券市场中选取的300支市值大、交易活跃以及流通性好的A 股,这些成分股覆盖了市场上大部分流通市值的股票,能够反映整个市场中主流投资的收益情况,从而反映整个股票市场的行情。历史数据样例如表1 所示。
表1 股票历史数据样例(399300.SZ,深沪300 指数)
2.2 股票技术指标
股票技术指标[8]是相对于基本分析而言的,技术指标是从过去的价格、时间、成交量等数据中通过不同的统计计算得到的,是一些衡量股价走势的指标。技术指标通常由开盘价、收盘价、最高价、最低价、成交量等基本数据计算而来。本文也将使用一些常见的技术指标来完成对股票指数涨、跌的分类预测,用到的技术指标如表2 所示。
表2 技术指标
2.3 宏观经济指标
宏观经济指标是体现经济状况的一种方式,宏观经济状况也是对本国股票市场影响的因素之一。文献[9]的结论是,人民币汇率的波动会影响中国大陆A 股市场的走势。因此,增加宏观经济指标可以将更多信息引入LSTM 长短期神经网络的预测中,提高预测的准确度。本文选择了选择两种宏观经济指标:美元指数(以此来捕捉汇率对中国股市的影响)和上海银行同业拆借利率(以此来捕捉利率对中国股市的影响)。它们均有可能影响股票市场的资金流动,从而影响股票指数的走势。宏观经济指标如表3 所示。
表3 宏观经济数据样例
2.4 归一化处理
由于计算出的股票技术指标之间具有不同的量纲,同时数据范围也具有较大差异,所有需要对不同量纲和不同数据范围的数据进行归一化处理,本文采用Z-score 标准化方法对数据进行处理,其公式为:
其中μ 表示均值,σ 表示标准差。
2.5 离散化处理
在通常的机器学习任务中,离散化[10]的运用通常是将连续特征离散化为一系列0、1 特征,然后再输入到模型中,这样做的优势有以下几点:离散特征的增加和减少都很容易,易于模型的快速迭代;稀疏向量内积乘法运算速度较快,同时计算结果方便存储;离散化后的特征对异常值有很强的鲁棒性,同时在一定程度上有去除噪声的作用,模型会更加稳定;也起到了简化模型的作用,降低模型过拟合的风险。而本文根据股票技术指标的具体含义,将连续型的股票技术指标数据转换为0、1 的离散型数据。以离散化RSI 指标为例,RSI相对强弱指标计算公式如下:
RSI 是一个衡量在一段特定时期内股价的变动情况,来推测价格未来的变动方向的技术指标。RSI 的取值在0-100 之间,RSI 值由上向下突破50,代表股价已经转弱。RSI 值由下向上突破50,代表股价已经转强。当RSI 值高于80 进入超买区,股价随时可能形成短期下跌趋势。当RSI 值低于20 进入超卖区,股价随时可能形成短期上涨趋势。预计未来股票指数将会下跌将对应数据标记为0,预计未来股票指数将会上涨将对应数据标记为1。将表2 的技术指标离散化处理后,结果如表4 所示。
表4 技术指标离散化
3 基于LSTM的预测研究
3.1 LSTM介绍
长短期记忆神经网络(Long Short-Term Memory,LSTM)是递归神经网络(RNN)的一种,其主要是解决了RNN 在长序列的训练过程中因梯度消失而无法学习到长期依赖的问题。LSTM 通过在其神经元内部加入了遗忘门f、输入门i、输出门o 和内部记忆单元c 有效解决了梯度消失问题,遗忘门f 控制输入xt和上一层隐藏层输出ht-1被遗忘的程度大小,输入门i 控制输入xt和当前计算的状态更新到记忆单元的程度大小,输出门o 控制输入xt和当前输出取决于当前记忆单元的程度大小,其结构如图2 所示。
图2 LSTM模型记忆单元内部结构
(1)xt是在t 时刻输入记忆单元的向量
(2)Wf,Wi,Wc,Wo,Ui,Uf,Uc,Uo和Vo是权重矩阵
(3)bf,bi,bc和bo是偏置矩阵
(4)ht是记忆单元在t 时刻的值
(5)ft遗忘门在t 时刻的输出值,遗忘门公式如下:
ft=σ(Wfxt+Ufht-1+bf)
(6)it是输入门在t 时刻的输出值,是当前单元状态在t 时刻的候选值,输入门计算公式如下:
(7)Ct是在t 时刻的单元状态,单元状态计算公式如下:
(8)ot和ht是输出门在t 时刻的输出值和时刻t 记忆细胞的值,输出门计算公式如下:
3.2 训练过程
模型预测方式为使用前20 个交易日的数据预测第21 日的涨、跌情况。训练方式为取前80%的数据作为训练集,取后20%作为测试集。整个过程一共可以分为三个部分,第一部分主要包括数据的预处理和股票技术指标的离散化处理,第二部分使用LSTM 模型进行分类预测获得结果,第三部分对获得的结果进行评估并尝试不同的输入。预测模型流程如表5 所示。
表5 预测模型流程
3.3 评估和分析
本文使用准确率对实验结果进行评价,其结果如表6 所示。
表6 实验结果
实验结果表明在仅使用股票技术指标的情况下,对股票技术指标进行离散化处理后,模型预测准确率有较大提升,离散化在提高股票指数趋势预测的准确度上是有效的。在使用技术指标和使用技术指标和宏观经济指标的情况下,加入宏观经济指标对模型的预测准确率也有相应的提升,宏观经济指标在提高股票指数趋势预测的准确度上也是有效的。
4 结语
本文通过将连续型数值的股票技术指标根据其具体含义将其离散化为一系列0、1 特征,再结合宏观经济指标构建基于LSTM 长短期记忆神经网络的股票指数预测模型,通过对实验结果的分析后发现,离散化在提高股票指数趋势预测的准确度上是有效的。