許藝瑋,陸萬榮
1.云南財(cái)經(jīng)大學(xué)商學(xué)院,云南 昆明,650221;2.昆明能訊科技有限責(zé)任公司,云南 昆明,650000
股票數(shù)據(jù)作為一種典型的金融數(shù)據(jù),進(jìn)行股票分析和預(yù)測(cè)可以直觀了解經(jīng)濟(jì)的發(fā)展動(dòng)態(tài)和變化趨勢(shì)。尤其對(duì)于各類投資者(機(jī)構(gòu)),股票價(jià)格、成交量等核心指標(biāo)是他們進(jìn)行投資決定的重要參考依據(jù)之一。但是股票的變化趨勢(shì)不僅受資本市場(chǎng)、社會(huì)經(jīng)濟(jì)的影響,還被政策、社會(huì)活動(dòng)等非經(jīng)濟(jì)因素影響,因此股票預(yù)測(cè)十分具有挑戰(zhàn)性[1]。
綜上所述,股票數(shù)據(jù)分析和趨勢(shì)預(yù)測(cè)的現(xiàn)實(shí)意義十分重大。此外,鑒于股票數(shù)據(jù)非平穩(wěn)、非線性的特點(diǎn),在數(shù)據(jù)領(lǐng)域的研究?jī)r(jià)值也越來越突出。對(duì)此,國內(nèi)外的諸多學(xué)者對(duì)股票數(shù)據(jù)做了多層次的研究。2013,年Funatsu和Kaneko研究了支持向量機(jī)自適應(yīng)感知預(yù)測(cè),建立了可靠的回歸預(yù)測(cè)模型[2]。2016年,河北金融學(xué)院的吳玉霞和南京財(cái)經(jīng)大學(xué)的溫欣對(duì)華泰證券250期的股票建立了ARIMA預(yù)測(cè)模型,證實(shí)了該模型對(duì)短期股票價(jià)格預(yù)測(cè)效果較好[3]。2017年,周寧等人研究了馬爾可夫在時(shí)間序列預(yù)測(cè)中的應(yīng)用,提出了馬爾可夫和BP神經(jīng)網(wǎng)絡(luò)組合的股票價(jià)格預(yù)測(cè)模型[4]。柴巖和段大鍇在2019年提出利用RBM進(jìn)行特征提取,借助差分進(jìn)化算法對(duì)支持向量機(jī)進(jìn)行參數(shù)優(yōu)化,在恒生股票上證實(shí)了所構(gòu)建模型的有效性[5]。2021年,山東大學(xué)的高德亮提出了WT-GRU股指預(yù)測(cè)模型,首先通過小波變換進(jìn)行特征分解,再使用GRU神經(jīng)網(wǎng)絡(luò)建立股票價(jià)格預(yù)測(cè)模型,最后通過AdamW對(duì)GRU預(yù)測(cè)模型進(jìn)行性能優(yōu)化,在上證指數(shù)上的驗(yàn)證表明該模型有效降低了評(píng)價(jià)指標(biāo)RMSE、MAE和R2的誤差得分[6]。
分析上述研究成果可以發(fā)現(xiàn),股票預(yù)測(cè)模型從統(tǒng)計(jì)學(xué)習(xí)發(fā)展到機(jī)器學(xué)習(xí),再到深度學(xué)習(xí),每個(gè)階段的研究都取得了不錯(cuò)的成果。本文提出使用極限梯度提升機(jī)(eXtreme Gradient Boosting,XGBoost)和長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short Term Memory networks,LSTM)組合的方式進(jìn)行股票價(jià)格預(yù)測(cè),兩者都已經(jīng)證明了自己在時(shí)序數(shù)據(jù)預(yù)測(cè)中的先進(jìn)性,先使用XGBoost對(duì)原始數(shù)據(jù)進(jìn)行特征預(yù)測(cè),再將預(yù)測(cè)結(jié)果作為新特征加入原始特征通過LSTM建模,最后在茅臺(tái)、五糧液、洋河、汾酒四支白酒股票上進(jìn)行實(shí)例驗(yàn)證,并對(duì)預(yù)測(cè)結(jié)果進(jìn)行分析。
本文通過baostock庫獲取到了四支白酒類股票,分別是貴州茅臺(tái)、五糧液、洋河股份和山西汾酒,股票代碼分別是“sh.600519”、“sz.000858”、“sz.002304”和“sh.600809”。將每日收盤價(jià)作為股票價(jià)格指數(shù)(以下簡(jiǎn)稱為:股指),近三年的股指變化趨勢(shì)如圖1所示。
圖1 股票價(jià)格曲線
從圖1中可以看出,四支股票的收盤價(jià)整體變化趨勢(shì)相同,漲跌的周期一致。為了更直觀地了解各支股票的變化趨勢(shì),對(duì)股指進(jìn)行移動(dòng)平均,結(jié)果如圖2所示。
圖2 移動(dòng)平均曲線
圖2分別展示了各支股票在3天、5天和7天移動(dòng)平均的情況下股指的變化趨勢(shì),隨著移動(dòng)平均天數(shù)的增加,股指變化趨向于一致。
非平穩(wěn)性是股指曲線的典型特征之一,也是時(shí)間序列數(shù)據(jù)預(yù)測(cè)研究的重點(diǎn)。對(duì)四支股票的股指進(jìn)行ADF檢驗(yàn)后得到表1。ADF檢驗(yàn)假設(shè)序列平穩(wěn),表中四支股票股指序列的p-value遠(yuǎn)大于0.05,因此拒絕原假設(shè),股指序列不平穩(wěn)。
表1 ADF 檢驗(yàn)結(jié)果
XGBoost算法[7]和LSTM算法[8]已經(jīng)在諸多領(lǐng)域應(yīng)用,前者屬于機(jī)器學(xué)習(xí)中的集成學(xué)習(xí)方法,后者屬于深度學(xué)習(xí)中循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[9]的一個(gè)變種,兩者在時(shí)間序列預(yù)測(cè)領(lǐng)域都展現(xiàn)了其強(qiáng)大的擬合能力和泛化性。
XGBoost是Boosting集成算法的一種,也是一種“樹”模型,基本組成是CART回歸樹,最早被提出用于有監(jiān)督回歸任務(wù),后來也被應(yīng)用于分類領(lǐng)域。該算法思想就是不斷地添加樹,不斷地進(jìn)行特征分裂來生長(zhǎng)一棵樹,每次添加一個(gè)樹,其實(shí)是學(xué)習(xí)一個(gè)新函數(shù),去擬合上次預(yù)測(cè)的殘差。當(dāng)我們訓(xùn)練完成得到k棵樹,預(yù)測(cè)一個(gè)樣本的分?jǐn)?shù),其實(shí)就是根據(jù)這個(gè)樣本的特征,在每棵樹中會(huì)落到對(duì)應(yīng)的一個(gè)葉子節(jié)點(diǎn),每個(gè)葉子節(jié)點(diǎn)就對(duì)應(yīng)一個(gè)分?jǐn)?shù),最后只需要將每棵樹對(duì)應(yīng)的分?jǐn)?shù)加起來就是該樣本的預(yù)測(cè)值。對(duì)于第t棵樹,第i個(gè)樣本的模型預(yù)測(cè)值如(1)式:
XGBoost的目標(biāo)函數(shù)由式(2)所示,有兩部分構(gòu)成:殘差和正則化項(xiàng)。第一部分很好理解,真實(shí)值和預(yù)測(cè)值的誤差,第二部分則是一個(gè)復(fù)雜的求和,可以將其看作是一個(gè)正則化項(xiàng),并且兩部分的維度不同,i是樣本數(shù)量,j是數(shù)的數(shù)量,是一個(gè)累加值。
XGB求解采用了和CART回歸數(shù)一樣的貪婪算法,無法遍歷所有樹結(jié)構(gòu),遍歷了所有特征的特征切分點(diǎn),同時(shí)也對(duì)樹的生長(zhǎng)在增益和深度方面做了限制。
LSTM是循環(huán)神經(jīng)網(wǎng)絡(luò)RNN的改進(jìn),是為了解決RNN在處理長(zhǎng)期依賴時(shí)涉及雅可比矩陣的多次相乘導(dǎo)致的梯度消失或者梯度膨脹問題。LSTM是門限RNN中最著名的一種,LSTM的巧妙之處在于通過增加輸入門限,遺忘門限和輸出門限,使得自循環(huán)的權(quán)重是變化的,這樣一來在模型參數(shù)固定的情況下,不同時(shí)刻的積分尺度可以動(dòng)態(tài)改變,從而避免了梯度消失或者梯度膨脹的問題,結(jié)構(gòu)如圖3所示。
圖3 LSTM 結(jié)構(gòu)圖
其中,最核心的部分是細(xì)胞狀態(tài),也就是圖3中黃色框內(nèi)部分。該結(jié)構(gòu)承載著之前所有狀態(tài)的信息,每當(dāng)通過cell state時(shí)怎么通過“門”進(jìn)行信息取舍?!伴T”由三部門組成,紅色框表示遺忘門,藍(lán)色框表示輸入門,綠色框表示輸出門。遺忘門決定了要從cell state中舍棄什么信息。其通過輸入上一狀態(tài)的輸出ht1-、當(dāng)前狀態(tài)輸入信息xt到一個(gè)Sigmoid函數(shù)中,產(chǎn)生一個(gè)介于0到1之間的數(shù)值,與cell state相乘之后來確定舍棄或保留多少信息。輸入門決定了要往cell state中保存什么新的信息。其通過輸入上一狀態(tài)的輸出、當(dāng)前狀態(tài)輸入信息xt到一個(gè)Sigmoid函數(shù)中,產(chǎn)生it來確定我們需要保留多少的新信息。同時(shí),一個(gè)tanh層會(huì)通過上一狀態(tài)的輸出ht-1、當(dāng)前狀態(tài)輸入信息來得到一個(gè)將要加入到cell state中的“候選新信息”。將剛才得到的數(shù)值it與“候選新信息”相乘得到我們真正要加入到cellstate中的更新信息。輸出門決定了要從cell state中輸出什么信息。通過數(shù)值ot來確定需要輸出多少cell state中的信息。cell state的信息在與ht相乘時(shí)首先會(huì)經(jīng)過一個(gè)tanh層進(jìn)行非線性變換。得到LSTM block的輸出信息ht。遺忘門、輸入門和輸出門的計(jì)算公式如(3)、(4)、(5)式所示。
前面兩個(gè)小節(jié)敘述了XGBoost和LSTM的基本原理,XGBoost對(duì)特征有較強(qiáng)的擬合能力,LSTM對(duì)長(zhǎng)期依賴問題具有積極作用。借助Stacking集成思想,首先通過XGBoost在已有特征的基礎(chǔ)上構(gòu)建預(yù)測(cè)模型,將預(yù)測(cè)特到的結(jié)果作為新特征加入原始特征中,再利用LSTM建立最終的股票價(jià)格預(yù)測(cè)模型,詳細(xì)結(jié)構(gòu)如圖4所示。
圖4 XGB-LSTM 結(jié)構(gòu)圖
以貴州茅臺(tái)、五糧液、洋河股份和山西汾酒四支白酒股票的從2017年3月至2022年3月的真實(shí)股票數(shù)據(jù)作為實(shí)驗(yàn)樣本。
為了比較不同預(yù)測(cè)模型在各支股票上預(yù)測(cè)的性能,選擇兩個(gè)評(píng)價(jià)指標(biāo)進(jìn)行度量,分別是平均絕對(duì)誤差(Mean Absolute Error,MAE)和均方誤差(Mean Squared Error,MSE),計(jì)算公式如式(6)、(7)所示:
選擇最近30天的數(shù)據(jù)作為測(cè)試數(shù)據(jù),其他作為訓(xùn)練集。XGBoost和LSTM的主要參數(shù)選擇如表2所示。
表2 主要參數(shù)取值
圖5,展示了不同模型對(duì)近30天真實(shí)股票價(jià)格的預(yù)測(cè)曲線。從圖中可以看出:在茅臺(tái)、洋河、汾酒三只股票上,Xgboost和本文提出的組合模型對(duì)真實(shí)值的擬合度較高,在五糧液股票上LSTM模型的擬合度最高,XGB-LSTM組合模型次之。
圖5 不同模型預(yù)測(cè)曲線對(duì)比圖
各模型評(píng)價(jià)在評(píng)價(jià)指標(biāo)MAE和MSE上的表現(xiàn)如表3所示。MAE和MSE均表示損失值,取值越小表示模型預(yù)測(cè)越準(zhǔn)確。在表3中最好得分以加黑突出表示,明顯可以發(fā)現(xiàn),除了在五糧液股票上LSTM得分最高,在其他三支股票上都是本文提出的XGB-LSTM組合模型得分最高。證明了XGB-LSTM在股票預(yù)測(cè)中能夠產(chǎn)生積極作用,對(duì)金融領(lǐng)域時(shí)間序列預(yù)測(cè)建模型提供了新思路。
表3 MAE 和MSE 得分
本文在XGBoost和LSTM模型的基礎(chǔ)上提出了兩者的組合模型,將XGBoost的預(yù)測(cè)結(jié)果作為新特征重新利用LSTM進(jìn)行建模,并在4支白酒股票上進(jìn)行實(shí)例驗(yàn)證,實(shí)驗(yàn)結(jié)果證明XGB-LSTM組合模型在大多數(shù)情況下都要優(yōu)于XGBoost和LSTM單一模型。