程文辉,车文刚
(昆明理工大学 信息工程与自动化学院,昆明 650500)
金融市场是经济活动的重要构成部分,对国家、企业与个人均有重要的意义。伴随着高波动变化的金融市场是一个复杂多变的系统[1]。股票价格指数是具有非线性和不稳定特征的时间序列,真实反映了金融市场的发展情势及股票价格变化。投资者参考股票价格指数可以研判股市的宏观发展趋势,从而及时调整其投资策略和投资组合。同样,经济学家、企业家和政府工作人员等多个社会主体在衡量和评估社会发展时都将股价指数作为重要参考。因此,股票价格指数作为最典型的时间序列之一,利用历史数据对其发展趋势作出预测正逐渐成为研究的热点[2]。经过长时间的发展,时间序列分析已经成为了金融技术分析的基本方法之一,主要分为线性预测模型和非线性预测模型。
线性预测模型主要有自回归求和移动平均、自回归条件异方差和广义自回归条件异方差等模型。这些以数理统计学为理论基础的方法在计算效率上有一些优势,但研究数据的统计分布和平稳性假设,导致它们对非线性非平稳金融时间序列建模的能力是有限的,进一步提高线性模型的精度面临困难。具体而言,上述模型固有的线性计算机制限制了它们对非线性时间序列建模的能力。
非线性预测模型与线性预测模型的不同之处在于能有效地发现金融时间序列中的非线性关系,其主要包括人工神经网络[3](artificial neural network, ANN)、支持向量机[4](support vector machine, SVM)、随机森林。理论上,人工神经网络可以学习任何非线性关系,因而被广泛应用于金融时间序列预测领域[5]。人工神经网络在应用过程中也暴露了一些问题,包括:①收敛速度慢[6];②难以确定最优模型结构;③“过拟合”问题;④局部最优问题。基于结构风险最小化的支持向量机大大降低了陷入局部最优的概率,对预测建模具有很高的泛化能力[7]。但是支持向量机在对大规模金融时间序列建模时计算效率较低。一些基于人工智能的进化算法,包括粒子群优化[8]、鲸鱼优化算法[9]和遗传算法[10],主要目的是优化模型参数,进一步提高金融时间序列预测模型的泛化能力。为进一步有效提升预测效率,当前业界主流方法是用信号处理方法处理并输入机器学习模型中进行训练、预测。文献[11]利用变分模态分解(variational mode decomposition, VMD)对集成经验模态分解(ensemble empirical mode decomposition,EEMD)初步分解后得到的高频分量做二次分解,进一步应用于PM2.5浓度预测,结果证明了采用二次分解方法的组合预测模型的精度要显著高于采用单一分解方法的模型。文献[12]提出一种组合预测模型,使用EEMD对VMD分解后的残差项进一步分解,改善了模型的整体预测精度。
基于上述问题,本文提出一种新的金融时间序列预测算法,名为基于二次分解与长短期记忆(long short term memory, LSTM)网络的金融时间序列预测算法(VELF算法)。VELF算法中,二次分解方法采用了VMD与EEMD相结合的方案;提取时间序列特征时采用了融合有因子分解机(factorization machine, FM)的LSTM模型。在VMD分解技术的基础上,VELF算法对剩余的残差项进行二次处理,改善了单次分解组合预测算法的预测效果,可用于为金融从业人员提供股价预测信息。
近年来,金融时间序列分析问题的处理方法逐渐向机器学习与深度学习领域转移。性能优于传统计量经济学模型的ANN已成为预测金融时间序列的主流工具。ANN由大量相互连接的处理单元组成,是人脑生物系统神经元网络的抽象和模拟。由于其具有很强的非线性函数逼近能力,能准确拟合非线性的金融时间序列,因而被广泛用于金融时间序列预测。
尽管ANN具有良好的预测性能,但是当时间序列为动态非线性时,其预测精度仍不能令人满意。通过建立隐藏层单元之间的连接,可以通过递归神经网络(recurrent neural network,RNN)解释不同时间点数据的依赖关系。前后关联的数据结构使RNN特别适合于金融时间序列的预测。但是,保留在RNN中的历史信息会随着时间跨度的增加而增加,这将导致梯度消失或梯度激增,进而使RNN的预测结果失真。LSTM引入了存储单元结构来代替RNN的隐藏层单元。每个存储单元都包含一个特殊的“门”机制,这使LSTM能够过滤掉不重要的信息并保留重要的历史信息。这种结构确保了先前的输入可以保留LSTM内部状态并实现内部通信。LSTM被广泛用于自然语言识别、时间序列预测,尤其是股票价格时间序列预测。文献[13]提出了一个关联的深度递归神经网络模型,该模型具有多个基于LSTM关联网络的输入和输出以预测多个价格,包括同时开盘的最低价和最高价。机器学习与深度学习方法采用一个激活函数来处理非线性的问题,导致预测效果不佳。由于FM[14]可以较好地描述数据间的相互作用,从而更好地刻画原始数据的特点,因此,本文引入FM来解决金融时间序列的交互问题。
针对单一模型在复杂数据预测中存在的不足,文献[15]提出将两种或两种以上的模型集成在一起的混合模型,以解决精度低、预测滞后等问题。VELF算法通过引入信号处理方法来降低噪声或进一步从原始序列中捕获中心频率不同的模态,然后将处理后的数据输入到预测模型中,得到最终的预测结果。
经验模态分解(empirical mode decomposition,EMD)可以很好地分解非线性非平稳时间序列,已成为现今最常用的信号分解方法之一。文献[16]采用EMD-HW bagging方法对6个国家的股票市场时间序列进行了准确的预测。但是,基于EMD的方法存在一些缺陷,例如边界效应、模态重叠,可能会对分解的精度产生负面影响,从而导致结果失真。为了进一步提高数据分解精度,文献[17]提出集成经验模态分解方法。由于EEMD方法有过包络、欠包络以及分离相近分量的精度有限等问题,导致分解结果不佳。变分模态分解是一种起源于信号处理的新型多分辨率技术[18]。与EMD、EEMD明显不同,VMD是一个完全非递归的模型,可以将原始信号或串行数据分解为频谱域中具有特定带宽的多个分量。VMD在噪声鲁棒性和分量分解方面的性能优于同类模型,已被广泛应用于时间序列预测领域[19]。
为进一步改善分解组合技术的预测效果,诸多学者提出了采用不同分解技术构建的组合预测模型,大致分为两类:一类是对初次分解后的高频部分进行再次分解;另一类是对初次分解得到的残差项进行再次分解。后者在预处理过程中保留了剩余残差项中包含的丰富信息,对模型性能的提升较大。
综上所述,单次分解方法以及对初次分解后的高频部分进行再次分解的方法均忽略了对首次分解后仍保留有重要分量信息的残差项的研究。VELF算法采用EEMD对VMD分解后的残差项进行二次分解,可以最大程度保留数据中的有用信息并提高预测精度。VELF算法在已有算法的基础上融合FM,整体上提升了算法的预测精度。
VELF算法对应的整体流程如图1所示。
图1 算法整体流程
VELF算法采用的二次分解方法包含VMD与EEMD两种信号处理方法。
首先,使用VMD方法对原始时间序列进行分解。VMD方法的约束条件为
(1)
(1)式中:{uk}={u1,u2,…,uk}与{ωk}={ω1,ω2,…,ωk}分别表示第k个子模态及其对应的中心频率的集合;∂t表示t的微分处理;‖·‖表示范数处理;δ表示冲激函数;*表示卷积符号;K表示本征模态函数(intrinsic mode function, IMF)的总数;f(t)代表原信号。
为了解决约束变分分解的优化问题,引入了增广的拉格朗日函数L,表示为
L({uk},{ωk},λ)=
(2)
(2)式中:α是惩罚参数;λ(t)是拉格朗日乘数因子。为得到上述公式的鞍点,即原约束条件的最优解,采用乘子交替方向法迭代搜索,从而得到k个模态及其中心频率,表示为
(3)
(4)
(5)
频率在非负范围内时更新λ,表示为
(6)
确定判断精度为ε、满足(7)式后停止迭代。
(7)
获得IMFS以及残差项之后,使用EEMD分解残差项。具体步骤如下。
1)将满足正态分布白噪声的等长度序列ni(t)多次添加到VMD分解后的残差项x(t)中。
xi(t)=x(t)+ni(t)
(8)
2)对添加白噪声之后的xi(t)进行EMD分解,得到IMF分量Ci,j和残差项ri。
(9)
3)利用互不相关随机序列之间均值为零的性质,将各分量Ci,j(t)取平均值以抵消多次添加的白噪声对真实IMF分量的影响,最终得到IMF分量分解结果。
(10)
(10)式中,N为1)中添加白噪声序列的数目。
4)进一步得到EEMD最终分解结果。
(11)
(11)式中:IMF分量Cj(t)为时间序列从高到低不同频率段的信息走势;r(t)为残差项。
VELF算法中,LSTM网络用于获取一系列本征模态函数中的长记忆性特征。LSTM是由RNN改进而来。RNN的结构类似于多层感知网络,并且在隐藏层的节点之间建立了许多内部连接,因此可以方便地向前或向后传输信息。LSTM创造性地引入了“门”机制来对RNN进行改进。它用特殊的记忆单元替换RNN的隐含层节点,实现对历史状态和信息的过滤和处理。每个记忆单元包含3个门:输入门it、遗忘门ft和输出门ot。输入门决定在当前时间点有多少最新信息将被添加到单元中;遗忘门决定在前一个单元状态中应该丢弃多少信息,以及应该保留多少信息,以防止内部单元值无限制地增长;输出门用于过滤新状态并输出过滤后的信息。输入层与输出层之间的长期连接结构和选择性信息存储机制,保证了错误在网络中以常数的形式传输,从而有效地解决了梯度消失和爆炸问题。LSTM的基本步骤如下。
it=σ(Wi·[ht-1,xt]+bi)
(12)
(13)
其次,遗忘门ft过滤后可以保留包含长期趋势的历史信息,并丢弃非关键信息。
ft=σ(Wf·[ht-1,xt]+bf)
(14)
通过从旧元组中删除部分信息并添加过滤后的候选值,旧元组状态ct-1更新为新元组状态ct。
(15)
最后,输出门ot对更新状态ct进行过滤,根据更新状态和输出门状态计算最终输出。
ot=σ(Wo·[ht-1,xt]+bo)
(16)
lt=ottanh(ct)
(17)
(13)—(17)式中:Wc,Wf,Wo代表合适的权重矩阵;bi,bc,bf,bo代表相应的偏差向量;σ(·)和tanh(·)分别是S型函数和双曲正切函数。
一系列本征模态函数通过LSTM网络后得到长记忆特征向量lt。
FM用于提取一系列本征模态函数中的交互信息。FM能够对输入模型中的不同特征交叉组合建模,其原理如(18)式所示。
(18)
VELF算法只需要使用性能良好的二阶FM模型。其计算过程见(19)式。
(19)
在VELF算法中FM的具体实现方式如(20)式所示。
(20)
一系列本征模态函数通过FM后得到交互特征向量fFM。
经过二次分解得到的一系列本征模态函数通过LSTM网络后得到长记忆特征向量lt;然后,通过FM网络得到交互特征向量fFM;最后,通过特征融合层融合数据的长短记忆特征和交互特征,得到最终的特征向量。
特征融合层由CNN中的卷积层改进得来。未进行共享权值操作的卷积核能够结合两个特征的特点,为它们分配不同的权值,因此卷积核的权值不进行共享操作。初步拼接的特征通过反向传播算法,不断更新权值从而使损失函数降到最小值,从而获得更佳的融合效果。
特征融合层的目的是融合两个不同的特征,所以将卷积核的大小设置为与经典卷积层中卷积核不同的(2,1)。在特征融合层中,卷积核与初步拼接特征进行卷积操作其实就是利用卷积核的权重项与对应位置上的特征向量做点积运算并求和。特征融合层的工作机理如图2所示。
图2 特征融合层
图2中,Wi表示第i层卷积核的权值项;⊗表示卷积核与特征进行卷积操作;bi表示第i项偏置。
特征融合得到的结果输入到全连接层中,进行回归预测。
为了验证VELF算法的有效性,选择金融市场具有代表性的沪深300股票价格指数的每日收盘价为实验数据集。除去公共假期,选择的时间段为2008年1月7日至2019年8月30日。
为了保证VELF算法发挥最佳性能,需要对原始金融数据进行预处理操作。
首先,需要确定最佳的分解模态数量K。按下述方法确定K值。
1)根据不同模态的中心频率确定K值,K值从5开始。对原始时间序列进行VMD分解,分别检测各个模态的中心频率,若未出现中心频率相近的模态则K值加1。
2)进行下一轮分解,直到出现第一个分解后出现中心频率相近的模态为止。记录下当时的K值,选择K-1的值作为VMD分解的模态数。
实验表明,对多次实验得到的K值平均值取整,得到最佳的K值应为9。
其次,对第一步预处理之后包含有丰富信息的剩余残差项进行二次EEMD分解,以进一步降低残差项的复杂性。
最后,为了提升模型的训练效果、减少噪声的影响并便于优化求解过程,通过最大和最小标准化方法将VMD-EEMD获得的每个子系列IMF归一化为[0,1]。
(21)
(21)式中:x′为标准化后的子序列数据;x为原始值。
与VELF算法进行对比的模型,其预测机制有差异,分别确定了隐含层架构和其他参数。VELF算法中,VMD方法设置中等带宽约束为2 000,噪声容忍度为0,收敛准则容忍度为1E-7,惩罚因子α为2 000,二次分解方法EEMD可以在不设置任何参数的情况下自适应分解原始序列数据。在LSTM中,隐藏单元的数量设置为50,定型周期参数设置为400,批处理参数为64。
采用平均绝对误差MAE、均方根误差RMSE、确定系数R2和DA指标来评估水平预测的准确性,具体表示如下。
(22)
(23)
(24)
(25)
(22)—(25)式中:At代表实际值;Pt代表预测值;n是预测结果的采样点数;di为预测方向标记,方向预测正确di置1,方向预测错误di置0。
MAE用于测量预测值和实际值之间的平均绝对误差;RMSE用于测量预测值和实际值之间的偏差,该偏差对异常值更敏感;确定系数R2用于衡量模型的拟合效果;DA用于衡量模型对时间序列方向变化预测的准确性。通常,MAE、RMSE值越小,R2、DA值越大,预测值和实际值之间的差异就越小,即模型的预测精度越高。
实验使用5次重复的5倍交叉验证方法来评估所有比较模型。首先将整个数据集划分为5个子集,每个子集的样本数量基本一致;然后选择一个子集进行测试,其余4个子集进行训练。
为了验证VELF算法的有效性,设置了一系列对比实验方案:实验一对比业界经典的单一模型,实验二对比混合模型,实验三对比加入二次分解和融合因子分解机方法的混合模型。
VELF算法与单一模型的对比实验结果如表1所示。
表1 实验一结果
由表1可见,VELF算法在所有评价指标的表现远远优于时间序列预测领域常见的几种单一模型预测方法。虽然后者在RMSE、MAE和R2这3项上表现出不错的性能,但是在DA评价指标方面的表现普遍低于50%。输入模型的数据均为没有经过特征提取的原始时间序列,这是直接使用原始时间序列进行预测无法克服的问题。
实验二验证了VELF算法在众多混合模型中的优越性,实验结果如表2所示。
结合表1与表2可以看出,加入EMD或者VMD信号分解方法的模型可以有效提高单个模型的预测精度。由表2可以看出,VMD-SVR、VMD-CNN和VMD-BPNN模型在4项指标的表现分别优于EMD-CVR、EMD-CNN和EMD-BPNN模型,即使用VMD方法分解后得到的IMF分量进行预测可以有效地捕捉市场的趋势。由LSTM到EMD-LSTM,再到VMD-LSTM,预测精度有了显著提高。因此,VELF算法选用VMD-LSTM作为主要组成成分。
表2 实验二结果
为了进一步验证VELF算法的有效性,实验三对加入二次分解和融合因子分解机的方法进行了对比实验,实验结果如表3所示。
表3 实验三结果
由表3可以看出,VELF算法在VMD-LSTM-FM基础上加入EEMD方法做二次分解处理之后,在4项指标上的表现均得到了优化;在VMD-EEMD-LSTM基础上融合FM处理之后,4项指标也得到了优化。VELF算法在金融数据预测方面具有优越性,具体地,VELF算法以二次分解方法准确把握了数据的混沌特征;通过在LSTM基础上融合FM的方法,能够准确把握数据的长记忆性以及交互性特征。
VELF算法可用于进一步提高金融数据预测的精度。第一阶段在对原始金融数据进行VMD分解的基础上,利用EEMD对初步分解的残差项进行进一步的分解,保留初始时间序列中的有用信息,提取出原始序列的混沌特征;第二阶段使用融合FM与LSTM的方案,准确把握第一阶段分解得到的数据交互特征。第一、第二个对比实验的结果表明,VELF算法在主流的单一模型以及组合模型预测方法的基础上有效地提高了金融时间序列预测的精度。第三个对比实验进一步证明了VELF算法预测性能的优越性。在未来的工作中,可以继续从数据预处理、特征筛选与改进预测模型等方面不断改善金融时间序列预测模型。