(東華大學旭日工商管理學院 上海 200050)
在預測金融時間序列的問題中,關于股票價格指數的預測得到了諸多學者的關注。股票指數不僅反映整個市場的價格趨勢和變動情況,還能反映國民經濟整體發展形勢,同時也對投資者投資決策具有重要的參考價值,是靈敏反映市場社會、政治、經濟變化情況的晴雨表。因此,預測股票指數具有重要意義。但由于市場受到諸多因素的影響,股指的不確定性增加,預測股票指數走勢成為最具挑戰性的金融時間序列預測問題之一。
與傳統的統計方法相比,機器學習在分類和預測等問題上的優勢日益凸顯。將機器學習方法應用在股票價格的預測上逐漸成為國內外學者研究的熱點。Yakup Kara(2011)[1]等基于人工神經網絡(ANN)和支持向量機(SVM)預測了指數的走勢,他們選擇多項技術指標作為模型的輸入,對模型進行調參后,ANN模型與SVM模型的準確率均超過了70%,且ANN模型的平均預測能力明顯優于SVM模型。Jigar Patel等(2015)[2]討論了預測印度股票市場單個股票和股指的走勢問題,他們研究比較了ANN、SVM、隨機森林與樸素貝葉斯這4種預測模型,結果發現,當輸入指標為連續值時,隨機森林在整體性能上優于其他3種預測模型。不僅如此,他們還發現,當輸入指標為趨勢確定性數據時,所有模型的預測準確率都得到了改善。冉楊帆等(2018)[3]則結合了情感分析與機器學習方法,以股票的輿論新聞數據為基礎,運用BP神經網絡與支持向量機回歸(SVR)兩種方法,對20只股票的價格進行了預測,結果表明,SVR模型的預測正確率更高。王芊(2019)[4]基于機器學習預測并分析了股票收益率變化方向,綜合考慮了技術指標、基本面指標和輿情指標,研究發現極度梯度提升樹XGBoost算法的準確率比隨機森林、支持向量機等多種前沿機器學習方法高。
由于研究者選擇的輸入變量、輸出變量及應用的股票市場有所不同,各機器學習方法的預測表現也有所差異。但總體來說,相對于傳統的統計方法,越來越多的學者更傾向于選擇機器學習方法來預測股市走勢問題。本文借鑒國內外學者的研究,以滬深300指數為市場代表,建立10個技術面指標,通過支持向量機、隨機森林、XGBoost預測股指的價格變動方向,并對比分析各模型的準確率。
滬深300指數集合了滬深兩個市場流動性最強、規模最大的300只股票,是A股最具代表性的核心指數。本文以滬深300指數為代表來預測股市的漲跌。選取2006年1月至2019年8月共計3 323個交易日的開盤價(Ot)、最低價(Lt)、最高價(Ht)、收盤價Ct以及成交量(Volt)指標,以此為基礎建立如表1所示的10個技術指標。

表1 技術指標建立

由于每個技術指標具有不同的量綱與數量級,本文將做標準化處理后作為模型的特征輸入。輸出特征為下一日股指的價格變動方向,將其轉化為一個二分類問題,分類結果為“上漲”和“下跌”。

為輸出變量,class=1代表上漲,class=0代表下跌或不變。
相對于傳統的邏輯回歸、決策樹簡單的機器學習方法,支持向量機、隨機森林以及新穎的XGBoost等機器學習方法因為分類性能好、準確率高等優勢得到學者的廣泛應用。本文試圖通過建立支持向量機、隨機森林和XGBoost模型預測滬深300指數價格變化方向,并對比不同機器學習方法的準確率。本文選取兩分類模型中常用評價指標(見表2)以及ROC曲線來度量各模型的分類性能。評價指標計算方式依賴混淆矩陣見表3。而ROC曲線向上離對角線越遠,曲線下的面積AUC值就越大,則說明模型的分類性能越好。

表2 模型評價指標

表3 混淆矩陣
本文研究的樣本區間包括2006年1月至2019年8月共計3 323個交易日的數據,該區間包含了股市2007年與2015年兩次大起大落時期,這對測試模型的穩健性具有重要意義。為測試模型準確性,本文將樣本數據分為訓練集和測試集,其中訓練集占70%,測試集占30%。對10個技術指標做標準化處理后,分別使用支持向量機、隨機森林和XGBoost模型對訓練集監督訓練,并對測試集的進行預測,以檢驗模型的準確性。
SVM是比較常用的分類算法,其核心是采用線性分類器,當數據在當前維度下不可分割時,可以映射至更高的維度上。因此它在識別高維數據時要優于其他機器學習模型。本文經過多次參數調整,當懲罰項C取3時,模型的分類性能較好。利用訓練好的SVM模型在測試集上預測,輸出的混淆矩陣見表4,ROC曲線見圖1。

表4 SVM測試集混淆矩陣

圖1 SVM測試集ROC曲線
由表4可知,SVM模型預測下一交易日股指價格上漲且實際也上漲的有344次,預測為股指價格下跌且實際也下跌的有199次,得到模型的準確率為0.544 6。圖1展示了SVM模型測試集的ROC曲線,該模型的AUC值為0.545,曲線偏離對角線有一定距離,模型分類性能一般。
隨機森林實質是對決策樹算法的改進,將多個決策樹合并在一起,每棵樹建立依賴獨立抽取的樣本。由于單棵樹的分類能力可能很小,但在隨機產生大量的決策樹后,一個測試樣本可以通過每一棵樹的分類結果經統計后選擇最可能的分類。經過多次實驗,本文最終設置森林中樹的棵數為300棵。利用訓練好的隨機森林模型在測試集上預測,輸出的混淆矩陣見表5,輸出的ROC曲線見圖2。

表5 隨機森林測試集混淆矩陣

圖2 隨機森林測試集ROC曲線
由表5可知,隨機森林預測為1且實際也為1的次數有336次,預測為1實際為零的次數有204次,實際為零預測為1的次數有236次,預測為零實際也為零的次數有222次。最終可得隨機森林模型的準確率為0.559 7。圖2展示了隨機森林模型的ROC曲線,其AUC值為0.554,ROC曲線偏離對角線有一定距離,模型分類效果相比支持向量機有了提升。
XGBoost,極端梯度提升,是GBDT的一個變種,GBDT在優化時只用到一階導數,而XGBoost則對代價函數做了二階泰勒展開,同時使用了一階導數和二階導數,并且在損失函數中引入了正則化項,用于控制模型的復雜度,防止模型過擬合。經過多次實驗,當收縮步長設置為0.25,迭代次數為25次,樹的最大深度設置為10時,模型得到了較好的分類效果。將學習好的模型用于測試集,輸出的混淆矩陣見表6,得到的ROC曲線見圖3。

表6 XGBoost測試集混淆矩陣

圖3 XGBoost測試集ROC曲線
由表6可知,XGBoost預測下一交易日股指價格上漲且實際情況也為上漲的次數有339次,預測下一交易日股指下跌實際情況上漲的有201次,預測為上漲實際為下跌的有232次,預測為下跌實際也下跌的有225次。最終可得XGBoost模型的準確率為0.565 7。圖3展示了XGBoost模型的ROC曲線,其AUC值為0.560,ROC曲線偏離對角線有一定距離,XGBoost模型分類性能相對較好。
在二分類條件下比較各算法的預測準確率,即把下一交易日滬深300指數價格上升的樣本設置標簽為1,價格下降的樣本設置標簽為零。利用支持向量機、隨機森林、XGBoost三種機器學習方法預測的結果見表7。
由表7可見,SVM預測準確率為0.544 6,隨機森林預測準確率為0.5597,XGBoost預測準確率為0.565 7,XGBoost相對SVM提高了3.87%,相對隨機森林提高了1.08%;SVM的AUC值為0.545,隨機森林的AUC值為0.554,XGBoost的AUC值為0.560,XGBoost相對SVM提高了2.75%,相對隨機森林提高了1.08%;其他指標也具有相似的情況。隨著模型準確度的提高,模型的AUC值越來越大,模型分類性也越來越好。由此可見,XGBoost的預測精度相對SVM和隨機森林都有了較大幅度的提升,其中相對SVM的提升幅度更為明顯。
機器學習是人工智能及模式識別領域的共同研究熱點,最前沿的研究領域之一。如何將其應用于金融領域,是近年來學者和投資者廣泛關注、積極探索的問題。本文通過支持向量機、隨機森林和XGBoost模型預測滬深300指數價格變動方向,并且通過準確率、AUC值等系統比較了該三種模型的分類性能,得出如下結論。第一,從數據本身看,滬深300指數具有反映滬深市場整體形勢的能力,能夠較好地反映市場價格的變化方向。本文以其每日開盤價、最高價、最低價、收盤價、成交量為基礎建立10個技術面指標作為SVM、隨機森林和XGBoost的特征輸入,可以較好地預測下一交易日的變動方向。其中SVM的預測準確率為0.544 6,隨機森林的準確率為0.559 7,XGBoost的準確率為0.565 7,在一定程度上證明了機器學習方法在金融資產價格預測領域的有效性。第二,從使用的機器學習方法看,XGBoost模型預測準確率相對SVM提高了3.87%,相對隨機森林提高了1.08%,說明了XGBoost的分類性能優于SVM和隨機森林。此外,XGBoost方法新穎,用于預測金融資產價格的研究相對較少,本文將其用于預測滬深300指數的價格變動方向,在一定程度上證明了該方法的可行性,將其用于更多的領域是今后的研究方向。