文/宋逸菲(上海大學(xué))
目前,機(jī)器學(xué)習(xí)的應(yīng)用如火如荼。從算法角度來說,機(jī)器學(xué)習(xí)的預(yù)測(cè)方式建立在一個(gè)樣本學(xué)習(xí)的過程之上,這使得預(yù)測(cè)的精準(zhǔn)性在傳統(tǒng)的計(jì)量方法之上。目前是大數(shù)據(jù)時(shí)代,人們對(duì)數(shù)據(jù)的處理能力得到了顯著的提升。在股價(jià)預(yù)測(cè)領(lǐng)域,通過對(duì)海量日頻數(shù)據(jù)的分析,我們目前對(duì)股價(jià)的預(yù)測(cè)能力又大大提升。
本文旨在使用XGBoost的監(jiān)督式機(jī)器學(xué)習(xí)算法,在僅使用日頻的目標(biāo)股票交易數(shù)據(jù)的前提下,對(duì)未來1天的股價(jià)進(jìn)行預(yù)測(cè),并指導(dǎo)投資者根據(jù)模型給出的結(jié)論進(jìn)行投資,使投資者的投資收益最大化。
目前,常見的股市預(yù)測(cè)方法是使用股票的歷史數(shù)據(jù)去預(yù)測(cè)股市,但是卻忽略了影響股市的新聞和股民情緒。
在 1992 年,Yiu等比較了基于歷史樣本方差的樸素方法、指數(shù)加權(quán)移動(dòng)平均(EWMA)方法和廣義自回歸條件異方差(GARCH)模型的預(yù)測(cè)性能,表明 EWMA 方法在波動(dòng)性股價(jià)預(yù)測(cè)中是有效的[1]。
2000 年,鄭丕諤等提出一種基于 RBF 神經(jīng)網(wǎng)絡(luò)的股市預(yù)測(cè)建模方法 ,主要采用了遺傳算法訓(xùn)練 RBF 網(wǎng)絡(luò)的參數(shù)、權(quán)重和結(jié)構(gòu),由預(yù)測(cè)結(jié)果可知,該模型具有很強(qiáng)的學(xué)習(xí)與泛化能力,且具有很高的應(yīng)用價(jià)值[2]。2003 年, Kim 將 SVM 用于股票價(jià)格指數(shù)的預(yù)測(cè),結(jié)果表明,SVM 是一種很有前途的股票市場(chǎng)預(yù)測(cè)方法[3]。2013年,Ticknor 將貝葉斯正則化與人工神經(jīng)網(wǎng)絡(luò)相結(jié)合進(jìn)行股價(jià)漲跌預(yù)測(cè),降低了過度擬合和過度訓(xùn)練的可能性,提高了網(wǎng)絡(luò)的預(yù)測(cè)質(zhì)量和泛化能力,確定了該模型的有效性[4]。
XGBoost 是由Chen 等在2016 年提出來,證明了其模型的計(jì)算復(fù)雜度低,運(yùn)行速度快,準(zhǔn)確度高等特點(diǎn)[5]。在2018年,陳宇韶等將皮爾森方法與 XGBoost 算法結(jié)合,通過篩選股價(jià)數(shù)據(jù)的特征,有效克服了數(shù)據(jù)量太大造成的準(zhǔn)確率降低和需更新的參數(shù)過多的問題,取得了較好的預(yù)測(cè)效果[6]。
XGBoost的預(yù)測(cè)公式:
其中,K表示模型中CART決策樹的總個(gè)數(shù),fK表示一個(gè)具體的某個(gè)CART樹,xi則是我們輸入的樣本,則是XGBoost輸出的預(yù)測(cè)值。
XGBoost的目標(biāo)函數(shù):
其中前半部分是損失函數(shù),后半部分是正則化項(xiàng)。損失函數(shù)代表了一個(gè)累積的損失,即第i個(gè)CART決策樹的輸入數(shù)據(jù)其實(shí)是第i-1個(gè)CART樹的累積偏差,在優(yōu)化整個(gè)目標(biāo)函數(shù)的過程中,必須對(duì)每一個(gè)CART樹進(jìn)行單獨(dú)優(yōu)化,最后加總。在XGBoost中,損失函數(shù)是最常用的MSE,所以對(duì)于第t個(gè)CART樹,上述的目標(biāo)函數(shù)表達(dá)式可以表示為:
而后面的正則化項(xiàng),我們可以進(jìn)一步表示為下式:
其中γ用于控制葉子節(jié)點(diǎn)T的復(fù)雜程度,γ越大,就表示我們?cè)较M玫胶?jiǎn)單結(jié)構(gòu)的樹。最后,我們將懲罰項(xiàng)代入式子,并令:
我們就能得到XGBoost最終需要最優(yōu)化的目標(biāo)函數(shù):
本文的交易策略總體上來說是一個(gè)日頻的交易策略,并且交易的時(shí)間僅限在收盤時(shí)。在理想狀態(tài)下,在無限接近收盤的時(shí)候,用當(dāng)天無限接近收盤價(jià)的價(jià)格,以及歷史的股價(jià),對(duì)未來一天的收盤價(jià)做出預(yù)測(cè)。如果預(yù)測(cè)價(jià)高于目前的收盤價(jià),就買入1個(gè)單位的股票。在第二天,如果預(yù)測(cè)的收盤價(jià)格仍然低于現(xiàn)價(jià),那么就賣出1個(gè)單位的股票。以此類推,就構(gòu)造了一個(gè)可行的日頻股票交易策略。
圖1 測(cè)試集擬合情況
從聚寬上獲取廣州酒家(603043)的歷史股價(jià)數(shù)據(jù),獲取的時(shí)間包含了2018年1月1日至2021年3月12日的全部交易日數(shù)據(jù)。此外,本次研究的樣本數(shù)據(jù)并沒有缺失值,交易所閉市造成交易日數(shù)據(jù)缺失并不影響建模數(shù)據(jù)分析。
1.數(shù)據(jù)的預(yù)處理
首先我們將股票的收盤價(jià)導(dǎo)入模型中進(jìn)行初步的分析,將廣州酒家的收盤價(jià)分為3個(gè)部分,60%的數(shù)據(jù)作為訓(xùn)練集,20%的數(shù)據(jù)作為驗(yàn)證集,20%的數(shù)據(jù)作為測(cè)試集,其中我們使用驗(yàn)證集來計(jì)算MSE用以調(diào)整模型的參數(shù)。
在訓(xùn)練模型之前,我們要注意的是需要分別對(duì)3個(gè)部分的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化來消去趨勢(shì)性。
2.訓(xùn)練模型
在完成數(shù)據(jù)的預(yù)處理后,將訓(xùn)練集輸入模型進(jìn)行訓(xùn)練。 進(jìn)一步地,使用RMSE和MAPE來衡量精度。均方根誤差:
其中,n為測(cè)量次數(shù),dj為一組測(cè)量值與真值的偏差。
模型擬合得到的RMSE=0.343、MAPE=0.987%,這個(gè)值是非常理想的。
3.模型評(píng)估和調(diào)參
使用驗(yàn)證集的數(shù)據(jù)對(duì)模型進(jìn)行初步的評(píng)估,可得RMSE=0.756、MAPE=1.942%。由此可見預(yù)測(cè)效果相對(duì)訓(xùn)練集來說并不是很好,需要進(jìn)行參數(shù)調(diào)整。
調(diào)參分為兩個(gè)層面,一個(gè)是調(diào)整CART樹的最大節(jié)點(diǎn)深度和每個(gè)CART樹葉子上最小的樣本數(shù),使用RMSE作為網(wǎng)格化調(diào)參的指標(biāo)。另一個(gè)是整體的目標(biāo)函數(shù)方面,對(duì)目標(biāo)函數(shù)中懲罰系數(shù)gamma的值進(jìn)行調(diào)整,并相應(yīng)改變子樣本的參數(shù),仍然以RMSE作為調(diào)參的指標(biāo)。
表1 交易策略的實(shí)現(xiàn)過程
最終經(jīng)過調(diào)參后的模型參數(shù)為:樹的最大深度為3,決定樹的數(shù)量為180,learning rate為0.2,最 小 樣本權(quán)重為9,子樣本的參數(shù)為1,每棵隨機(jī)采樣的列數(shù)的占比為0.9,gamma=0.9。
經(jīng)過上述調(diào)參后,驗(yàn)證集的RSME=0.755、MAPE=1.924%均 有 所減小。
4.預(yù)測(cè)
完成調(diào)參后,使用改進(jìn)的模型對(duì)測(cè)試集的數(shù)據(jù)進(jìn)行擬合。
使用2020年9月8日至2021年3月5日共124個(gè)數(shù)據(jù)進(jìn)行回測(cè),基于預(yù)測(cè)結(jié)果,部分的交易細(xì)節(jié)如下:
我們的策略在8天內(nèi)的總收益為0.4元,在一定程度上證明了策略是有效的。
雖然在回測(cè)的時(shí)候,取得了一個(gè)相對(duì)可觀的收益,但是這僅僅是建立在對(duì)廣州酒家一只股票的交易策略上,在運(yùn)用模型的時(shí)候?qū)@只股票進(jìn)行了單獨(dú)的網(wǎng)格化調(diào)參,將RMSE降至了一個(gè)最低的水平。所以如果要運(yùn)用這個(gè)策略進(jìn)行其他股票的交易,本文并不能保證這個(gè)策略是否有效。
本文通過使用XGBoost算法構(gòu)建了一個(gè)監(jiān)督式學(xué)習(xí)的股價(jià)預(yù)測(cè)模型,并通過網(wǎng)格化調(diào)參方法對(duì)模型中的關(guān)鍵參數(shù)進(jìn)行了最優(yōu)化調(diào)整,其中我們選取的最優(yōu)化指標(biāo)是使得模型的RMSE達(dá)到最小。
通過網(wǎng)格化調(diào)節(jié)參數(shù)后,得到了一個(gè)最優(yōu)化的模型對(duì)廣州酒家的股價(jià)進(jìn)行了預(yù)測(cè)。本文的策略是日頻的,所以它必須在前一日收盤時(shí)決定買入或者賣空,并僅能在收盤前完成交易?;谠摬呗?,使用廣州酒家8天的股價(jià)進(jìn)行回測(cè),獲得一定的收益,這說明我們基于XGBoost預(yù)測(cè)股價(jià)構(gòu)建的量化交易策略是相對(duì)有效的。
行
相關(guān)鏈接
財(cái)務(wù)管理是在一定的整體目標(biāo)下,關(guān)于資產(chǎn)的購置(投資),資本的融通(籌資)和經(jīng)營(yíng)中現(xiàn)金流量(營(yíng)運(yùn)資金),以及利潤(rùn)分配的管理。財(cái)務(wù)管理是企業(yè)管理的一個(gè)組成部分,它是根據(jù)財(cái)經(jīng)法規(guī)制度,按照財(cái)務(wù)管理的原則,組織企業(yè)財(cái)務(wù)活動(dòng),處理財(cái)務(wù)關(guān)系的一項(xiàng)經(jīng)濟(jì)管理工作。簡(jiǎn)單的說,財(cái)務(wù)管理是組織企業(yè)財(cái)務(wù)活動(dòng),處理財(cái)務(wù)關(guān)系的一項(xiàng)經(jīng)濟(jì)管理工作。