APP下载

基于CEEMDAN-GRU模型的股票市场指数预测研究

2021-07-12邓晓卫吕学斌

商学研究 2021年3期
关键词:分量模态神经网络

叶 康,邓晓卫,吕学斌

(南京工业大学 数理科学学院,江苏 南京 211816)

一、引言

股票市场指数是由证券交易所或相关金融机构编制的反映股票市场走势的一类时间序列数据。根据设定的目标不同,计算指数的股票样本抽取的范围就不同,从而形成了各种不同的指数,如上证50、沪深300、中证500、工业指数、商业指数等。这些指数构成了衡量股票市场整体或某行业股票价格水平及其变动趋势的重要指标,一定程度上也是一个国家政治、经济发展状态或一个行业发展状态的“晴雨表”。各类指数或从总体或从不同侧面体现了证券市场价格变化的状况以及不同行业的景气程度,能够反映市场热点变化方向,因此,根据指数变化状况来决定投资方向,根据各类指数的样本股票的构成来确定权益投资配置比例,是目前大部分投资者特别是机构投资者的重要投资策略;进而,对证券市场各种指数走势进行预测,对其未来发展趋势做出预判,以保证投资决策尽可能规避风险获取稳定收益,更是个人和机构投资者十分关注的核心问题。

研究股票市场指数走势规律,对指数未来走势进行预测,传统使用的方法是经典的时间序列分析方法,如:自回归积分移动平均(ARIMA)模型、自回归条件异方差(ARCH)模型、广义自回归条件异方差(GARCH)模型等[1-3]。然而,随着世界政治、经济形势越来越复杂,各国经济之间的相互交融与渗透越来越深入,证券市场受外界干扰、影响的程度就越来越大。具体反映在证券市场的表现就是各类股票指数走势不仅呈现出非线性特征,更呈现出大波动、非平稳和高噪声等特征。对这类复杂数据如果仍然采用传统方法来建模预测,难以获得好的效果。随着机器学习方法的研究深入,学者们发现将机器学习方法引入预测模型比原有时间序列模型预测要精准、有效。于是基于机器学习方法的各种模型被应用于证券市场指数预测研究。

王运豪(2019)[4]在原有ARIMA-GARCH模型的基础上引入了支持向量回归机(SVR),通过将由ARIMA-GARCH模型估计出的GARCH项作为SVR的输入特征对指数进行预测,结果发现所提出的新模型的预测结果误差大大减小。崔文喆等(2019)[5]比较了GARCH模型与BP神经网络模型在股票价格预测方面的优劣,发现在中期和长期预测中BP神经网络模型的预测效果要优于GARCH的预测效果。王禹等(2019)[6]提出了一种基于Cart决策树与Boosting方法结合的股票预测方法,很好地解决了过拟合问题,较单一决策树模型预测均方误差有所下降。循环神经网络(RNN)作为时间序列数据预测首选的方法常被用于分析预测股价走势(王理同等,2019)[7]。但RNN方法存在的最大问题是梯度消失问题,于是经过改进,学者们引入了长短期记忆神经网络(LSTM)模型。彭燕等(2019)[8]将苹果公司2000—2018年的相关交易数据进行差分、小波降噪、归一化等预处理后,推送到搭建的不同LSTM层数与相同层数下不同隐藏神经元个数的LSTM网络模型中进行测试、比较,找出适宜的LSTM层数与隐藏神经元个数,发现二层LSTM模型的预测准确率比单层LSTM提高了30%。周凌寒(2018)[9]在LSTM时间序列模型的基础上引入了情感特征作为输入量进行预测,并且采用卷积神经网络(CNN)优化情感特征的提取,最后使模型的准确性提升了5.7%。李佳等(2019)[10]将LSTM神经网络模型用于对上证指数和沪深300指数的预测,取得了较高的预测精度并证明了LSTM模型对股指预测的适用性。然后将LSTM与RNN、CNN、SVR、ARMA等模型的预测效果进行比较,发现神经网络预测方法明显优于SVR和ARMA方法,而在神经网络模型中LSTM对时间序列的预测效果最好。但LSTM模型存在参数设置较多、收敛速度慢等缺陷;另一方面,股票市场受外部多种环境因素的影响,在股票价格或指数走势上表现为很强的随机性和复杂的非线性,因此仅用单一的机器学习方法进行预测,其精度提升仍有较大空间。

美国NASA的华裔科学家Huang等(1998)[11]和Wu等(2004)[12]针对信号去噪问题提出了一种时域滤波算法,称之为经验模态分解(Empirical Mode Decomposition,EMD)。它把原始序列分解为有限个不同频率的固有模态函数(Intrinsic Mode Function ,IMF)和一个趋势项序列,以实现对非平稳、非线性复杂信号数据的分解。研究发现,EMD方法在非线性、非平稳的时间序列分析与预测应用中具有显著优势。但EMD存在分解不彻底、模态混叠以及产生虚假分量等问题。学者针对这些问题进行改进,提出了EEMD(集合经验模态分解)方法以及CEEMDAN(完全集合经验模态分解)方法[12-13]。基于证券市场指数走势的非线性、非平稳特点,金融研究工作者尝试将EMD及其发展的方法引入证券市场指数走势的预测中,通过将复杂的指数信息进行分解,然后与机器学习方法结合,对证券市场指数进行预测,取得了较好的效果。这方面具有代表性的文献是:李斌和王正(2012)[14]最早将EMD分解算法应用于股指股价时间序列分析,建立了EMD结合神经网络的分析模型。刘佳褀等(2019)[15]将EEMD与BP神经网络结合,对上证指数进行预测,发现EEMD-BP神经网络模型比单独BP神经网络模型具有更高的预测精度。李晨亮(2019)[16]建立基于EEMD-LSTM模型的沪深300指数预测模型,结果显示EEMD-LSTM模型对比EMD-LSTM具有更优的预测效果。2019年,Jian等(2018)[17]使用CEEMDAN模型对股价序列做分解,结合LSTM模型进行预测,发现改进后的CEEMDAN-LSTM模型的预测精度优于原先EEMD-LSTM模型。从现有文献看,目前对股票市场指数走势拟合预测效果较好的模型是CEEMDAN-LSTM模型,但CEEMDAN-LSTM模型存在的主要问题是:在通过CEEMDAN分解后,需要对多个序列进行LSTM建模预测,而LSTM模型本身存在设置参数较多、收敛速度慢等问题。Bahdamau等(2014)[18]首次提出门控循环单元(GRU)模型,研究显示:GRU模型优化了LSTM模型结构,在训练、学习过程中具有较好的预测精度且训练效率更高。基于此,本文提出基于CEEMDAN与GRU结合的股市指数预测模型——CEEMDAN-GRU模型,利用GRU模型对复杂数据的高效预测能力,通过分解、预测、合成获得原数据的预测值。以沪深300指数为例,引入正确率、拟合优度、均方误差、平均绝对误差等多个指标,验证CEEMDAN-GRU模型在指数预测上较之已有的模型具有误差更小、预测精度更高等优势。

二、CEEMDAN-GRU预测模型的构建

(一)CEEMDAN分解原理

CEEMDAN分解方法是在EMD方法的基础上发展起来的。如前所述,EMD是由美籍华裔科学家Huang等(1971)[11]和Wu等(2004)[12]针对信号去噪问题提出的一种时域滤波方法——经验模态分解法,该方法与传统的傅里叶分解和小波分解方法具有本质的区别,它不需要在分解前提前设定基函数,可以很好地适应非平稳的复杂数据序列。

设x(t)为原始复杂时序数据,EMD方法有三个基本假设:①序列x(t)至少包含一个极大值与一个极小值;②相邻极值点的时间间隔是时间尺度的特征;③如果原始序列中不存在极值点,但存在拐点,可在分解前对其求微分,然后对分解结果进行积分得到相应的分量。同时,EMD方法还规定分解出的IMF必须满足以下两个条件:①IMF的极值点的个数与零点的数量相差不能超过1;②IMF局部极大值的包络线函数和IMF函数局部极小值的包络线函数的和为0。条件①是常见的分析窄带数据的要求,条件②则保证了IMF对应的每个时刻的瞬时频率都具有一定意义。在基本假设满足的前提下,EMD分解过程如下:

(1)找出x(t)中所有局部极大值和极小值。

(2)利用三次样条插值,拟合极大值和极小值形成上下包络线,记为u(t)和l(t)。

(3)计算上、下包络线的均值:

(1)

(4)原序列减去均值序列得到新序列h1(t):

h1(t)=x(t)-m(t)

(2)

若新序列h1(t)满足IMF的两个条件,那么它就是所求的第一个IMF。

(5)若h1(t)不满足条件,则把h1(t)作为新的原始序列,重复上述三个步骤,直至得到的新序列满足IMF的条件,最终得到的新序列h1(t)即为IMF,记为:IMF1(t)。

(6)使用原始序列x(t)减去分解出的IMF序列IMF1(t),计算残差序列r1(t):

r1(t)=x(t)-IMF1(t)

(3)

将残差序列r1(t)作为新的起始序列重复步骤(1)至(5),继续分解产生新的IMF分量IMFk(t),k=2,3,…,n,直至得到的残差rn(t)为一个常数或者单调函数。

最终得到:

(4)

其中IMFk(t),k=1,2,…,n的频率按照从高到低的顺序依次输出,最终的残差序列rn(t)即为原始序列的趋势项。

经验模态分解方法在处理原始信号时,会产生“模态混叠”问题,即在一个固有模态函数IMF中,包含差异极大的特征时间尺度或者相近的特征时间尺度分布在不同的固有模态中,这种现象会极大影响信号预测精度。学者们针对“模态混叠”问题,提出集合经验模态分解(Ensemble Empirical Mode Decomposition,EEMD),通过加入高斯白噪声极大地减少了“模态混叠”的产生。但EEMD分解又会使各个模式分量上残留的噪声带来重构误差的问题。为了解决这个问题,一种具有自适应白噪声的完全集合经验模态分解方法(Complete Ensemble Empirical Mode Decomposition with Adaptive Noise,记为CEEMDAN)被提出,CEEMDAN的分解过程如下。

设x(t)为待分解的原始序列,Ek表示经EMD分解后的第k个固有模态分量(IMF),εm~N(0,1)为第m次加入的白噪声。

首先,对序列x(t)有限次加入自适应的白噪声序列φ1εm,m=1,2,…,M,其中φ1为自适应项。于是产生M个混合序列:

xm(t)=x(t)+φ1εm,m=1,2,…,M

(5)

对每个混合序列进行前述(1)至(5)的经验模态分解并保留第一个固有模态分量,然后对得到的M个固有模态分量计算均值序列得到CEEMDAN分解的第一个固有模态分量cIMF1,即:

(6)

其次,记CEEMDAN第一次分解后产生的余量序列为r1(t)=x(t)-cIMF1,类似第一步的方法对混合序列加入高斯白噪声分量得到r1(t)+φ2E1(εm),m=1,2,…,M,然后对混合序列进行经验模态分解得到M个固有模态分量。此时再对得到的固有模态分量计算均值序列,则CEEMDAN分解的第二个固有模态分量为:

(7)

一般地,若已分解得到k-1个固有模态分量cIMF1,cIMF2,…,cIMFk-1重复上面第二步,对混合余量序列rk-1(t)+φkEk-1(εm),m=1,2,…,M进行分解,得到CEEMDAN分解的第k个固有模态分量为:

(8)

(二)GRU神经网络模型

门控循环单元(GRU)是LSTM模型的一个变体,但较之LSTM更为精简。LSTM(长短期记忆神经网络)是针对RNN神经网络在处理长期依赖的时间序列数据时出现的梯度消失问题被提出的。LSTM 的核心概念在于细胞状态以及“门”结构。它是一种特殊的循环体,通过“门”的设定来有选择地决定信息是否影响每个时刻的状态。LSTM新增的隐藏层c(细胞状态),能够将有用的信息一直传递下去。LSTM包含的三个“门”及功能分别是:遗忘门,控制当前状态中哪些信息被移除;输入门,控制哪些信息传递到当前状态中;输出门,控制当前状态中哪些信息被输出。GRU神经网络模型则通过引入更新门取代了LSTM模型中的遗忘门和输入门的功能,在保证原有预测性能的基础上,降低参数的设置个数,加速收敛,提升了训练效率。GRU模型的结构框架如图1所示。

图1 门控循环单元结构

更新门,用于确定上一时刻隐藏层的输出ht-1有多少信息保留和添加多少新信息xt,数学模型为:

rt=σ[Wr·(ht-1,xt)+br]

(9)

其中σ、Wr、br分别为sigmoid函数、更新门的权值向量和更新门的偏置,(a,b)表示将a、b两个向量相连。“·”表示逐点相乘。

重置门,用来决定忘记多少过去的信息,数学模型为:

zt=σ[Wz·(ht-1,xt)+bz]

(10)

其中Wz、bz分别为重置门的权值向量和重置门的偏置。

GRU隐藏状态的数学模型为:

(11)

(12)

其中,式(9)至式(12)中xt、ht为输入、输出向量,rt,zt分别表示更新门和重置门的输出。GRU用更新门和重置门替代LSTM中的遗忘门、输入门和输出门,一方面,由GRU模型的设置方法能保存时间序列数据的重要特征;同时,因为GRU少了一个门函数,因此其参数会小于LSTM。基于该系统的结构特点,在处理复杂金融时间序列数据时,可以做到更高效且又不降低估计效率。

(三)模型构建

将股票指数数据经CEEMDAN方法分解为不同频率的IMF分量和一个残差趋势项,其后将分解后的不同频率的序列各自导入一个GRU神经网络模型提取各个分量的运行特征以获得更好的单分量预测效果,将各分量预测值加总,最终获得指数预测更为精确的预测结果。预测步骤如下:

第一步:通过CEEMADN方法将预测指数分解为几个不同频率的IMF分量和一个趋势项。

第二步:将分解后的各固有模态函数分量和趋势项进行标准化处理后作为输入量,导入GRU预测模型分别进行训练、调优、预测、反标准化,得到各个分量的预测值。

第三步:将各个IMF预测值进行加和集成,得到相应指数的预测值。

预测逻辑框图如图2所示。

图2 CEEMDAN-GRU预测模型框架图

下一单元将以沪深300指数为例对本文建立的CEEMDAN-GRU预测模型进行实证检验,并对预测结果的优劣从多角度进行评价。

三、实证分析

(一)数据选取及基本分析

沪深300指数是以上海和深圳证券市场中300只规模大、流动性好的股票为成分股。它们覆盖了沪深市场近六成的市值,代表了沪深两市A股市场的核心优质资产,具有良好的市场代表性。基于此,本文以沪深300指数2013年2月7日至2020年6月30日共1795个交易日的收盘价数据为样本,将其分为“训练集”“验证集”和“测试集”,通过CEEMDAN-GRU模型对其走势进行预测,并对预测结果进行评价,如图3所示。数据来源于通达信交易软件,本文使用基于Python的Keras深度学习库进行模型搭建。

图3 沪深300指数

图3给出了沪深300指数该时间段的走势图,从图中可以看到沪深300指数在2013年2月至2020年6月近8年的走势中包含了暴涨、暴跌、快速反弹等各种非线性复杂情形。以此数据为样本,利用CEEMDAN-GRU建模预测可以考验模型的鲁棒性,增强模型预测结果的说服力。

(二)CEEMDAN分解与标准化

首先将沪深300指数序列通过CEEMDAN分解,得到七个IMF分量,记为:cIMFk,k=1,2,…,7和趋势序列R。分解后的七条cIMFk及趋势序列R曲线图如图4所示。为便于比较,将沪深300走势的缩小图列于第一个。

图4 CEEMDAN分解

由于沪深300指数振幅巨大,为消除不同分量数据极差太大对训练效果的影响,这里,将指数序列分解完成后,先对各个cIMFi分量和趋势序列R进行标准化处理。本文采用常用的最大最小标准化方法,以cIMFk示例(R标准化过程完全类似),公式如下:

(13)

其中min(cIMFk)表示序列cIMFk的最小值,max(cIMFk)表示序列cIMFk的最大值。标准化后,每一个序列的变化范围均介于[-1,1]之间。对标准化后的数据进行学习、模拟及预测,将得到预测值可以通过(13)式反解得到原序列cIMFk的预测值。在应用GRU神经网络模型进行机器学习过程中,我们取1795个样本中的85%作为训练集和验证集(共1525个样本,其中15%为验证集),15%为测试集(270个样本)。

(三)GRU神经网络训练与预测

针对每个cIMFk(k=1,2,…,7)和趋势序列R建立GRU预测模型。采用滚动时间窗滚动预测方式,即以前30日的收盘价数据通过GRU模型预测下一日的收盘价。本文在参考贺毅岳等(2020)[20]搭建双层GRU神经网络(第一层128个神经元,第二层64个神经元)的基础上,在每层GRU后都增加了Dropout层用于防止模型过拟合,失活率设置为0.2。本文神经网络全部采用Adam优化器,初始学习率为0.001,以均方误差MSE为损失函数,bach_size设置为6(注:bach_size代表一次带入训练的样本大小,它的取值直接影响单次训练耗时和训练效果,bach_size越大,单次训练时间越短,但是相应的训练效果会下降)。

为了简化模型设置,各个子序列使用相同的GRU神经网络架构,并且引入相同的早停机制(patience=200),即当epoch次数增加200次,loss值却不再下降时停止训练,保存当前最优模型参数。模型训练学习框架如图5所示。

图5 GRU神经网络模型架构

图6给出了CEEMDAN-GRU模型对270个测试集各cIMFk(k=1,2,…,7)和趋势序列R的预测走势曲线与真实曲线图叠合图,图7给出了经式(13)加和重构后沪深300指数的预测结果曲线与实际沪深300指数走势叠合曲线。

从图6的预测曲线和真实曲线的叠合图来看,GRU模型对分解的高频模态函数cIMF1的拟合效果较差,但随着分解出的模态函数周期变大,GRU模型对cIMFk(k=2,3,…,7)的拟合效果越来越好。下一节将定量从多个维度评价CEEMDAN-GRU模型的预测效果,并与其他模型预测结果作比较。

图6 沪深300指数测试集子序列预测

图7 沪深300指数测试集预测(CEEMDAN-GRU模型)

四、预测效果评价

本文将从三个方面来评价CEEMDAN-GRU模型对指数走势的预测效果。

第一,涨跌正确预测率评价。涨跌正确预测率,即统计一段时间内的实际涨跌天数和预测涨跌天数的吻合率,也称之为胜率。显然,胜率越高,该模型在实际应用中的功效就越强大。本文以沪深300指数为例,在时间跨度为270天的测试集中,计数实际涨跌天数并统计预测值同时间的涨跌方向,结果显示涨跌正确的预测天数达到了224天,准确率为82.96%①。进一步统计预测值和实际值偏差低于0.5%的天数为210天,准确率为77.78%。

第二,与已有的预测方法GRU、LSTM、CEEMDAN-LSTM等模型的预测结果比较。首先,本文用同样的数据,分别用GRU、LSTM、CEEMDAN-LSTM等模型对该数据集通过训练、验证和测试得到各模型相应的测试集预测结果,图8给出了上述3类模型及本文所建模型的预测走势曲线与实际沪深300指数走势曲线的叠合图;然后,引入拟合优度(R2)、均方误差(MSE)、平均绝对误差(MAE)和平均绝对百分比误差(MAPE)等作为评价指标,比较GRU、LSTM、CEEMDAN-LSTM等模型预测结果与本文所提模型CEEMDAN-GRU预测结果的优劣。MSE、MAE和MAPE评价指标计算公式如下:

各模型预测结果的相关指标计算结果由表1给出。从表1可以看出:本文提出的CEEMDAN-GRU模型在对沪深300指数的预测中其拟合优度最高,为95.9%;而预测误差参数MSE、MAE、MAPE均为最小,说明本文提出的模型在指数预测上,其精度最高、误差最小。由表1还可看出,采用CEEMDAN方法与机器学习方法叠加后的模型进行数据预测,其效果显著优于直接用机器学习方法建模预测的效果(GRU,LSTM),这表明时间序列数据的预测经过CEEMDAN方法分解后再结合其他方法可以有效提高预测的精度,这个结论与其他学者研究的结论相吻合[16,17,19]。

表1 不同模型预测评价指标比较表

图8 沪深300指数测试集与四种预测模型拟合曲线图

第三,为验证模型的稳定性和普适性,本文将CEEMDAN-GRU模型应用于上证指数、中证500、深证成指等指数进行预测,然后计算其拟合优度和误差评价指标,各指数的预测评价指标结果如表2所示。从表2可以看出:CEEMDAN-GRU模型对这四类不同指数预测的拟合优度都达到了94%以上。三个误差评价指标MSE、MAE、MAPE,上证指数和沪深300的结果较深圳成指和中证500的结果要小,即预测精度要高,这与各类指数成分股的构成差异有关。上海证券交易所上市公司多由国有大、中型企业构成,沪深300指数则是以上海和深圳证券市场中300只规模大、流动性好的股票为成分股;而深圳证券交易所上市公司则侧重于创投和中小企业,中证500则是剔除沪深300指数成分股,由A股市场中、小市值公司的一批股票作为成分股构成。中、小市值股票的波动性更大,这使得由CEEMDAN分解出的短周期、高频数据列波动更复杂,导致GRU模型对这一部分的预测的精度降低,从而使整体预测误差增大。但从MAE、MAPE来看均在较低的水平上(MSE的计算是将误差平方叠加,放大了误差结果),可见CEEMDAN-GRU模型在对其他不同指数的预测上同样具有不俗的预测效果。

表2 不同指数预测评价指标

五、总结与展望

本文通过将CEEMDAN方法与GRU神经网络模型相结合建立了CEEMDAN-GRU预测模型,并将该模型用于预测沪深300指数的走势。预测步骤为:(1)利用CEEMDAN模型将指数序列分解为7个cIMF和一个趋势项R;(2)对每个cIMF及R采用GRU神经网络模型进行预测;(3)将步骤(2)得到的预测结果进行重构得到指数的预测结果。从预测胜率和与其他模型的预测结果比较两个测度对该模型进行评价。结果显示:通过统计实际涨跌天数与同期预测的涨跌天数比较,准确率达到82.96%;与其他常用的预测模型GRU、LSTM、CEEMDAN-LSTM的预测结果进行比较,从拟合优度、平均误差、均方误差等多方面一致性验证了CEEMDAN-GRU模型的预测精度更高。同时,为检验模型预测的稳健性和普适性,还对上证指数、中证500、深证成指等指数进行建模预测(具体过程省略)并计算了相关评价指标,结果显示本文建立的CEEMDAN-GRU,在对其他指数的预测中仍然获得了较高的拟合优度,同时对大市值股票的预测精度要高于小市值股票的预测精度。

就本文提出的预测模型还存在进一步改进的方向:(1)本文采用的GRU神经网络模型含有两个隐藏层,对其中各层神经元的个数都是根据经验确定的,后续可以考虑结合遗传算法等方法寻找最优的神经元个数配置。(2)在实证过程中,由于cIMF1分量频率高,包含了大量噪声,本文使用的GRU神经网络模型对这一分量数据的预测效果并不好,这也是最后加总指数预测误差的主要来源。根据上述预测效果评价公式,这里计算了经GRU分解后的7个IMF分量预测结果的评价指标(表3),结果显示cIMF1的预测效果最差,误差最大,这与图6显示的结果一致。

表3 子序列预测评价指标

因此针对高频高噪声序列数据,寻找更有效的除噪方法和预测方法,以进一步提高整体预测精度是下一步研究的重点。

注 释:

①此处给出的胜率忽略了交易成本。同时,研究中由于是用历史已知数据,因此检验预测正确率用的是滚动预测法。这是目前评价模型预测效果的通用方法,即预测明天的数据时,用的是今天已有的真实值而不是今天的预测值。实际操作时就只能在收盘后预测,第二天实施买卖操作。那么就会出现正确预测到涨但买不到、正确预测到跌但卖不出的尴尬局面。这些问题都有待实操中进一步解决。

猜你喜欢

分量模态神经网络
基于BERT-VGG16的多模态情感分析模型
基于递归模糊神经网络的风电平滑控制策略
多模态超声监测DBD移植肾的临床应用
跨模态通信理论及关键技术初探
神经网络抑制无线通信干扰探究
一斤生漆的“分量”——“漆农”刘照元的平常生活
一物千斤
基于神经网络的中小学生情感分析
论《哈姆雷特》中良心的分量
基于支持向量机回归和RBF神经网络的PID整定