APP下载

基于GA-LSTM组合模型的股票价格预测

2022-01-21杨语蒙李兴东

现代计算机 2021年33期
关键词:收盘价股票价格遗传算法

杨语蒙,李兴东

(兰州交通大学,兰州 730070)

0 引言

在股票市场中,股票价格的升降受到各项综合指标的影响,如宏观经济层面、经济动荡层面、股民意愿层面、社会舆论层面等。人们较多的关注股票价格的波动趋势以及涨跌情况,希望实时的掌握股票市场的信息,进而避免利益损失。由于股票市场的非线性复杂性、价格的波动变幻万千以及影响股票价格的因素千差万别,使得研究股市波动成为国家经济发展不可或缺的一部分。早期研究中,预测股票市场走势的方法千差万别。时间序列预测方法是通过研究对象的时间排序数据进行预测分析,反映预测对象发展变化的规律。该系列的预测方法主要有自回归模型AR、移动平均模型MA、移动平均自回归模型ARIMA、广义自回归异方差模型GARCH等。如张旭东[1]提出了基于离散型隐马尔可夫模型的股票价格预测;崔文喆[2]借助GARCH-BP组合模型实现了股票价格的预测。这些时间序列模型属于传统的股票价格预测方法,最早被引入股票市场,受到了广泛关注。

随着宏观经济的深入以及市场愈加复杂,股价研究方法也随之变得成熟,发现这些传统的时间序列预测方法和机器学习预测模型[3-4]在预测准确性方面并不能很好的发挥作用,它们未考虑到序列的长期记忆信息以及股票市场区别于其他市场的复杂性、无规律性等特点,从而未能对股票价格变动做出很精准的估计。

为了解决传统预测方法预测精度低、预测效果差等问题,后来又逐渐引入了神经网络预测模型。如罗鑫[5]提出基于多时间尺度复合深度神经网络模型对股票价格做预测;张杰[6]针对马氏链的股票价格预测提出了长短时记忆神经网络LSTM预测模型[17];史建楠[7]首先通过DMD算法提取包含整体市场和特定股票走势变化信息的模态特征,然后针对不同市场背景,采用LSTM网络对基本面数据和模态特征进行价格建模预测。

本文针对沪深300近几年的股票数据,引入优化长短时记忆网络模型GA-LSTM。即借助全局寻优遗传算法GA对LSTM模型的参数进行优化调参。通过比较LSTM与GA-LSTM模型对非线性时间序列良好的预测能力,实验证明,组合模型GA-LSTM可以充分考虑模型参数的自动寻优,从而进一步促进了股票市场的研究与发展。

1 研究方法

1.1 GA遗传算法

遗传算法是一种基于选择搜索的全局寻优算法,模拟了遗传和选择过程中的繁殖、杂交和突变现象。在遗传算法开始的时候会随机产生一些个体,根据在GA算法里自定义的适应度函数分别对每一个个体进行计算评估,给出一个适应度值。基于此适应度值,选择一些个体用来产生下一代,然后选择出来的个体再经过交叉和变异进行再组合从而生成新的一代,以此类推朝着最优解的方向进化。全局寻优算法GA的模型流程如图1所示。

图1 遗传算法流程

若用二进制编码表示个体,则二进制数转化为十进制数的解码公式可以为:

其中bi1,bi2,…,bil为某个个体的第i段,每段段长都为l,每个bij都是0或者1,Ti和Ri是第i段分量xi的定义域的左右两个端点。

1.2 长短期记忆网络LSTM

循环神经网络RNN只能存储短期记忆,会遗忘长期记忆信息,为了记住有用的长期信息,后面引入了长短时记忆神经网络模型LSTM,该模型是RNN的拓展网络结构[8]。该模型可以有效地同时利用短期记忆信息和长期记忆信息,从而可以有效的避免梯度消失导致某些信息丢失的问题[9],在处理较长间隔的时间序列方面具有很大的优势。

LSTM模型是在RNN基础上增加了记忆细胞,使得该模型可以记住长期序列中的有用信息[10],通过已有的激活函数Relu、Sigmoid、Tanh与softmax来控制输出值的范围,激活函数是在输入数据前已经确定好的,连接层是通过不同大小的权重相连接[11]。

LSTM模型主要由三种门组成,如图2所示,分别为输入门it,输入门Ot,遗忘门ft,它们可以为LSTM的神经元中的单元提供信息。其中遗忘门是为了从细胞状态中选择性地遗忘没有价值的信息:ft=δ(Wf·[ht-1,xt]+bf);输入门是主要为了选择性将新的信息输入到神经元的细胞:it=δ(Wi·[ht-1,xt]+bi);输出门的作用对象为隐层ht,会输出当前时刻LSTM的输出值ht与当前时刻细胞的单元状态ct:ht=ot*Ct。

图2 LSTM模型结构

1.3 基于GA-LSTM模型组合结构

引入GA遗传算法的双向长短时记忆神经网络LSTM模型,是指利用GA算法对预测模型LSTM进行全局参数寻优,模型结构如图3所示。

图3 预测阶段模型结构

1.3.1 数据预处理阶段

将原始数据集进行清洗、再对量纲不一致的特征属性转变为一致的特征属性,如使用标准化或归一化处理,将原始数据转变到[0,1]之间。

1.3.2 GA遗传算法优化参数的步骤

(1)产生初始群体。

(2)染色体二进制编码群体。

(3)用适应度函数计算个体适应度P(xi)=

(4)进行基因重组。

(5)进行基因变异。

(6)得到新的种群。

1.3.2 LSTM预测模型

最终模型会输出当前时刻LSTM的输出值ht与当前时刻细胞的单元状态ct[12],其中:

1.4 模型评价指标

对于结果连续的回归问题,一般使用的大致为:MSE(均方差)、拟合优度R2[13]。

(1)平均平方误差(MSE)为:

(2)决定系数又被称为R2为:

其中均方误差MSE越小,则说明模型拟合程度越高,预测效果越好[18]。决定系数R2∈(-1,1),R2的值越接近于1,说明该模型的精度越高。该论文中以均方误差MSE和R2这两个指标来评判模型的好坏。

2 实验

2.1 实验环境

在Python 3.7与Anaconda的环境下,借助Scikit-Learn机器学习工具进行建模预测沪深300股票的收盘价。

2.2 数据预处理

本文数据是来自于网易财经网站上沪深300股2018年1月2日到2020年9月21日的663个交易日数据,其中所含特征属性包括:日期、开盘价、最高价、最低价、收盘价、调整的收盘价、成交量。其数据的样本量充足,且该股也是在金融领域具有代表性的研究对象,其中将数据集的80%做为训练集,20%的数据作为测试集,这使得基于时效性和数据量两个层面让预测结果更加精准,使得研究结果更加符合目前股票市场的行情波动。

由于成交量与各维度间的量纲不同,直接用于模型的训练很不专业,为了使其量纲保持一致,使数据有利于建立更高效的预测模型,提高模型的拟合程度,降低预测误差,我们需要对数据集的各个维度进行归一化处理。

2.3 参数设置

本文通过收盘价的序列预测,采取等步预测法,将前五天的收盘价作为输入变量输入GALSTM组合模型中去预测第六天的收盘价,然后再迭代利用第二天到第六天的收盘价去预测第七天的收盘价,以此类推利用最后五天收盘价的预测值去预测未来一天的收盘价从而达到预测的作用。

基于SVM模型、XGBoost模型、LSTM模型以及GA-LSTM模型预测股票收盘价未来走势,从而得出预测效果最佳的模型,如表1所示。

表1 网格参数设置

其中LSTM模型中对应的时间步长为5,隐藏层与神经元个数属于LSTM超参数,后期实验中需要调节该参数以使得模型得到最优,借助全局寻优GA遗传算法对构建好的LSTM模型参数寻找最优参数值。进而达到对股票价格未来趋势很好的预测效果。进而对沪深300股票进行神经网络深度学习预测[14]。

在本次实验中,为了尽可能地避免模型过拟合,我们选取的优化方法是“dropout”方法,该方法的作用机制是在进行传播的时候删除一些结点,这样的话我们就可以降低网络的复杂性,从而使得建立的神经网络模型就不会变的过拟合。

2.4 描述分析

针对我们该实证用到的数据集,对它做描述性分析,对应的详细数值如表2所示。

表2 样本数据的描述信息

表2展示了沪深300股的数据基本信息。其中X1-Open、X2-High、X3-Low、X4-Close、X5-Adj Close、X6-Volume、mean-股票收盘价价的平均值、min-最小值,std-标准差,min-最小值、0.25和0.70代表数据集的四分位数、0.50代表中位数、max-股票收盘价的最大值。利用Python 3绘制出沪深300收盘价的大致走势与股票日成交量如图4所示。

图4 2018~2020年股票收盘价走势情况

由Python自带的matplotlib绘图库画出沪深300股在2018~2020年大盘的走势图,在图中可以看出该支股票的趋势有高有低,呈现出无规律的波动性,2018年全年出现了好几次反弹,但整体处于下跌的趋势,直到2018年的11月,这段时间股票价格下跌流畅,跌势凶猛,好在股票在2019年1月开始反弹,反弹到同年4月,但总体上看股票价格的总体变化趋势处于上升的状态。通过对样本数据的可视化分析,能够直观地让股民了解当前一段时间内股票市场的价格波动情况,为我们后续预测打下坚实的基础。根据绘图工具画出股票成交量的变化趋势如图5所示。

图5 2018~2020年股票成交量走势情况

股票的成交量与股票该月的开盘价、收盘价等存在着很强的相关性,随着每天股票价格的不断调整,人们对股票的买入或卖出决策也在改变。在2018年3月股票价格出现较大幅度的下跌的时候,对应着该月的成交量也随之减少。在2019年1月份股票价格开始回升,其对应这段时期的成交量也出现了上升趋势。

图6 沪深300股票的指数走势

沪深300股的均线图可以侧面反映一段时期内股票波动的方向,股民主要通过均线图去判断大盘和个股近期的发展趋势,并做出合理的决策。当日均线向下时,则股票的趋势是走下坡;当日均线向上时,则股票的趋势是向好的一面发展。10日均线说明了股票近10日内短期发展趋势的好坏程度;52日均线说明了股票近一个多月中期的发展趋势;252日均线可以大致说明股票长期趋势的好坏。根据股票对应日均线可以较为准确的判断出股民在哪天购入或抛出股票会尽可能带来收益或者减少损失。

2.5 模型预测

2.5.1 GA遗传算法优化模型

遗传算法GA模型中的参数分别返回的是LSTM的层数、全连接层的层数、LSTM每层神经元的个数以及全连接层每层的神经元个数,以模型的预测精度作为GA算法中的适应度,寻找出最高预测精度对应的模型参数,从而进一步在原有模型的基础上全局寻优了最佳参数[15]。LSTM模型定义的损失函数为“MSE”,优化方法为“Adam”,模型评价标准为输出值与标签值得差。最终遗传算法的最优参数输出结果如表3所示。根据遗传算法输出的三个参数值对应的模型预测效果表可得,当LSTM层的层数以及每层LSTM层对应神经元的个数、全连接层dens层数以及每层对应神经元个数分别取2(190,224)、1(122)时,对应的LSTM模型的适应度最高,即可得到较高的预测精度和较好的预测效果。

表3 遗传算法的优化参数

2.5.2 预测模型对比

图7 LSTM模型的预测

图8 GA-LSTM模型的预测

图9 GA-LSTM与LSTM模型对比

图10 模型预测结果对比

表4 模型评价指标对比表

通过观察模型评价指标R2与MSE发现:GALSTM组合模型的R2为0.9381,模型的误差MSE为0.2487。即组合的GA-LSTM预测模型对应的R2较单一模型LSTM上升了0.0182左右,均方误差下降了0.0399左右。

3 结论与展望

3.1 结论

主要是针对前面介绍的内容和实证的结果做了系统化的总结与分析,在本文提出方法的基础上,对该方法在金融市场预测领域的优势予以说明总结。本文基于Jupyter-notebook实验环境,运用优化的神经网络模型对沪深300收盘价的未来趋势进行预测,实验结果各项指标均表明了组合模型GA-LSTM可以更为精确地预测股票未来的大体走势,进而也进一步促进了金融市场的进步与发展。

3.2 展望

在本文的研究中,虽已初步实证证明了组合模型GA-LSTM的预测精度更高,预测效果更好,但由于股票市场是具有复杂性、不规律性、无周期性等特点,且沪深300股的数据量以及特征属性较少,在预测过程中未考虑到社会舆情、政治因素、以序列数据的信号特征等条件,使得GALSTM组合模型的可扩展程度和复杂度受到很大制约[16]。另外,在实验中,每次训练LSTM模型的权重会不断更新、输出层的层数不同以及调整的参数不同等原因会导致模型的训练结果有差异。在以后的研究中希望可以在构建神经模型预测模型前,加入相依股票的影响以及网络舆情的分类结果,且在此基础上借助PSO粒子群算法对其预测模型的参数进行寻优建模实现对其收盘价的分析预测。

猜你喜欢

收盘价股票价格遗传算法
基于改进遗传算法的航空集装箱装载优化
基于遗传算法对广义神经网络的优化
基于遗传算法对广义神经网络的优化
基于遗传算法的临床路径模式提取的应用研究
基于遗传算法的临床路径模式提取的应用研究
物流配送车辆路径的免疫遗传算法探讨
上市公司财务指标与股票价格的相关性实证分析
人民币汇率与上证指数互动的实证研究
员工持股计划对股票价格的影响
股神榜