謝承燕,方宏彬,郭夢潔,楊夢卓
(安徽大學(xué) 經(jīng)濟(jì)學(xué)院,安徽 合肥,230601)
大數(shù)據(jù)時代下,隨著機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等算法模型在金融領(lǐng)域的廣泛應(yīng)用,量化投資引起了國內(nèi)外的研究熱潮。西蒙斯提出的“壁虎式”交易策略通過捕捉市場短暫且微小異常的變化,以期在短期內(nèi)隨時進(jìn)行買入賣出的高頻量化交易,依靠活躍獲利。中國股票市場的量化投資發(fā)展相對西方較晚,2005年4月8日由滬深證券交易所聯(lián)合發(fā)布的滬深300指數(shù)反映中國證券市場股票價格變動,為指數(shù)化投資和指數(shù)衍生產(chǎn)品創(chuàng)新提供基礎(chǔ)條件,推動了量化交易的發(fā)展。機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等算法模型能較好地處理金融數(shù)據(jù)的復(fù)雜關(guān)系,在金融科技領(lǐng)域得到了極大的重視。較多學(xué)者運(yùn)用組合學(xué)習(xí)算法對金融資產(chǎn)價格進(jìn)行分類預(yù)測[1-3]。Chen提出的XGBoost算法在近兩年的量化投資中取得了較好的應(yīng)用[4-6]。研究發(fā)現(xiàn)支持向量機(jī)在金融資產(chǎn)價格回歸預(yù)測中運(yùn)用較為廣泛[7-10]。
金融資產(chǎn)價格預(yù)測大致可以分為分類和回歸兩大類。現(xiàn)有量化投資研究中,分類預(yù)測研究主要對下一時刻價格漲跌問題進(jìn)行二分類預(yù)測。Thakur[1]689-702利用隨機(jī)森林和支持向量機(jī)的組合學(xué)習(xí)算法,對美國股市的多指數(shù)漲跌變動進(jìn)行預(yù)測,先通過隨機(jī)森林提取有效特征并降維,再用改進(jìn)的支持向量機(jī)模型對指數(shù)價格漲跌進(jìn)行預(yù)測,實證發(fā)現(xiàn)該方法提高了預(yù)測精度;Krauss[2]238-243將隨機(jī)森林、梯度提升樹和人工神經(jīng)網(wǎng)絡(luò)三種機(jī)器學(xué)習(xí)算法等權(quán)重相加,形成新的組合算法,對標(biāo)普500指數(shù)進(jìn)行下一日價格漲跌預(yù)測,實證分析表明,買入預(yù)測上漲概率前十的股票,根據(jù)收益結(jié)果顯示,該組合算法的預(yù)測效果最佳;謝琪[3]238-243提出一種基于長短記憶神經(jīng)網(wǎng)絡(luò)集成學(xué)習(xí)的金融時間序列預(yù)測模型,構(gòu)建出六層長短記憶神經(jīng)網(wǎng)絡(luò),通過集成學(xué)習(xí)中Bagging方法組合8個長短記憶神經(jīng)網(wǎng)絡(luò),選取中國股市的6個指數(shù)組成金融時間序列數(shù)據(jù)集,對下一個交易日的漲跌情況進(jìn)行分類預(yù)測,實驗結(jié)果表明該模型具有較好的預(yù)測效果;黃卿[4]297-307等采用滬深300股指期貨1分鐘高頻數(shù)據(jù)作為研究對象,對比分析神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)和XGBoost對股指期貨下1分鐘價格的變動方向的預(yù)測能力,研究發(fā)現(xiàn)三種機(jī)器學(xué)習(xí)的預(yù)測能力都較好,但XGBoost的預(yù)測能力要優(yōu)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)和支持向量機(jī);王芊[5]27-30基于高效機(jī)器學(xué)習(xí)算法XGBoost建立了一套量化研究的模型,通過與隨機(jī)森林、支持向量機(jī)等多種機(jī)器學(xué)習(xí)方法進(jìn)行對比,實證發(fā)現(xiàn)運(yùn)用XGBoost模型對滬深300中300支成分股進(jìn)行漲跌預(yù)測的準(zhǔn)確率最高。
XGBoost算法中有兩種增強(qiáng)樹:回歸樹和分類樹。黃卿[4]304-305、王芊[5]33-35運(yùn)用XGBoost算法進(jìn)行價格漲跌分類預(yù)測;王燕[6]202-207等通過網(wǎng)格搜索算法對XGBoost模型進(jìn)行參數(shù)優(yōu)化構(gòu)建GS-XGBoost的金融回歸預(yù)測模型,對中國平安、中國建筑、中國中車、科大訊飛和三一重工等五只股票的日收盤價進(jìn)行短期回歸預(yù)測,對比分析GBDT模型、SVM模型與改進(jìn)的XGBoost模型在評價指標(biāo)MSE、RMSE與MAE上的預(yù)測效果,得出GS-XGBoost金融預(yù)測模型在股票短期預(yù)測中具有更好的擬合性能。
金融資產(chǎn)價格波動較大,用傳統(tǒng)的數(shù)學(xué)模型對其進(jìn)行預(yù)測的準(zhǔn)確率較低,國內(nèi)學(xué)者利用機(jī)器學(xué)習(xí)算法在股票市場、期貨市場上進(jìn)行回歸預(yù)測的研究較少,主要利用支持向量機(jī)模型進(jìn)行價格回歸預(yù)測。王芳[7]18-42構(gòu)建了通過遺傳算法優(yōu)化的支持向量機(jī),對滬深300指數(shù)的每日開盤價進(jìn)行回歸預(yù)測,在波動區(qū)間上,進(jìn)一步建立了基于模糊信息粒化的支持向量機(jī)回歸預(yù)測模型,對滬深300指數(shù)進(jìn)行深入研究;鄭明[8]517-524等將模糊信息?;椭С窒蛄繖C(jī)相結(jié)合,對未來5天股票數(shù)據(jù)的變化趨勢作出預(yù)測,實證表明該方法達(dá)到預(yù)期效果;賽英[9]35-39等首次提出用支持向量機(jī)對股指期貨進(jìn)行回歸預(yù)測,發(fā)現(xiàn)基于粒子群算法的優(yōu)化線性核函數(shù)支持向量機(jī)對滬深300股指期貨每日開盤價具有較好的預(yù)測效果;魏勤[10]123-126等運(yùn)用SVM人工神經(jīng)網(wǎng)絡(luò)算法對以滬深300股指期貨為代表的期貨市場進(jìn)行回歸預(yù)測,結(jié)果表明SVM是價格預(yù)測的較好方法,能充分反映期貨價格時間序列的變動。
XGBoost算法是集成學(xué)習(xí)算法的延伸,以決策樹為基學(xué)習(xí)器,在集成學(xué)習(xí)過程中,每一輪學(xué)習(xí)加入一個決策樹,預(yù)測結(jié)果由各輪決策樹運(yùn)行結(jié)果串行相加而成。
(1)
(2)
模型的目標(biāo)函數(shù):
(3)
XGBoost模型采用泰勒展開式來近似目標(biāo)函數(shù),區(qū)別于傳統(tǒng)的決策樹模型使用梯度下降的方法優(yōu)化目標(biāo)函數(shù),并采用遍歷葉子節(jié)點(diǎn)代替遍歷樣本容量以找到能優(yōu)化目標(biāo)函數(shù)的決策樹ft(xi),所以目標(biāo)函數(shù)為:
(4)
式中,ωq(xi)為第t棵決策樹ft(xi)的權(quán)重輸出結(jié)果,Ij為第j個葉子節(jié)點(diǎn)范圍。
公式(4)目標(biāo)函數(shù)Obj(t)對ωj的一階偏導(dǎo)為零,實現(xiàn)最小化目標(biāo)函數(shù):
(5)
將目標(biāo)函數(shù)Obj看成決策樹的結(jié)構(gòu)分?jǐn)?shù),信息增益函數(shù)Gain是未進(jìn)行結(jié)構(gòu)分割的樹原始分?jǐn)?shù)與進(jìn)行一次分割后左、右子樹分?jǐn)?shù)之差:
Gain=Obj-(ObjL+ObjR)
經(jīng)過公式(5)運(yùn)算得到:
(6)
遍歷所有特征取值,選擇使信息增益函數(shù)Gain最大化的特征值為分裂點(diǎn),說明通過該特征分割的左、右子樹結(jié)構(gòu)分?jǐn)?shù)ObjL+ObjR達(dá)到最小,決策樹結(jié)構(gòu)最優(yōu)。
支持向量機(jī)的核心思想是尋找一組支持向量,滿足由其所確定的分類間隔最大化,使分類的確信度最高,提高模型的推廣能力。圖1為線性可分情況下支持向量機(jī)的基本思想。
圖1 線性可分SVMFig.1 Linearly separable SVM
s.t.yi(ωTxi+b)≥1,i=1,2…,n
(7)
引入非負(fù)拉格朗日乘子α融合到目標(biāo)函數(shù)中,得到拉格朗日函數(shù)L(ω,b,α),求解出的鞍點(diǎn)即為目標(biāo)函數(shù)的最優(yōu)解:
(8)
若數(shù)據(jù)中存在噪聲,引入松弛變量ξi調(diào)整約束條件(9)為:
s.t.yi(ωTxi+b)≥1-ξi,
ξi≥0,i=1,2…,n
(9)
式中,C為事先確定的正常數(shù),作為控制錯分類樣本的懲罰力度,稱為懲罰參數(shù)。Vapnik[11]提出的支持向量回歸(SVR),在用于解決分類問題的支持向量機(jī)上實現(xiàn)了回歸應(yīng)用。SVR核心思想也在于懲罰參數(shù)和核函數(shù)參數(shù)。本文使用靈活性高的徑向基RBF核函數(shù)對非線性數(shù)據(jù)進(jìn)行回歸預(yù)測:
(10)
γ為本文要進(jìn)行優(yōu)化的核函數(shù)參數(shù)。
網(wǎng)格搜索法需要在實驗前設(shè)定好參數(shù)的取值范圍和搜索過程的變化步長,在模型訓(xùn)練過程中會按設(shè)定好的步長遍歷所有的參數(shù)取值,最終通過模型預(yù)測評價指標(biāo)來判斷最優(yōu)參數(shù)值。在步長設(shè)置過程中,當(dāng)遍歷步長設(shè)置過大時,可能導(dǎo)致訓(xùn)練過程變動幅度過大,直接跳過了最優(yōu)值;步長設(shè)置過小會消耗大量訓(xùn)練時間,加大了訓(xùn)練成本。通過多次實驗權(quán)衡后,比較模型的運(yùn)行時間和模型擬合效果,找到最佳步長設(shè)置和參數(shù)取值范圍。為了修正模型預(yù)測誤差,運(yùn)用網(wǎng)格搜索算法和10折交叉驗證法,對XGBoost模型與SVR模型進(jìn)行參數(shù)優(yōu)化。
誤差倒數(shù)法賦予權(quán)重:
(11)
式中,εi表示第i種模型的預(yù)測誤差,n為預(yù)測模型的個數(shù),ωi表示第i種模型在預(yù)測模型中權(quán)重。使用修正的預(yù)測誤差進(jìn)行誤差倒數(shù)法賦權(quán),根據(jù)公式(11)得:
(12)
(13)
f=w1f1+w2f2
(14)
式中,f1為XGBoost的預(yù)測值,f2為SVR的預(yù)測值,f為組合模型預(yù)測值。
通過公式(11)(12)(13)可知,誤差倒數(shù)法能保證對誤差較小的預(yù)測模型賦予較大的權(quán)重,從而減小組合模型的預(yù)測誤差,提升組合模型的整體預(yù)測精度。搭建GXS模型對滬深300指數(shù)每日開盤價進(jìn)行預(yù)測,與原始單一模型、參數(shù)優(yōu)化單一模型預(yù)測結(jié)果進(jìn)行比較,最后根據(jù)模型預(yù)測評價指標(biāo)進(jìn)行驗證。
1.實驗步驟
(1)爬取滬深300指數(shù)歷史數(shù)據(jù),處理缺失值并將數(shù)據(jù)進(jìn)行歸一化,劃分?jǐn)?shù)據(jù)為訓(xùn)練集與測試集,訓(xùn)練集為前80%數(shù)據(jù),測試集為后20%數(shù)據(jù);(2)構(gòu)建單一模型:XGBoost模型、SVR模型,使用訓(xùn)練集數(shù)據(jù)對模型在初始化參數(shù)下進(jìn)行訓(xùn)練,再用測試集進(jìn)行預(yù)測;(3)網(wǎng)格搜索算法優(yōu)化單一模型參數(shù),修正模型預(yù)測誤差,訓(xùn)練改進(jìn)的單一模型并進(jìn)行預(yù)測;(4)使用修正的預(yù)測誤差進(jìn)行誤差倒數(shù)法賦權(quán),搭建GXS模型對滬深300指數(shù)每日開盤價進(jìn)行預(yù)測;(5)比較原始單一模型、改進(jìn)單一模型、組合模型的預(yù)測結(jié)果差異。
2.實驗組合模型計算方法
GXS組合模型計算方法如圖2所示。
圖2 GXS組合模型計算方法
本次實驗使用的python開發(fā)環(huán)境為Jupyter Notebook,python版本為3.7.4,實驗用到python中的numpy、pandas、sklearn、xgboost、matplotlib、numba等包。選取2005年4月8日-2014年6月11日的滬深300指數(shù)[7]19,共2 228行有效數(shù)據(jù),指標(biāo)選取采用常規(guī)基本面分析指標(biāo):每日開盤價、收盤價、最高價、最低價、成交量、成交價,數(shù)據(jù)爬取自聚寬平臺①。使用pandas包中的dropna函數(shù),將節(jié)假日等缺失空白數(shù)據(jù)濾除。為消除指標(biāo)不同量綱對預(yù)測的影響,對數(shù)據(jù)進(jìn)行歸一化處理,再將數(shù)據(jù)集按照80%進(jìn)行劃分:訓(xùn)練集為前1 782條數(shù)據(jù),測試集為后446條數(shù)據(jù)。滬深300指數(shù)歸一化每日開盤價漲跌趨勢如圖3。
圖3 滬深300指數(shù)歸一化每日開盤價漲跌趨勢Fig.3 Normalized daily opening prices of the CSI 300 Index
選取擬合優(yōu)度(R2)、平均絕對誤差(MAE)和均方根誤差(RMSE)三個評價指標(biāo)對實驗結(jié)果進(jìn)行對比分析。
(14)
(15)
(16)
實驗一,搭建單一模型:XGBoost模型、SVR模型。使用模型初始化參數(shù)進(jìn)行訓(xùn)練,再用測試集進(jìn)行預(yù)測。本文選取的各模型關(guān)鍵參數(shù)初始化值,SVR模型中:錯誤分類懲罰參數(shù)(C)取值為1,核函數(shù)系數(shù)(γ)取值為0.2;XGBoost模型中:最大樹深(max_depth)取值為3,樹的棵數(shù)(n_estimators)取值為100,學(xué)習(xí)率(learning_rate)取值為0.1,最小葉子權(quán)重(min_child_weight)取值為1。單一模型預(yù)測結(jié)果見圖4。
圖4 初始化參數(shù)下單一模型對滬深300指數(shù)開盤價預(yù)測Fig.4 Forecast of the opening price of the CSI 300 Index by a single model under the initialization parameters
實驗二,對單一模型參數(shù)進(jìn)行網(wǎng)格搜索,修正預(yù)測誤差。在參數(shù)初始值的基礎(chǔ)上,對取值設(shè)定范圍。SVR模型中設(shè)置C、γ在[10-2,10],步長設(shè)置為0.01,進(jìn)行10折交叉驗證網(wǎng)格搜索尋優(yōu)。設(shè)置XGBoost模型參數(shù)取值如表1。
表1 XGBoost模型參數(shù)網(wǎng)格搜索取值范圍Tab.1 Grid search value range of XGBoost model parameters
經(jīng)過網(wǎng)格搜索確定XGBoost模型參數(shù)為:最大樹深(max_depth)設(shè)置為4,樹的棵數(shù)(n_estimators)設(shè)置為300,學(xué)習(xí)率(learning_rate)設(shè)置為0.08,最小葉子權(quán)重(min_child_weight)設(shè)置為1;SVR模型參數(shù)為:錯誤分類懲罰參數(shù)(C)設(shè)置為1.38,核函數(shù)參數(shù)(γ)設(shè)置為0.63。改進(jìn)單一模型與原始模型預(yù)測結(jié)果比較見圖5、圖6。
圖5 參數(shù)優(yōu)化前后XGBoost模型對滬深300指數(shù)開盤價預(yù)測Fig.5 Prediction of the opening price of the CSI 300 Index by the XGBoost model before and after parameter optimization
圖6 參數(shù)優(yōu)化前后SVR模型對滬深300指數(shù)開盤價預(yù)測Fig.6 Prediction of the opening price of the CSI 300 Index by the SVR model before and after parameter optimization
經(jīng)過參數(shù)優(yōu)化后,模型預(yù)測誤差得到改善,誤差修正結(jié)果如表2。
表2 單一模型預(yù)測結(jié)果對比Tab.2 Comparison of single model prediction results
將XGBoost模型使用網(wǎng)格搜索算法對參數(shù)優(yōu)化后的修正預(yù)測誤差記為GS-MAE、GS-RMSE,圖7為XGBoost模型改進(jìn)前后預(yù)測誤差比較。
圖7 XGBoost模型改進(jìn)前后預(yù)測誤差Fig.7 Prediction error before and after the improvement of XGBoost model
經(jīng)過網(wǎng)格搜索算法對單一模型參數(shù)進(jìn)行優(yōu)化后,改進(jìn)的XGBoost模型、SVR模型擬合效果得到進(jìn)一步提升,預(yù)測誤差MAE分別減小16.46%、67.52%,RMSE分別減小14.49%、79.20%,預(yù)測誤差得到有效修正。
考慮到組合模型在設(shè)置權(quán)重時應(yīng)該發(fā)揮各個模型的優(yōu)勢,當(dāng)權(quán)重出現(xiàn)嚴(yán)重傾向時,會導(dǎo)致個別模型在組合模型中的作用被放大,削弱了其他模型在組合模型中獨(dú)有的學(xué)習(xí)能力,不利于組合模型的預(yù)測效果。根據(jù)公式(11),基于表2中改進(jìn)XGBoost模型、改進(jìn)SVR模型用修正預(yù)測誤差MAE,分別計算出在組合模型中的權(quán)重ω1為0.735 6、權(quán)重ω2為0.264 4;改進(jìn)XGBoost模型、改進(jìn)SVR模型用修正預(yù)測誤差RMSE,分別計算出在組合模型中的權(quán)重ω1為0.035 6、權(quán)重ω2為0.964 4,發(fā)現(xiàn)該組合模型中權(quán)重分配存在嚴(yán)重偏向,對改進(jìn)SVR模型的學(xué)習(xí)程度遠(yuǎn)大于改進(jìn)XGBoost模型。通過實驗進(jìn)一步考察基于修正預(yù)測誤差MAE、RMSE的兩個組合模型對滬深300指數(shù)開盤價的預(yù)測能力。
圖8為兩種修正預(yù)測誤差MAE、RMSE下,GXS組合模型的回歸預(yù)測結(jié)果。
圖8 GXS組合模型對滬深300指數(shù)開盤價預(yù)測Fig.8 GXS portfolio model forecast of the opening price of the CSI 300 Index
將在兩種修正預(yù)測誤差MAE、RMSE下分別賦權(quán)的組合模型與改進(jìn)的單一模型預(yù)測效果進(jìn)行比較(見表3)?;谛拚`差MAE賦權(quán)的GXS組合模型預(yù)測結(jié)果較改進(jìn)XGBoost模型在擬合優(yōu)度、模型預(yù)測誤差上都有所提升。與改進(jìn)XGBoost模型相比,MAE下降16.37%,RMSE下降91.30%;與改進(jìn)SVR模型相比,MAE下降69.94%,RMSE上升57.60%,擬合優(yōu)度上升17.53%?;谛拚`差RMSE賦權(quán)的GXS組合模型預(yù)測結(jié)果較改進(jìn)SVR模型在擬合優(yōu)度、模型預(yù)測誤差上都有所提升,MAE下降3.70%,RMSE下降6.21%;與改進(jìn)XGBoost模型相比,MAE上升169.17%,RMSE下降96.54%,擬合優(yōu)度下降12.68%。
表3 不同模型預(yù)測結(jié)果對比Tab.3 Comparison of prediction results of different models
通過分析組合模型的預(yù)測表現(xiàn),與王芳[7]18-42利用網(wǎng)格搜索算法優(yōu)化參數(shù)后的預(yù)測結(jié)果進(jìn)行比較,發(fā)現(xiàn)基于修正誤差MAE賦權(quán)的GXS組合模型對滬深300指數(shù)開盤價預(yù)測效果更優(yōu),擬合優(yōu)度提升0.02%,RMSE下降98.41%。在組合模型中,基于修正誤差MAE計算出的權(quán)重ω1為0.735 6,ω2為0.264 4,對改進(jìn)XGBoost模型、改進(jìn)SVR模型都進(jìn)行訓(xùn)練學(xué)習(xí),使組合模型在預(yù)測中的能力達(dá)到最優(yōu)。通過表3看到,考慮到預(yù)測時間成本,改進(jìn)XGBoost模型的預(yù)測能力比在修正誤差RMSE賦權(quán)下的組合模型預(yù)測能力更強(qiáng)。實驗結(jié)果表明,權(quán)重設(shè)置直接影響組合模型的學(xué)習(xí)能力,對多模型進(jìn)行組合時,避免選擇權(quán)重存在嚴(yán)重傾向的組合模型,綜合納入了各個模型的組合模型學(xué)習(xí)能力更強(qiáng)。
本文使用網(wǎng)格搜索算法分別對單一模型:XGBoost模型、SVR模型進(jìn)行參數(shù)尋優(yōu),改進(jìn)后單一模型的預(yù)測能力都得到明顯提升,使用誤差倒數(shù)法對改進(jìn)單一模型的修正預(yù)測誤差MAE、RMSE進(jìn)行賦權(quán),實證分析表明,權(quán)重存在嚴(yán)重偏向的GXS組合模型預(yù)測表現(xiàn)欠佳,綜合考慮參數(shù)優(yōu)化前后及組合模型的預(yù)測表現(xiàn),發(fā)現(xiàn)基于修正誤差MAE賦權(quán)的GXS組合模型對滬深300指數(shù)開盤價預(yù)測表現(xiàn)最優(yōu)。本文在指標(biāo)選取方面,僅選取滬深300指數(shù)的基本面指標(biāo):每日收盤價、每日最高價、每日最低價、每日成交量和每日成交額對滬深300指數(shù)的每日開盤價進(jìn)行回歸預(yù)測。在未來的研究中,可以從更加全面的角度進(jìn)行綜合考慮,結(jié)合技術(shù)指標(biāo)、財務(wù)指標(biāo)和社會輿論關(guān)注度等方面,深入研究各指標(biāo)對滬深300指數(shù)開盤價的影響。
注釋:
①數(shù)據(jù)來源:聚寬平臺https://www.joinquant.com/default/research/index?target=self&url=/default/research.