李筱藝,王傳美
(武漢理工大學 理學院, 武漢 430000)
時間序列是根據一定的采樣頻率和方式觀測得到數據,例如路面交通流、經濟學指數、港航吞吐量、空氣質量指數等。分析這類數據能夠解釋事物隨時間動態發展的特征,根據其歷史信息建立數理模型,能夠在誤差區間內獲悉未來規律,因此時間序列的預測具有重要的實用價值。常見的預測方法有:基本分析法和傳統統計模型。基本分析法是指技術人員基于以往的經驗和知識,通過檢驗過往信息,融合不同的策略,得出長期預測結果。傳統預測模型利用時間序列的歷史信息構造數據集輸入模型進行擬合,常用模型有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模型比對,驗證本文構造的組合模型的有效性。
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.1節介紹了半旋轉Copula函數的構造過程和主要的相關性測度方法。建立Copula函數時,要考慮的問題是,如何對變量進行邊緣分布估計。文獻[14]指出,非參數核密度估計法能夠有效避免因錯誤的假定而導致的邊緣分布估計誤差,具有很好的應用效果。因此,本文中將詳細介紹這種方法。
假設隨機向量U=(u1,…un),kn(zn),n=1,…,N為一元核函數,則N元核函數表示為:
(9)
hn為核函數的窗寬。如果核函數為高斯核,那么隨機向量U=(u1,…un)邊緣分布密度函數為:
(10)
通過式(10)得到隨機變量的邊緣分布后,通常需要檢驗該分布是否服從[0,1]上的均勻分布,因此,選用K-S統計量檢驗。
最早將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的時變結構。
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,結束循環,退出程序。
選用預測對象為中證一帶一路主題指數。該指數是為了響應 “一帶一路”發展戰略,全面考量基建、電信等基礎產業的市值與一帶一路業務間的聯系后編制的新指數。對該指數進行實證,可以檢驗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統計量顯示樣本數據均不服從高斯分布的假設,通過峰值和偏度觀察到樣本數據普遍具有高峰肥尾特點。單位根檢驗的結果表示所有樣本都是平穩序列,可以進行下一步實驗。
首先估計一帶一路主題指數收益率(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,說明數據表現出上尾相關。
根據表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股票對動態相關性曲線
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)
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 預測結果
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的良好預測效果,豐富了股票價格預測的方法,具有合理的理論支撐。不足之處在于整體計算過程稍顯復雜,下一步將考慮如何簡化建模過程,提高模型運算效率。