許藝瑋,陸萬榮
1.云南財經大學商學院,云南 昆明,650221;2.昆明能訊科技有限責任公司,云南 昆明,650000
股票數據作為一種典型的金融數據,進行股票分析和預測可以直觀了解經濟的發展動態和變化趨勢。尤其對于各類投資者(機構),股票價格、成交量等核心指標是他們進行投資決定的重要參考依據之一。但是股票的變化趨勢不僅受資本市場、社會經濟的影響,還被政策、社會活動等非經濟因素影響,因此股票預測十分具有挑戰性[1]。
綜上所述,股票數據分析和趨勢預測的現實意義十分重大。此外,鑒于股票數據非平穩、非線性的特點,在數據領域的研究價值也越來越突出。對此,國內外的諸多學者對股票數據做了多層次的研究。2013,年Funatsu和Kaneko研究了支持向量機自適應感知預測,建立了可靠的回歸預測模型[2]。2016年,河北金融學院的吳玉霞和南京財經大學的溫欣對華泰證券250期的股票建立了ARIMA預測模型,證實了該模型對短期股票價格預測效果較好[3]。2017年,周寧等人研究了馬爾可夫在時間序列預測中的應用,提出了馬爾可夫和BP神經網絡組合的股票價格預測模型[4]。柴巖和段大鍇在2019年提出利用RBM進行特征提取,借助差分進化算法對支持向量機進行參數優化,在恒生股票上證實了所構建模型的有效性[5]。2021年,山東大學的高德亮提出了WT-GRU股指預測模型,首先通過小波變換進行特征分解,再使用GRU神經網絡建立股票價格預測模型,最后通過AdamW對GRU預測模型進行性能優化,在上證指數上的驗證表明該模型有效降低了評價指標RMSE、MAE和R2的誤差得分[6]。
分析上述研究成果可以發現,股票預測模型從統計學習發展到機器學習,再到深度學習,每個階段的研究都取得了不錯的成果。本文提出使用極限梯度提升機(eXtreme Gradient Boosting,XGBoost)和長短期記憶網絡(Long Short Term Memory networks,LSTM)組合的方式進行股票價格預測,兩者都已經證明了自己在時序數據預測中的先進性,先使用XGBoost對原始數據進行特征預測,再將預測結果作為新特征加入原始特征通過LSTM建模,最后在茅臺、五糧液、洋河、汾酒四支白酒股票上進行實例驗證,并對預測結果進行分析。
本文通過baostock庫獲取到了四支白酒類股票,分別是貴州茅臺、五糧液、洋河股份和山西汾酒,股票代碼分別是“sh.600519”、“sz.000858”、“sz.002304”和“sh.600809”。將每日收盤價作為股票價格指數(以下簡稱為:股指),近三年的股指變化趨勢如圖1所示。

圖1 股票價格曲線
從圖1中可以看出,四支股票的收盤價整體變化趨勢相同,漲跌的周期一致。為了更直觀地了解各支股票的變化趨勢,對股指進行移動平均,結果如圖2所示。

圖2 移動平均曲線
圖2分別展示了各支股票在3天、5天和7天移動平均的情況下股指的變化趨勢,隨著移動平均天數的增加,股指變化趨向于一致。
非平穩性是股指曲線的典型特征之一,也是時間序列數據預測研究的重點。對四支股票的股指進行ADF檢驗后得到表1。ADF檢驗假設序列平穩,表中四支股票股指序列的p-value遠大于0.05,因此拒絕原假設,股指序列不平穩。

表1 ADF 檢驗結果
XGBoost算法[7]和LSTM算法[8]已經在諸多領域應用,前者屬于機器學習中的集成學習方法,后者屬于深度學習中循環神經網絡(Recurrent Neural Network,RNN)[9]的一個變種,兩者在時間序列預測領域都展現了其強大的擬合能力和泛化性。
XGBoost是Boosting集成算法的一種,也是一種“樹”模型,基本組成是CART回歸樹,最早被提出用于有監督回歸任務,后來也被應用于分類領域。該算法思想就是不斷地添加樹,不斷地進行特征分裂來生長一棵樹,每次添加一個樹,其實是學習一個新函數,去擬合上次預測的殘差。當我們訓練完成得到k棵樹,預測一個樣本的分數,其實就是根據這個樣本的特征,在每棵樹中會落到對應的一個葉子節點,每個葉子節點就對應一個分數,最后只需要將每棵樹對應的分數加起來就是該樣本的預測值。對于第t棵樹,第i個樣本的模型預測值如(1)式:

XGBoost的目標函數由式(2)所示,有兩部分構成:殘差和正則化項。第一部分很好理解,真實值和預測值的誤差,第二部分則是一個復雜的求和,可以將其看作是一個正則化項,并且兩部分的維度不同,i是樣本數量,j是數的數量,是一個累加值。

XGB求解采用了和CART回歸數一樣的貪婪算法,無法遍歷所有樹結構,遍歷了所有特征的特征切分點,同時也對樹的生長在增益和深度方面做了限制。
LSTM是循環神經網絡RNN的改進,是為了解決RNN在處理長期依賴時涉及雅可比矩陣的多次相乘導致的梯度消失或者梯度膨脹問題。LSTM是門限RNN中最著名的一種,LSTM的巧妙之處在于通過增加輸入門限,遺忘門限和輸出門限,使得自循環的權重是變化的,這樣一來在模型參數固定的情況下,不同時刻的積分尺度可以動態改變,從而避免了梯度消失或者梯度膨脹的問題,結構如圖3所示。

圖3 LSTM 結構圖
其中,最核心的部分是細胞狀態,也就是圖3中黃色框內部分。該結構承載著之前所有狀態的信息,每當通過cell state時怎么通過“門”進行信息取舍。“門”由三部門組成,紅色框表示遺忘門,藍色框表示輸入門,綠色框表示輸出門。遺忘門決定了要從cell state中舍棄什么信息。其通過輸入上一狀態的輸出ht1-、當前狀態輸入信息xt到一個Sigmoid函數中,產生一個介于0到1之間的數值,與cell state相乘之后來確定舍棄或保留多少信息。輸入門決定了要往cell state中保存什么新的信息。其通過輸入上一狀態的輸出、當前狀態輸入信息xt到一個Sigmoid函數中,產生it來確定我們需要保留多少的新信息。同時,一個tanh層會通過上一狀態的輸出ht-1、當前狀態輸入信息來得到一個將要加入到cell state中的“候選新信息”。將剛才得到的數值it與“候選新信息”相乘得到我們真正要加入到cellstate中的更新信息。輸出門決定了要從cell state中輸出什么信息。通過數值ot來確定需要輸出多少cell state中的信息。cell state的信息在與ht相乘時首先會經過一個tanh層進行非線性變換。得到LSTM block的輸出信息ht。遺忘門、輸入門和輸出門的計算公式如(3)、(4)、(5)式所示。

前面兩個小節敘述了XGBoost和LSTM的基本原理,XGBoost對特征有較強的擬合能力,LSTM對長期依賴問題具有積極作用。借助Stacking集成思想,首先通過XGBoost在已有特征的基礎上構建預測模型,將預測特到的結果作為新特征加入原始特征中,再利用LSTM建立最終的股票價格預測模型,詳細結構如圖4所示。

圖4 XGB-LSTM 結構圖
以貴州茅臺、五糧液、洋河股份和山西汾酒四支白酒股票的從2017年3月至2022年3月的真實股票數據作為實驗樣本。
為了比較不同預測模型在各支股票上預測的性能,選擇兩個評價指標進行度量,分別是平均絕對誤差(Mean Absolute Error,MAE)和均方誤差(Mean Squared Error,MSE),計算公式如式(6)、(7)所示:

選擇最近30天的數據作為測試數據,其他作為訓練集。XGBoost和LSTM的主要參數選擇如表2所示。

表2 主要參數取值
圖5,展示了不同模型對近30天真實股票價格的預測曲線。從圖中可以看出:在茅臺、洋河、汾酒三只股票上,Xgboost和本文提出的組合模型對真實值的擬合度較高,在五糧液股票上LSTM模型的擬合度最高,XGB-LSTM組合模型次之。

圖5 不同模型預測曲線對比圖
各模型評價在評價指標MAE和MSE上的表現如表3所示。MAE和MSE均表示損失值,取值越小表示模型預測越準確。在表3中最好得分以加黑突出表示,明顯可以發現,除了在五糧液股票上LSTM得分最高,在其他三支股票上都是本文提出的XGB-LSTM組合模型得分最高。證明了XGB-LSTM在股票預測中能夠產生積極作用,對金融領域時間序列預測建模型提供了新思路。

表3 MAE 和MSE 得分
本文在XGBoost和LSTM模型的基礎上提出了兩者的組合模型,將XGBoost的預測結果作為新特征重新利用LSTM進行建模,并在4支白酒股票上進行實例驗證,實驗結果證明XGB-LSTM組合模型在大多數情況下都要優于XGBoost和LSTM單一模型。