基于组合模型的股票收盘价短期预测方法
2021-04-29魏健赵红涛刘敦楠
魏健 赵红涛 刘敦楠
摘 要:股票收盘价的涨跌受到多方面的影响,针对传统单一的算法难以准确预测收盘价,而CNN-LSTM和GBDT为神经网络模型和决策树算法中的杰出代表。设计基于卷积神经网络(Convolutional Neural Network,CNN)、長短时记忆神经网络(Long Short-Term Memory,LSTM)、梯度提升决策树(GradientBoostingDecisionTree,GBDT)、CNN-LSTM的组合预测模型,通过Python对上证指数进行实例验证以及与各单项预测模型比较得出,组合预测方法正确预测收盘价涨跌的比例远高于单项预测模型,其正确预测的比例达到了94.33%,在其他误差标准上,组合模型也有一定的优势。
关键词:收盘价短期预测;灰色关联;DBSCAN聚类;CNN-LSTM模型;BP组合模型;GBDT模型
中图分类号:F830.91 文献标志码:A 文章编号:1673-291X(2021)09-0075-05
引言
在股票市场中利用量价关系可以推测股价的走势,近年来股票的涨跌也越来越受到人们的关注,所以精准预测股票走势无疑是一个很重要的问题。根据近些年来金融工作者的反复研究,发现精准预测收盘价对判断股票的走势有指导性作用[1]。
收盘价既是股票交易的暂时终点也很可能是新的价格变动的开端,因此它对预测股票变化趋势有重要意义[2]。
苏适等(2017)[3]和金之榆等(2019)[4]介绍了异常值的数据处理方法,认为可以使用DBSCAN聚类的方法来筛选异常值。孙丽洁(2020)[5]和马煜等(2020)[6]使用灰色关联度来判断非线性各指标之间的关系,同时选用关联度较高的指标作为重点研究对象。勾玄等(2020)[7]和欧阳红兵等(2020)[8]提出使用神经网络模型来预测股票收盘价,尤其是CNN和LSTM模型在预测中有良好的效果。刘月峰等(2020)[9]使用CNN-LSTM模型来对电力负荷值进行预测,本文也尝试用此模型对次日股票收盘价进行预测。兰筱莉(2018)[10]使用GBDT模型对股票收盘价进行预测,进而选出盈利可能性更大的股票。张晨等(2019)[11]提出,利用集成模型进行预测。邓云涛等(2020)[12]指出,组合模型可以更好地对目标值进行预测。范中洲等(2020)[13]使用BP神经网络确定各指标的权重,将各个指标更好地组合在一起,本文参考用此方式来提高对股票涨跌预测的准确率。使用BP神经网络可以通过反向传播算法调节神经网络各层的权重系数,一旦有新的数据出现也可再次调整权重系数,从而寻找最优值。
股票市场的涨跌受多方面的影响,其收盘价的变化规律受多种因素影响,许多单一的方法难以胜任对股票涨跌的预测。相对而言,组合预测方法将两种或多种方法结合在一起,使用权重系数将各种方法联结在一起,能够起到更加精准预测的效果。
在单项预测模型的选择上,本文考虑到CNN-LSTM模型结合了CNN和LSTM的优点,很大程度上克服了输入序列长度过长而导致的梯度消失的现象。此外,决策树集成模型学习能力强,泛化能力好,GBDT模型是决策树集成模型的典型代表。所以,本文选用上述模型作为单项预测模型。
本文使用网易财经的股票数据,研究基于BP神经网络确定权重的组合预测方法,并以上证指数为例进行实证研究,希望提出一种可以准确预测股票收盘价涨跌的方法。
一、单项预测模型介绍
(一)CNN-LSTM模型
CNN-LSTM模型对股票收盘价进行预测的过程中,首先利用CNN提取数据特征,消除噪声并寻找不同维度数据之间的关系。然后将CNN处理后的信息导入LSTM网络。LSTM可以学习时序之间的特征,从而在很大程度上解决了LSTM间隔时间较长而忽略相关信息的劣势[3],具体算法流程如下页图1所示。
CNN-LSTM计算步骤:
第一步,将经过数据预处理的数据输入卷积神经网络。第二步,卷积层中的卷积核负责提取数据特征,池化层通过过滤不重要信息,加强重要信息。第三步,经过Flatten层,将经过卷积层和池化层处理的数据构造为特征向量形式输入LSTM层。第四步,LSTM层可以学习时间序列之间的关联,学习特征内部的变化规律。第五步,Dense层负责进一步学习数据中隐含的特征,起到加强学习的作用。第六步,Dropout降低过拟合。
由于CNN、LSTM算法为CNN-LSTM模型的一部分,所以下文不再对CNN、LSTM模型的细节做过多叙述。
(二)GBDT模型
GBDT是一种基于Boosting提升树的算法。Boosting 思想是在刚刚建立决策树的时候每个样本的权重都一样,在前一棵树学习完毕之后,后面的决策树根据前面树学习的误差来调整自身的权重。从而将重点集中在残差较大的决策树[17]。GBDT在Boosting上加入了梯度下降运算,每一次建立决策树都在前一个决策树的梯度下降方向,从而更好地利用前者的信息。
GBDT 算法流程:
设前一轮计算得到的决策树是ft-1(x),损失函数:
L(y,ft-1(x))
式中,x为输入值,y为真实值,ft-1(x)为模型预测函数。
损失函数的负梯度如式(1)所示:
得到本轮损失函数:
L(y,ft(x))=L(y,ft-1(x)+ht(x))(2)
结果为弱回归树。
求出使得损失函数最小的输出值cij:
得到了本轮的决策树拟合函数如下:
E为单位矩阵。
本轮得到的强回归树为:
GBDT模型的流程如图2所示。
(三)BP组合模型
BP神经网络(BP Neural Network)由三部分组成,分别是输入层、隐含层和输出层。设输入层包括m个节点,设其輸入向量为(x1,x2,……xm)T,其隐含层包含k个节点,其输出变量为(y1,y2……yk)T。其中,输入层和隐含层的权重用矩阵A表示,A=(aij)m×k。隐含层和输出层的权重用矩阵B表示,B=(bij)k×n。因为是预测模型,所以输出层只有一个神经元。设经过BP神经网络计算输出的向量为D=(d1,d2,……dn)T,真实值为Z=(z1,z2,……zn)T。
隐含层输出如式(6)所示:
输出层输出如式(7)所示:
1.计算误差。设神经网络某一个神经元的输出值和真实值的误差为Ei:
总误差:
2.反向传播。反向传播是由输出层输出d与真实值o相比较得到的误差信号?啄0,以上述的误差对各层的连接权进行调整[8];误差信号?啄0反向传至隐含层,得到隐含层的误差信号?啄yj,由此对输入层与隐含层间的连接权进行调整。计算公式如式(10)至式(12)所示:
zj(t)=zj(t-1)zj(t)=zj(t-1)(12)
本文将CNN-LSTM、CNN、LSTM、GBDT方法的预测值作为输入变量输入至BP神经网络,最终经过运算得到了预测值。
二、算例分析
(一)误差标准
在对于上证指数的次日收盘价预测中,一共使用有效数据1 457条,将前1 200条数据作为训练集,时间跨度为2014年1月2日至2018年12月28日,其余为测试集,时间跨度为2019年1月2日至12月30日,使用平均绝对百分比误差(Mean Absolute Percentage Error,MAPE)和均方根误差(Root Mean Square Error,RMSE)、均方误差(Mean-Square Error,MSE)来测评模型预测的误差。其表达式如式(13)至式(15)所示:
其中,N表示样本数量,yi表示股票第i日收盘价的实际值,i表示股票第i日收盘价的预测值。除了上述三种误差外,再增加预测涨跌的准确率。对于预测收盘价的涨跌是否准确地计算,是用后一天的收盘价减去前一天的收盘价与模型的预测值减去前一天的收盘价对比,若符号相同则认为正确地预测了涨跌,最后用符号相同的个数除以总个数即为结果。
(二)数据预处理
1.异常值处理。异常值的存在很大程度上影响了预测的效果。本节采用DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)对异常值进行检测。本节使用的数据为2014年1月2日至2019年12月31日的数据,总共有1 463条数据。
DBSCAN 算法中有两个重要参数:Eps 和 MmPtS。Eps是划分一定密度点所需要的半径,MmPts 为阈值[9]。
本节运用python中sklearn库进行DBSCAN算法运算。在此运算过程中,模型参数的设定是聚类中极其重要的一步。经过仔细调试,确定参数分别设置为eps=1.0,min_samples=5。
经过DBSCAN聚类处理,将异常值标注为-1,共筛选出6条异常值数据。由于一共存在14个指标,所以无法使用图像直观地进行观察,经过处理之后的有效数据总共1 457条数据。
2.灰色关联分析。在本案例分析中,对于本文初步选取能够量化的几个指标进行分析,包括前一交易日的最高价、最低价、开盘价、收盘价、涨跌额、涨跌幅、成交量、成交金额作为当日股票收盘价的影响指标。由于上述影响指标过多,在进行下文训练分析时效率过低,本案例将对其进行筛选。
指标筛选的方法有很多,如Person相关系数、灰色关联度(Grey Relation)等,对于本案例所研究的数据而言,指标对于收盘价的影响大都是非线性的。因此,选择灰色关联度[11]作为筛选指标的方法。
从表1可以看出,这9个指标与上证指数下一个交易日收盘价的灰色关联度。为了使得计算快捷,本文选择关联度大于0.9的指标。故本文选择最高价、最低价、开盘价、收盘价、总市值、流通市值这6个指标作为单项预测模型的输入样本,预测上证指数下一日收盘价。
(三)预测收盘价
1.CNN-LSTM模型。在本节预测次日上证指数收盘价的过程中,设置三层CNN层,其中卷积核设定为20个,stride=1;设置两层LSTM层每层设定20个神经元;使用两层Dense层,神经元数量设置为16个。训练次数设定为1 000次,batch_size=1 200,输出结果如下页图4所示。
虽然从图4看出预测值对于真实值的拟合情况很好,但是对于次日涨跌预测的准确率只有56.65%,这是由于影响股票涨跌的因素有很多,包括线性因素和非线性因素,所以单独的一个模型并不能完好地反映所有影响收盘价涨跌的因素。
2.GBDT模型。在参数设置中,设置n_estimators=100,min_samples_split=2,min_samples_leaf=1,从而得到结果如图5所示。由图5可知,在前40个数据的预测中,由于收盘价持续走低,造成了GBDT预测不准确的现象,而且在训练集中的2015年收盘价持续升高,这也造成了测试集中收盘价走低过程中预测不准的现象。
从表2可以看出,单项预测模型对于股票涨跌的预测并不好,这是由于影响股票涨跌的因素有很多,包括线性因素和非线性因素,所以单独的一个模型并不能完好地反映所有影响收盘价涨跌的因素[19],因此需要综合这几种算法[12],此处引入组合模型,而组合预测方法最重要的是确定几种单项预测模型的权重。
3.BP组合模型。本节使用CNN-LSTM、GBDT、CNN、LSTM四种算法对于2017年9月7日至2019年12月30日收盘价的预测值为输入变量,2017年9月7日至2019年12月30日的真实收盘价作为期望输出值。同前文划分训练集和测试集类似,将2017年9月7日至2018年12月28日的数据作为训练集,2019年1月2日至12月30日的数据作为测试集。在训练过程中即确定了神经网络各层的权重系数,并在测试集中进行验证[14~16]。
本文采用固定参数法[18]来调节模型参数,下面以BP神经网络中的训练次数和batch_size为例来确定BP组合模型的最优参数。以下给出参数变化和MAPE的关系图。
从图6可知,应设置2层隐藏层,每层神经元设定10个神经元,训练次数定为1 000次,batch_size=500。
从表3得知,组合模型在预测涨跌的准确率方面比CNN-LSTM、CNN、LSTM、GBDT增加了37.68%、41.1%、43.38%、37.68%。同时在其他的误差标准上,组合模型也具有一定优势。
结语
本文采用BP神经网络确定权重,将CNN-LSTM、CNN、LSTM、GBDT四种算法组合在一起[20],通过分析上证指数数据进行实例分析。从前面的分析可见,组合预测对上证指数收盘价的几个峰值的预测效果都比较好,特别在预测涨跌方面的准确率,准确率达到了94.33%。本文暂时并未给出经过精准预测之后选择股票的策略,不过显然精准预测收盘价对于后期选股有着十分重要的意义,本文提出的方法也有着很大的应用潜力。
参考文献:
[1] 范高乐.我国不同股票指数的风险及绩效评估[J].技术经济与管理研究,2020,(4):112-116.
[2] 孙德山,任靓.基于主成分分析和递归神经网络的短期股票指数预测[J].辽宁师范大学学报:自然科学版,2019,(3):301-306.
[3] 苏适,周立栋,万筱钟,陆海,严玉廷,王飞.计及气象因素的用电负荷短期分时分类预测模型与方法[J].电力建设,2017,(10):76-83.
[4] 金之榆,王毛毛,史会磊.基于DBSCAN和改进K-means聚类算法的电力负荷聚类研究[J].东北电力技术,2019,(6):10-14.
[5] 孙丽洁.基于熵权—灰色关联分析的电动汽车充电基础设施PPP项目风险评价研究[J].上海节能,2020,(4):285-292.
[6] 马煜,黄哲洙,钟丽波,李然,杨宁.基于CNN和SVR相结合的电力负荷预测分析[J].东北电力技术,2020,(2):37-41.
[7] 勾玄,肖先勇.基于经验模式分解与LSTM神经网络的短期电价预测模型[J].西安理工大学学报,2020,(5):1-8.
[8] 欧阳红兵,黄亢,闫洪举.基于LSTM神经网络的金融时间序列预测[J].中国管理科学,2020,(4):27-35.
[9] 刘月峰,杨宇慧.基于CNN-LSTM的短期电力负荷预测研究[J].科技创新与应用,2020,(18):84-85.
[10] 兰筱莉.基于GBDT等机器学习算法的新股量化策略研究[D].成都:西南财经大学,2018.
[11] 张晨,邱彤.基于决策树集成模型的加油站销量预测[J].计算机与应用化学,2019,(6):615-619.
[12] 邓云涛,张文君,周文韬,刘祥龙.基于AHP-PCA的熵组合权重的居民点用地适宜性评价——以内江市为例[J].西南科技大学学报,2020,(1):45-50.
[13] 范中洲,赵羿,周宁,赵冲,张文烨.基于灰色BP神经网络组合模型的水上交通事故数预测[J].安全与环境学报,2020,(3):857-861.
[14] 吴京龙.基于灰色关联度的GM(1,1)-BP神经网络组合模型研究[J].重庆理工大学学报:自然科学版,2019,(11):207-210.
[15] 陈芳,张迪,卫微,郭娜.基于ARIMA和BP神经网络的民航事故征候率预测[J].安全与环境学报,2019,(6).
[16] 闫鹏洋,王利宁,郭培文,刘涛.基于组合赋权的遗传算法优化BP神经网络岩爆预测研究[J].广东土木与建筑,2019,(10):66-70.
[17] 林慧煜.对上证指数收盘价预测的方案策划[D].上海:上海师范大学,2019.
[18] 杨红军,王胜辉,李潇潇.基于最优加权组合模型的光伏出力预测[J].沈阳工程学院学报:自然科学版,2019,(4):300-305.
[19] 林娜娜,秦江涛.基于随机森林的A股股票涨跌预测研究[J].上海理工大学学报,2018,(3):267-273+301.
[20] 周俊峰,胡诗尧,安佳坤,韩璟琳,贺春光,马国真.基于熵權法和灰色关联度的中压配电网供电水平关键性指标研究[J].科技通报,2019,(12):101-104.
Short Term Forecasting Method of Stock Closing Price Based on Combination Model
WEI Jian1,ZHAO Hong-tao1,LIU Dun-nan2
(1.School of Mathematics and Physics,North China Electric Power University,Beijing 102206,China;
2.School of Economics and Management,North China Electric Power University,Beijing 102206,China)
Abstract:The rise and fall of stock closing price is affected by many aspects.Traditional single algorithm is difficult to accurately predict the closing price,and CNN-LSTM and GBDT are neural network models,which are outstanding representatives of neural network and decision tree algorithm.Therefore,this paper designs a long short term memory neural-convolutional neural network(CNN-LSTM),gradient boosting decision tree(gradient boosting decision tree,GBDT).The combined forecasting model of GBDT,CNN and LSTM,through the verification of Shanghai stock index by Python and the comparison with each single forecasting model,shows that the proportion of correct prediction of closing price rise and fall by combination forecasting method is far higher than that of single prediction model,and the correct prediction proportion reaches 94.33%.In other error standards,the combination model also has certain advantages.
Key words:short term forecast of closing price;grey relation;DBSCAN clustering;CNN-LSTM model;BP combination model;GBDT model