基于GAS-Copula-XGBoost的预测建模及应用研究
2022-07-22李筱艺王传美
李筱艺,王传美
(武汉理工大学 理学院, 武汉 430000)
0 引言
时间序列是根据一定的采样频率和方式观测得到数据,例如路面交通流、经济学指数、港航吞吐量、空气质量指数等。分析这类数据能够解释事物随时间动态发展的特征,根据其历史信息建立数理模型,能够在误差区间内获悉未来规律,因此时间序列的预测具有重要的实用价值。常见的预测方法有:基本分析法和传统统计模型。基本分析法是指技术人员基于以往的经验和知识,通过检验过往信息,融合不同的策略,得出长期预测结果。传统预测模型利用时间序列的历史信息构造数据集输入模型进行拟合,常用模型有AR模型、MA模型和ARIMA模型[1]。传统模型基于单一序列进行预测,致使模型说服力不足。此外,传统方法在处理大量非线性数据时表现乏力,预测效果往往不如人意。
为克服传统方法存在的不足,人工智能模型开始被大量运用于预测研究中,开拓了预测模型研究的新局面。最常用的算法为神经网络,该算法属于黑箱过程,函数结构简单,推导过程完整,但易陷入局部最优,在此基础上延伸出多种神经网络模型,Gandhmal等[2]对神经网络类模型的文献进行了详细梳理。除此之外,还有支持向量回归机(support vector regression,SVR)、决策树(decision tree,DT)等,然而SVR处理变量的缺失值时会导致预测无效,DT虽然效果良好,但其泛化能力较弱[3]。为解决上述模型的问题,Chen等[4]提出了一种崭新的算法XGBoost(extreme grandient boosting),有效解决了过拟合的问题,通过并行处理的方式加快运算速度,减小内存占用空间,能够轻松处理海量复杂数据。Nobre等[5]运用PCA降维数据集,并使用离散小波变换对每个特征降噪,随后利用XGBoost预测,得到了很好的预测结果。Jiang等[6]提出基于XGBoost和LSTM模型的叠加预测框架,对美国S&P500指数和NDX进行实证分析。
已有的研究实验证实了XGBoost的优秀预测能力,但仍存在不足之处:未考虑到输入的多个特征因子与预测目标之间存在的动态相关性,这种动态相关性会对预测结果产生一定程度的影响。
针对XGBoost预测模型的不足,需要找到一种合适的相关性计算方法。首先,需要证实这种相关性的存在,查阅文献可知,不同数据源能够从不同角度提供有价值的信息,这种信息之间是相关联的[7]。以股票市场为例,汪玉环[8]用改进的资本资产定价模型验证了上证行业股间存在相关性。Podobnik[9]发现股指间价格波动幅度的幂律衰减表现为互相关,即一只股票产生大幅度波动,这种波动会转移到其他股票。其次,需要考虑合理衡量时间序列间非线性相关关系的计算方法,衡量相关性的经典方法是Pearson法,然而时间序列呈现出非线性与波动性特征,不满足Pearson法的假设条件。而Copula函数能准确捕捉变量间复杂的非线性相关性,很大程度上弥补了线性模型的缺点。Tian等[10]将Copula函数与PCA方法结合,利用Copula相关分析的加权方法进行故障诊断和监测。Zhang等[11]用Copula函数对阿米特河流域的降雨数据建模,认为Copula方法可以很好地分析不同区域降雨量间的相关性。Wang等[12]用混合Copula对两个风电场之间的相关结构进行了分析和比较。
虽然Copula函数能够作为强有力的计算工具,但时变Copula函数本身也存在缺点:① 目前的研究聚焦于常用Copula函数描述的正向相关性上,未考虑时间序列可能存在的反向协同变动;② 用于将Copula函数动态化的ARMA演化方程不能很好地利用Copula函数的相关参数,与其他演化方程相比,可解释性较弱。
针对Copula函数存在的第一点问题,引入了2个半旋转Copula函数:半旋转Gumbel Copula(G90)和半旋转Clayton Copula(C90)函数,该类函数能够对负向协同运行进行描述,弥补了常用Copula函数的缺点。文中所指的常用Copula为t Copula、Clayton Copula和Gumbel Copula。针对Copula函数的第二点问题,借鉴Creal[13]提出的广义自回归得分函数(generalized autoregressive scored model,GAS),将常用Copula函数与半旋转Copula的参数扩展为GAS动态函数,目的是在选定的时间区间内更好更完整地描述变量间的非线性动态相关性。
合理地衡量特征与被预测目标间的相关性并进行特征筛选,可以避免维数灾,提升预测精度。因此,设计一种GAS-Copula-XGBoost模型,选用一带一路主题指数进行分类预测与回归预测的实证研究。首先引入GAS演化方程,将上文提及的常用Copula函数与2种半旋转Copula函数动态化。其中,半旋转Copula函数被拓展成为时变半旋转Gumbel Copula(TV-G90)以及时变半旋转Clayton Copula(TV-C90)。随后利用GAS-Copula函数推导Kendall秩相关系数(τ)来描述特征因子与预测目标的非线性动态相关性,再根据Kendall数值设定阈值ω,构建基于XGBoost算法的循环预测结构。每一轮循环更新一次阈值,并将Kendall秩相关系数大于阈值的特征因子加入输入特征集。最后,将输出的最优预测结果与单一的未经过Copula特征优化的BP神经网络、SVR、随机森林和XGBoost模型比对,验证本文构造的组合模型的有效性。
1 模型与方法
1.1 半旋转Copula函数
Copula通过一定方式,将几个变量的联合分布与各自的边缘分布连接在一起。常用的Gumbel Copula与Clayton Copula只能捕捉2个变量间的正向相关性。为了能够更全面地捕捉变量间的相关性,将第一个变量旋转90°,即可得到衡量反向相关的半旋转Copula函数。下面给出半旋转Gumbel Copula(G90)和半旋转Clayton Copula(C90)构造过程。
根据SKlar理论[14],当变量u~U(0,1),1-u也服从U(0,1),对于变量(u,v),存在Copula函数,使得(1-u,1-v)服从C(·),因此G90和C90分别表示为:
CG90(u,v)=v-CG(1-u,v,θG)
(1)
CC90(u,v)=v-CC(1-u,v,θC)
(2)
式(1)和式(2)即2个半旋转Copula函数的分布函数式,CG与CC是Gumbel Copula与Clayton Copula的分布函数。用R语言绘制C90和G90的密度函数分别为图1、2所示。观察发现,半旋转Copula函数是将原始的Copula函数围绕u作旋转变换得到。
图1 C90的密度函数曲面
图2 G90的密度函数曲面
考虑到常用的相关测度指标Kendall秩相关系数(后文用τ表示)与Copula分布函数联系紧密,已经在诸多文献中得以应用,因此选用τ作为相关性的测度方法。Copula函数的参数通过数学变换可计算得到τ,将Copula函数的参数动态化后,可以依据这种联系推得τ,从而得到变量在时间区间上的非线性动态相关性。如果变量的相依结构可以用Copula函数表示,则τ表示为:
(3)
其中φ(s)是Copula生成元,根据式(3)推出G90和C90函数的τ表达式,见式(4)和式(5),式(6)—(8)是常用Copula函数的参数与τ之间的函数关系式。
对于G90函数:
(4)
对于C90函数:
(5)
对于Gumbel Copula:
(6)
对于Clayton Copula:
(7)
对于t Copula:
(8)
借鉴文献[15]的做法,采用τ衡量变量间的非线性相关性。对于Clayton和Gumbel Copula函数,旋转90°与旋转270°具有完全相同的τ表达式,因此,后续仅对旋转90°的Clayton Copula和Gumbel Copula函数建模,即G90和C90[16]。
1.2 Copula的参数估计
1.1节介绍了半旋转Copula函数的构造过程和主要的相关性测度方法。建立Copula函数时,要考虑的问题是,如何对变量进行边缘分布估计。文献[14]指出,非参数核密度估计法能够有效避免因错误的假定而导致的边缘分布估计误差,具有很好的应用效果。因此,本文中将详细介绍这种方法。
假设随机向量U=(u1,…un),kn(zn),n=1,…,N为一元核函数,则N元核函数表示为:
(9)
hn为核函数的窗宽。如果核函数为高斯核,那么随机向量U=(u1,…un)边缘分布密度函数为:
(10)
通过式(10)得到随机变量的边缘分布后,通常需要检验该分布是否服从[0,1]上的均匀分布,因此,选用K-S统计量检验。
1.3 GAS-Copula模型的构建
最早将Copula动态化的是Patton,他基于ARMA(1,10)模型提出一种演化方程,将静态Copula的参数动态化。然而这种方式无法捕捉到半旋转情形下的相关性,且ARMA模型与Copula参数的关联度低,该方法带有较大的主观性,对Copula的分布函数利用不充分。为改进上述不足,采用GAS模型,首先假设参数服从自回归过程,在该框架下,Copula函数的参数会随着Copula分布函数变动,具备极强的灵活性。若存在(ut,vt)服从C(ut,vt;δt),C(ut,vt;δt)为Copula函数,参数为δt,则GAS框架的完整结构为:
(11)
式中:st为标准化得分向量;▽t表示似然函数,It是信息矩阵;St用于调整得分。由于Copula函数的参数各自存在一定的范围,对参数进行单调增变换,令Copula参数为潜在参数,用φt表示,令h为转换函数,对Copula参数进行转换,得到[20]:
φt=h(δt)⟺δt=h-1(φt)
(12)
相应地,式(11)中的结构变为:
(13)
基于上述GAS框架,变换Copula分布函数即可得到t Copula、Gumbel Copula、Clayton Copula和2个半旋转Copula的时变结构。
1.4 GAS-Copula-XGBoost模型的构建
XGBoost是近年来提出的新模型,作为集成学习算法的集大成者,对预测和分类问题具有很强的学习能力。XGBoost在第t-1棵树上加入1棵树,得到目标函数为:
(14)
式(14)由2部分构成,第1部分为损失函数,第2部分表示正则项,利用二阶Taylor展开后求偏导,得到:
(15)
(16)
式中的Obj称为结构分数,得分越小,则树结构越好。
综合上述公式,GAS-Copula-XGBoost模型的具体步骤如下:
步骤1估计边缘分布。首先将一带一路主题指数(sub)和表1输入特征集中的成分股对数化,得到各自的收益率序列。收益率计算公式如下,pt为每日收盘价,pt-1为前一天收盘价。
rt=logpt-logpt-1
(17)
使用1.2节介绍的非参数核密度估计法来估计这些收益率序列的边缘分布,得到服从[0,1]上均匀分布的边缘分布函数,利用K-S统计量对边缘分布进行检验。
步骤2建立静态Copula模型。通过步骤1得到边缘分布后,对边缘分布数据两两建立一带一路主题指数(sub)与成分股之间的静态Copula函数,并估计Copula参数。依照对数似然值(Log-Likelihood,LL)最大准则选取每组变量之间最优Copula函数。
步骤3建立GAS-Copula模型。根据步骤2的结果,对选出的最优Copula函数建立动态的GAS-Copula模型,同样依照对数似然值最大准则,选取每组变量间最优GAS-Copula函数,估计最优GAS-Copula的参数;根据Copula参数向量与τ之间的函数关系,通过式(4) ―(8)计算Copula对应的τ向量。随后,借鉴文献[17]的做法,对τ向量取均值。
步骤4设计循环预测程序。令τ向量均值中的最小值为初始阈值ω,设定判定条件:判断成分股与一带一路主题指数间的τ是否大于阈值ω。
选择τ大于ω的成分股特征因子,将其收益率与表1中一带一路主题指数的历史信息和技术指标一同构成新的输入特征集,利用XGBoost模型进行一轮预测,输出误差值。此时完成第1轮预测,ω自动更新0.02,再选择满足新判定条件的特征因子加入输入特征集。不断重复上述过程,达到循环预测优化输入特征因子的目的。当ω等于1,结束循环,退出程序。
2 一带一路主题指数应用分析
2.1 数据来源和描述性统计
选用预测对象为中证一带一路主题指数。该指数是为了响应 “一带一路”发展战略,全面考量基建、电信等基础产业的市值与一带一路业务间的联系后编制的新指数。对该指数进行实证,可以检验GAS-Copula-XGBoost模型的有效性,同时能够为投资者在一带一路板块的投资提供一定的指导,为国家一带一路发展战略在相关问题的决策上提供一定的支持。
为了验证GAS-Copula-XGBoost模型的效果,分别从分类预测和回归预测的角度,对一带一路主题指数进行验证。第1组实验选取一带一路板块金融数据进行指数涨跌二分类预测,第2组实验对一带一路主题指数进行回归预测,所有的实验基于Matlab 2019a、python3.7.3和R3.6.1完成。
数据来源于东方财富Choice终端,样本期为2015年2月17日—2020年11月12日。剔除缺失值、删除存在过多缺失值的样本后,每种特征包含1 396个样本数据,共35个特征。表1为模型的输入特征集及其符号表示,包含一带一路主题指数的t-1天历史信息、常用的技术指标和中证一带一路板块下29支成分股的t-1天历史收盘价数据。一带一路主题指数的第t日收盘价为预测目标,用sub表示。
表1 输入特征集及其符号表示
为优化外部输入特征,即表1中成分股类别下的数据(x1,…,x29),考虑到股票数据的波动性,为了减少计算误差,通过式(17)计算29支成分股的收益率和一带一路主题指数的收益率,并对29支成分股收益率进行初步分析,结果见表2。鉴于实验数据繁多,后文的图表信息仅给出前10支股票的结果。为方便描述,从表2起,将主题指数用sub表示,宝钢股份、中国中免等特征分别按照表1的符号表示。
表2 成分股收益率描述统计信息(节选)
观察统计分析值发现,JB统计量显示样本数据均不服从高斯分布的假设,通过峰值和偏度观察到样本数据普遍具有高峰肥尾特点。单位根检验的结果表示所有样本都是平稳序列,可以进行下一步实验。
2.2 静态Copula模型
首先估计一带一路主题指数收益率(sub)和表1中29支成分股收益率各自的边缘分布。用Matlab对样本进行非参数核密度估计,结果如表3所示。
表3 成分股收益率非参数核密度估计结果(节选)
表3表明,所有成分股收益率的边缘分布都通过检验,服从[0,1]上的均匀分布,P值在1%的水平上接受原假设,非参数核密度估计能有效描述样本的边缘分布。接下来,两两建立一带一路主题指数(sub)与成分股间的静态Copula函数,并估计Copula参数值。在最优模型的评判标准上,采用对数似然值最大准则,从上述函数中选出最佳模型,结果见表4。
表4 静态Copula模型的对数似然值与Copula参数值(节选)
大多数股票组合中,半旋转Gumbel Copula和t Copula的对数似然值最大,因此这些股票对分别对应的最优Copula模型为半旋转Gumbel Copula和t Copula。当最优Copula为半旋转Gumbel Copula时,一带一路主题指数(sub)与三一重工(x3)、国电南瑞(x5)、中国中车(x7)和紫金矿业(x8)几组股票对在指定时间区间上具有不对称的尾部相关性,表现为左上尾相关,它们的协同一致变动的方向为负。当最优Copula为t Copula时,一带一路主题指数(sub)与中国中免(x2)、万华化学(x4)、中国中建(x6)、中兴通讯(x9)和潍柴动力(x10)股票对之间具有对称的尾部相关性,协同一致变动方向呈现正负相间的特点,由于t Copula函数的特性,这种正负相间的协同变动成为对称的正负相关。一带一路主题指数与宝钢股份(x1)的最优Copula函数为Gumbel Copula,说明数据表现出上尾相关。
2.3 时变GAS-Copula模型
根据表4的静态Copula函数的拟合结果,选取t Copula、Gumbel Copula和半旋转Gumbel Copula(G90),建立时变GAS-Copula模型,计算对数似然函数值与GAS模型的参数估计值,分别展示在表5与表6中。
表5 GAS-Copula模型的对数似然值(节选)
对比表4与表5数据可以发现,经过GAS驱动方程动态化的GAS-Copula函数的对数似然值普遍高于静态Copula函数的对数似然值,大多数股票对的最优GAS-Copula为GAS t Copula(TV-T)和GAS半旋转Gumbel Copula(TV-G90),一带一路主题指数与宝钢股份之间的最优Copula是GAS Gumbel Copula(TV-G)。
表6给出了3种Copula函数的GAS参数估计值ω、α和β,根据ω、α和β,可得到对应的GAS方程值和Copula参数向量。根据式(4)—(8)计算Copula参数与τ的函数关系,进一步得到每组股票对的τ向量。τ向量表示在指定时间区间内的2个变量之间的非线性动态相关性,这里仅给出部分τ随时间变动的结果,τ相关性见图3—4。
表6 GAS-Copula模型的参数估计值(节选)
图3为一带一路主题指数(sub)与中国中免(x2)股票对τ值在整个时间段内的相关性变化。根据t Copula的对称结构,该股票对的对称相关性在0附近波动,相关程度随着时间的变化保持较为稳定的状态,在后期相关性跃升至0.6,总体相关性较弱。图4为一带一路主题指数(sub)与三一重工(x3)股票对的τ值,根据半旋转Gumbel Copula的结构,该股票对整体表现为负向相关,前期相关性较强,后期相关程度逐渐减弱。
图3 sub-x2股票对动态相关性曲线
图4 sub-x3股票对动态相关性曲线
2.4 GAS-Copula-XGBoost模型分类预测
XGBoost算法在预测方面具有广泛研究,预测包含了分类预测与回归预测,分类模型包含基础的二分类模型和多分类模型[18]。将一带一路主题指数收益率大于零的看作上涨,将收益率小于零的看作下跌,上涨的数值用1表示,下跌的数值用0表示,从而将预测目标转化为二分类形式。在进行预测实证前,随机筛选65%的数据用作训练,余下的35%用作测试。
根据2.3节实验得到了每组股票对之间的动态相关系数τ,取τ向量的均值,均值最小为-0.233 7,因此设定阈值ω范围为[-0.233 7,1],初始阈值为-0.233 7,以每轮迭代更新0.02,以获得更加细致的对比结果。循环算法会将大于ω的τ所对应的成分股收益率特征因子加入输入特征集中,进行一轮预测;如果ω仍然小于1,则ω更新0.02,再进行一轮分类预测。分类模型效果的判定标准包含精确度、召回率和f1_score,因而每一轮循环自动计算这3种指标,得到表现最优的一组预测结果。再利用Logistics、随机森林和XGBoost进行分类预测,将四种模型的分类结果综合起来进行对比,结果展示在表7中,每一轮预测输入的特征个数展示在表8中。
表7给出了4种模型的分类预测结果,对于一带一路主题指数的涨跌趋势预测,GAS-Copula-XGBoost组合模型的分类准确度和其他指标表现最好,精准度比不进行GAS-Copula特征因子优化的XGBoost有较大提升。其中,Logistics模型的准确度较高,随机森林的分类结果表现不佳,涨跌分类的准确度都低于0.5。
表7 涨跌二分类结果
表8给出了每轮循环预测时,输入特征的特征因子个数,在ω达到0.396 3后,特征因子集的个数不再改变,特征集中,与一带一路主题指数的非线性相关程度最高时,τ值为0.381 1,没有因子会被剔除。当特征数量为25时,剔除10个特征因子后的涨跌分类准确度最高,可以证明,对输入特征集进行过滤筛选能够有效提升模型的分类预测能力,GAS-Copula模型对非线性相关性的测度具有一定的效果。
表8 阈值ω筛选的特征因子数量
续表(表8)
2.5 GAS-Copula-XGBoost模型回归预测
GAS-Copula-XGBoost模型的回归预测步骤与2.4节基本相同,唯一区别在于预测的目标不是分类数据,而是连续的随机变量。对回归预测结果的判定标准,一般选用RMSE、MAPE和MAE几种误差值,每轮循环预测过程中同时计算MAPE、MAE、RMSE三项误差[19],当不同特征组合的预测模型误差值都小于单一的XGBoost模型计算误差值时,停止程序,输出预测结果,退出当前循环;反之则继续循环预测。由于XGBoost依赖于多个超参数,选用网格搜索算法对几个重要的超参数寻优,经过数次实验,得到learning_rate取0.1,max_depth取6,n_estimator取100。
表9对最终预测结果进行展示,其中BP神经网络的回归预测效果最差,三项指标值均大于其他模型,训练模型所需时间最久;SVM的表现优于BP神经网络,逊于XGBoost和GAS-Copula-XGBoost模型。相比之下,XGBoost与GAS-Copula-XGBoost模型的误差相差较小,MAPE相差0.214 4,GAS-Copula-XGBoost的MAE和RMSE较XGBoost方法分别降低3.302 6和5.361 2,通过特征因子优化后,GAS-Copula-XGBoost模型的预测精度确实有一定程度的提升。
表9 回归结果
表10展示了筛选得到的样本股输入特征因子数量,当阈值ω设定为-0.233 7时,特征因子全部入选,随着阈值不断增加,入选特征数也逐渐减少。当ω为0.286 3时,共入选12个特征因子,MAE、RMSE和MAPE三项误差值均小于单一的XGBoost模型,此后再更新ω,误差结果会再次变大。
表10 阈值ω筛选的特征因子数量
图5展示了不同模型的预测结果,test表示真实值,对比text实线与GAS XGBoost虚线的预测结果,可以看出GAS-Copula-XGBoost模型的预测效果最佳。总体上,GAS-Copula-XGBoost模型的精度优于单一的XGBoost模型,总体预测精度有所提升。
图5 预测结果
3 结论
1) 金融市场的股票之间存在不同程度的相关性,同一板块下不同行业间,股票信息与一带一路主题指数之间既存在正向相关,也存在负向相关,相关程度随时间而变化。
2) GAS半旋转Copula函数能够捕捉变量间的反向相关性,弥补了Gumbel Copula与Clayton Copula函数的不足,部分股票对适合用GAS半旋转Gumbel Copula函数描述,多数股票对更合适用GAS t Copula函数描述。
3) 考虑时间序列相关性的GAS-Copula-XGBoost模型被验证有效,预测精度比单一的XGBoost模型有小幅度提高,基于阈值更新的自筛选预测过程可以作为有效的特征选择方式,减少遗漏重要特征的可能性。
提出的GAS-Copula-XGBoost模型通过引入半旋转Copula函数和GAS方程,拓展了现有的时变Copula函数,并将其与XGBoost算法相结合,将特征因子与被预测目标的相关性作为切入点,对输入特征进行优化。通过一带一路主题指数的案例证实了GAS-Copula-XGBoost的良好预测效果,丰富了股票价格预测的方法,具有合理的理论支撑。不足之处在于整体计算过程稍显复杂,下一步将考虑如何简化建模过程,提高模型运算效率。