錢琦淼,張 朵,王映艨,劉 睿,蔡飛君
(無錫太湖學(xué)院 會(huì)計(jì)學(xué)院,江蘇 無錫 214064)
近年來,機(jī)器學(xué)習(xí)在股票價(jià)格預(yù)測的應(yīng)用中越來越廣泛,量化投資的形式也迅速占據(jù)著金融市場。徐浩然等人(2020)針對股票預(yù)測研究的CNN和LSTM兩種深度學(xué)習(xí)算法做了優(yōu)缺點(diǎn)的闡述分析。CNN的特征選擇具有更好的表現(xiàn),而LSTM則更加關(guān)注時(shí)間序列的相關(guān)性,并且提出將兩種模型融合,各自發(fā)揮優(yōu)勢,得到最優(yōu)的預(yù)測效果。由于股票的復(fù)雜以及不確定性,所以到現(xiàn)在為止國內(nèi)針對單只股票的走勢預(yù)測研究較少,大多基于海外市場,而另一部分集中于對算法進(jìn)行優(yōu)化。文章學(xué)習(xí)前人對個(gè)股的研究思路,嘗試并選用隨機(jī)森林和GBDT兩種機(jī)器學(xué)習(xí)的算法對寧德時(shí)代的收益率進(jìn)行預(yù)測,通過不斷的對參數(shù)調(diào)整,使得模型預(yù)測效果達(dá)到最優(yōu)。探索兩種機(jī)器學(xué)習(xí)的算法在預(yù)測未來股票的收益情況上的優(yōu)劣比較和優(yōu)化,這是文章研究的目的。
機(jī)器學(xué)習(xí)現(xiàn)有的主要研究是在對數(shù)據(jù)的初步了解和學(xué)習(xí)目的分析的基礎(chǔ)上,選擇合適的學(xué)習(xí)算法進(jìn)行訓(xùn)練,最后利用訓(xùn)練后的模型對數(shù)據(jù)進(jìn)行分析和預(yù)測。文章中運(yùn)用到的機(jī)器學(xué)習(xí)算法有隨機(jī)森林和GBDT。
何裕(2014)通過決策樹、Logistic回歸模型、神經(jīng)網(wǎng)絡(luò)模型挖掘研究公司財(cái)務(wù)比率指標(biāo)的變化和股價(jià)變化趨勢的內(nèi)在聯(lián)系,最后組合模型構(gòu)建,證實(shí)了技術(shù)對于股價(jià)預(yù)測的可行性與合理性。隨機(jī)森林是對決策樹算法的一種改進(jìn),將多個(gè)決策樹組合,每棵樹都通過獨(dú)立提取的樣本建立,采用自上而下的遞歸方法,對未知數(shù)據(jù)進(jìn)行分類,按照決策樹上生成時(shí)所采用的分割性逐層往下,直到一個(gè)葉子節(jié)點(diǎn),到葉子節(jié)點(diǎn)處的熵值為零。在股市的應(yīng)用中,首先需要找到合適的分類器來闡述各因子與下期收益的關(guān)系,要利用歷史數(shù)據(jù),訓(xùn)練分類器。獲得參數(shù)后,再代入各股因子數(shù)據(jù)并分類,從而選取優(yōu)秀股。
胡謙(2016)結(jié)合機(jī)器學(xué)習(xí)、技術(shù)分析研究量化選股策略,首次將GBDT和GB Rank用于量化選股領(lǐng)域,自動(dòng)學(xué)習(xí)出能對股票未來表現(xiàn)進(jìn)行排序的模型,證明使用GBDT算法的兩個(gè)策略有較強(qiáng)盈利性。GBDT(Gradient Boosting + Dicision Tree)算法是Boosting迭代融合算法,在傳統(tǒng)機(jī)器學(xué)習(xí)算法中GBDT是最適合真實(shí)分布擬合的幾種算法之一。使用當(dāng)前模型中損失函數(shù)負(fù)梯度方向的值作為殘差的近似值,擬合CART回歸樹。GBDT將累積所有回歸樹的結(jié)果,并不斷減小訓(xùn)練過程中產(chǎn)生的殘差,以實(shí)現(xiàn)將數(shù)據(jù)分類或回歸的算法。
文章在建模分析部分采用 Python語言,本次實(shí)驗(yàn)選取的數(shù)據(jù)分析環(huán)境是Anaconda,采用Web應(yīng)用程序Jupyter Notebook進(jìn)行建模。
由于Tushare返回的絕大部分?jǐn)?shù)據(jù)格式都是pandas DataFrame類型,非常便于數(shù)據(jù)分析和可視化,減輕工作量,所以本次實(shí)驗(yàn)選取的數(shù)據(jù)來源于Tushare。
寧德時(shí)代(300750.SZ)作為新能源板塊中表現(xiàn)比較突出的股票,文章截取了其2016年1月1日到2021年2月4日的交易數(shù)據(jù),分別是交易日期、開盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)、昨收價(jià)、漲跌額、漲跌幅、成交量和成交額,一共649期。

圖1 部分?jǐn)?shù)據(jù)集描述
文章還對數(shù)據(jù)寧德時(shí)代的收盤價(jià)計(jì)算了100天的移動(dòng)平均值,并取每個(gè)滑窗的移動(dòng)平均值。從圖2中,可以看出2019年11月開始,寧德時(shí)代股票價(jià)格呈現(xiàn)明顯上升趨勢。

圖2 移動(dòng)平滑價(jià)格線
由于非平穩(wěn)型的趨勢線,實(shí)驗(yàn)決定預(yù)測寧德時(shí)代的收益情況。由于時(shí)間序列存在滯后性,于是在實(shí)驗(yàn)中設(shè)計(jì)了一些股票的滯后項(xiàng)——return-1,return-2,return-3。
文章收集數(shù)據(jù)的周期為2016年1月1日到2021年2月4日,選擇了開盤價(jià)、最高價(jià)、最低價(jià)等11個(gè)影響收益率的因子。文章將2016年1月1日到2020年10月1日之前的數(shù)據(jù)作為訓(xùn)練集,一共561期數(shù)據(jù)。2020年10月1日到2021年2月4日之間的數(shù)據(jù)作為測試集,一共83期數(shù)據(jù)。
實(shí)驗(yàn)過程中,文章首先引入決策樹,在隨機(jī)狀態(tài)為10,最大迭代次數(shù)為100,葉子節(jié)點(diǎn)最少樣本數(shù)為70的條件下建立模型,在擬合數(shù)據(jù)后進(jìn)行預(yù)測,訓(xùn)練集的平均絕對誤差是0.00748,測試集則是0.00752。從隨機(jī)森林這一模型中,它的隨機(jī)性難以對模型進(jìn)行解釋,因此猜測模型容易在噪聲過多的分類和回歸問題中過擬合。為了驗(yàn)證猜想,實(shí)驗(yàn)嘗試通過調(diào)參來提高模型的泛化能力。
在整個(gè)隨機(jī)森林調(diào)參過程中,要選擇一個(gè)適中的最大迭代次數(shù),故得到了實(shí)驗(yàn)中最佳的弱學(xué)習(xí)器迭代次數(shù)為5。在此基礎(chǔ)上,得到?jīng)Q策樹最大深度范圍為5,內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù)為100。由于內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù)還和決策樹其他的參數(shù)存在關(guān)聯(lián),實(shí)驗(yàn)還需要對內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù)和葉子節(jié)點(diǎn)最少樣本數(shù)一起調(diào)參,得到葉子節(jié)點(diǎn)最少樣本數(shù)30,內(nèi)部節(jié)點(diǎn)再劃分所需最小樣本數(shù)50。

圖3 部分?jǐn)?shù)據(jù)集描述
基于上述結(jié)果,再對最大特征數(shù)做調(diào)參,搜索得到最大特征數(shù)為5。經(jīng)過一系列調(diào)參,用搜索到的最佳參數(shù),得到最終的模型擬合訓(xùn)練集的平均絕對誤差值為0.005543,測試集是0.00920,結(jié)果發(fā)現(xiàn)無顯著變化。
GBDT和傳統(tǒng)的Adaboost有很大的不同,傳統(tǒng)的Adaboost會(huì)使用上一次迭代弱學(xué)習(xí)器的錯(cuò)誤率來更新訓(xùn)練集的權(quán)重,使迭代繼續(xù)進(jìn)行,而GBDT算法的弱學(xué)習(xí)器(基模型)是CART,故擬合出一棵CART回歸樹,對實(shí)驗(yàn)過程中構(gòu)成一個(gè)強(qiáng)學(xué)習(xí)器來說至關(guān)重要。在整體的迭代思維上,GBDT的迭代通常使用前向分布算法,損失函數(shù)的負(fù)梯度在當(dāng)前模型的值作為回歸提升樹殘差的近似值,在持續(xù)擬合的過程中,擬合值和目標(biāo)值之間的殘差會(huì)越來越小,每一棵樹的預(yù)測值加起來就是模型最終的預(yù)測結(jié)果。所以在本次實(shí)驗(yàn)中一共建立了學(xué)習(xí)器644個(gè),步長為0.1。最大的弱學(xué)習(xí)器的個(gè)數(shù)為默認(rèn)值100。
最終得到訓(xùn)練集的絕對誤差為0.000153,測試集為0.0137。預(yù)測收益率的標(biāo)準(zhǔn)差為0.03217,絕對誤差值過小,模型過擬合。筆者認(rèn)為應(yīng)當(dāng)通過調(diào)參來優(yōu)化模型的泛化能力。為了驗(yàn)證猜想,筆者開始進(jìn)行調(diào)參。首先調(diào)參需要選擇一個(gè)較小的步長來網(wǎng)格搜索最好的迭代次數(shù),得到最佳弱學(xué)習(xí)器的個(gè)數(shù)為80,樹的最大深度為9,最小樣本劃分樹為5,葉子節(jié)點(diǎn)最少樣本數(shù)為10,最大特征數(shù)目為5,而隨機(jī)狀態(tài)為10。修改成最優(yōu)參數(shù)后,得到測試集的絕對誤差為0.004412,訓(xùn)練集為0.001657。
從本次實(shí)驗(yàn)來看,能觀察到隨機(jī)森林這一模型訓(xùn)練速度更快,因?yàn)樘卣髯蛹请S機(jī)選取的,就不用做特征選擇。由于待選特征也是隨機(jī)選取,所以對特征缺失不敏感,調(diào)參后發(fā)現(xiàn)結(jié)果無顯著變化甚至比原來誤差更大,猜測存在過擬合現(xiàn)象,從而發(fā)現(xiàn)了隨機(jī)森林的缺點(diǎn),容易在噪聲過多的分類和回歸問題中過擬合;與單個(gè)決策樹相比,它的隨機(jī)性讓模型難以進(jìn)行解釋。
相較于隨機(jī)森林模型,GBDT具有以下兩個(gè)優(yōu)點(diǎn):其一,適用面廣,離散的或是連續(xù)的數(shù)據(jù)都可以處理;其二,GBDT模型的調(diào)參過程比較簡單,在相對小的調(diào)參過程下,GBDT的預(yù)測結(jié)果更為準(zhǔn)確。GBDT就最終的輸出結(jié)果而言,提升樹即是整個(gè)迭代過程生成的回歸樹的累加或加權(quán)累加,是基于權(quán)值的弱分類器集成,通過減少模型偏差提高性能。此外該模型對異常值也比隨機(jī)森林更敏感。
因此,從本次實(shí)驗(yàn)中發(fā)現(xiàn)GBDT精度略高于隨機(jī)森林模型,且在一些調(diào)整后,GBDT模型獲得了較好的預(yù)測效果。

圖4 訓(xùn)練集比較

圖5 測試集比較