李輝,化金金,鄒波蓉
(1.河南理工大學(xué) 物理與電子信息學(xué)院,河南 焦作 454000;2.河南理工大學(xué) 電氣工程與自動化學(xué)院,河南 焦作 454000)
股票是資本市場建設(shè)中的重要組成部分,股票行情對國家宏觀經(jīng)濟發(fā)展、投資機構(gòu)和投資者均有著重要意義。股市不僅能為投資者帶來較高的收益,而且可以增強投資的流動性和靈活性,方便投資者隨時將股票出售變現(xiàn),收回投資資金,因此,股市成為人們投資理財?shù)睦硐雸鏊?。影響股票市場價格變動的因素有很多,如公司新聞和業(yè)績、行業(yè)表現(xiàn)、投資者情緒、社會媒體輿論和經(jīng)濟因素等。股票價格的高波動性與不確定性,使其成為金融領(lǐng)域研究的一大難題。股票是風(fēng)險性資產(chǎn),對股票價格進行預(yù)測,可以幫助投資者防范風(fēng)險,提高股票投資的安全性和盈利性,因此,研究股票價格預(yù)測方法,對于最大限度地規(guī)避投資風(fēng)險和提高投資收益具有重要的現(xiàn)實意義。
傳統(tǒng)預(yù)測方法往往難以把控股價變動的隨機性與規(guī)律性之間的平衡,存在或多或少的缺陷[1]。隨著技術(shù)進步,機器學(xué)習(xí)和深度學(xué)習(xí)算法在金融研究領(lǐng)域獲得了廣泛應(yīng)用。郝知遠(yuǎn)[2]使用支持向量機(SVM)對股票價格變化進行建模,該模型以常用的技術(shù)指標(biāo)作為特征,但依據(jù)個人經(jīng)驗選取指標(biāo),主觀性較強;A.Balaji等[3]基于長短期記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和極限學(xué)習(xí)機(ELM)4種深度學(xué)習(xí)模型對標(biāo)準(zhǔn)普爾(S&P)BANKEX指數(shù)中的股票價格進行預(yù)測,結(jié)果表明,所有的深度學(xué)習(xí)模型都能產(chǎn)生良好的預(yù)測精度。近些年,基于人工神經(jīng)網(wǎng)絡(luò)及相關(guān)技術(shù)的股票價格預(yù)測方法得到了廣泛研究,它們較好地彌補了傳統(tǒng)預(yù)測方法的不足,提升了股票價格預(yù)測的可靠性、準(zhǔn)確性[4];L.O.Orimoloye等[5]比較了深度神經(jīng)網(wǎng)絡(luò)(DNN)和淺層神經(jīng)網(wǎng)絡(luò)(SVM和單層神經(jīng)網(wǎng)絡(luò))在股票預(yù)測方面的有效性,結(jié)果表明,DNN的預(yù)測性能明顯優(yōu)于淺層神經(jīng)網(wǎng)絡(luò)的;孫瑞奇[6]將LSTM模型應(yīng)用于股票價格趨勢預(yù)測,將其預(yù)測結(jié)果與前饋神經(jīng)網(wǎng)絡(luò)(BP)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型預(yù)測結(jié)果對比,得出LSTM的預(yù)測效果優(yōu)于BP和RNN的結(jié)論,但是由于預(yù)測使用的參數(shù)有限,預(yù)測結(jié)果并不理想。此外,CHEN K等[7]將LSTM網(wǎng)絡(luò)模型應(yīng)用于股票收益的預(yù)測中,對比了不同輸入特征對模型預(yù)測準(zhǔn)確率的影響;陳衛(wèi)華[8]將LSTM模型應(yīng)用于股票價格波動率的預(yù)測,并將其預(yù)測結(jié)果與18種經(jīng)典模型預(yù)測結(jié)果對比,驗證了LSTM的預(yù)測效果最好。LSTM神經(jīng)網(wǎng)絡(luò)具備選擇記憶性以及時序內(nèi)部影響的特性,在股票價格這種類隨機的非平穩(wěn)序列中表現(xiàn)突出。上述單一模型自身存在一些缺陷,比如輸入數(shù)據(jù)可能存在數(shù)據(jù)冗余的問題,很難尋找到全局最優(yōu)值,往往是局部最優(yōu),訓(xùn)練速率較慢等。
近年來,一些組合模型在股票價格趨勢預(yù)測中取得了較好效果。如A.M.Rather等[9]采用自回歸移動平均模型、指數(shù)平滑模型和RNN相結(jié)合,組成了混合模型,驗證結(jié)果表明,該混合模型比單純使用RNN效果更好;李海燕[10]采用主成分分析法(PCA)、遺傳算法(GA)和BPNN相結(jié)合的方法用于股標(biāo)價格預(yù)測,結(jié)果證明預(yù)測精度更為準(zhǔn)確;Y.J.Baek等[11]提出一種具有預(yù)防過擬合的LSTM模型以及基于LSTM模型的股市指數(shù)預(yù)測框架,結(jié)果表明,該模型具有良好的預(yù)測精度;H.Y.Kim等[12]將LSTM模型與各種廣義自回歸條件異方差(GARCH)模型相結(jié)合,提出一種新的混合LSTM模型,提高了預(yù)測性能;TAN Z等[13]基于隨機森林(RF)預(yù)測股票價格,使用RF分析特征的重要性,根據(jù)特征的重要度設(shè)置適當(dāng)參數(shù)以制定合理的策略。由于股票市場具有動態(tài)性、非線性、非參數(shù)性,而RF方法相較于傳統(tǒng)的數(shù)據(jù)分析方法能夠更好地研究這些特征。RF具有分析復(fù)雜特征的能力,并且具有較快的學(xué)習(xí)速度,可以作為高維數(shù)據(jù)的特征選擇工具,近年來被廣泛應(yīng)用于各種預(yù)測、分類和特征選擇[14-16]。
結(jié)合上述研究的優(yōu)點與不足,本文提出一種RF-LSTM股票價格趨勢預(yù)測方法,用于預(yù)測股票的收盤價格。股票價格預(yù)測的關(guān)鍵在于選擇合適方法進行特征提取,進而選擇合適算法進行股票價格預(yù)測。本文首先根據(jù)股市常用的16個技術(shù)指標(biāo)構(gòu)建用于預(yù)測的特征集,為了降低數(shù)據(jù)維度和提高預(yù)測精度,利用RF特征選取方法從16種股票技術(shù)指標(biāo)中提取最優(yōu)技術(shù)指標(biāo),再利用LSTM算法對股票價格進行預(yù)測,并對預(yù)測結(jié)果進行分析。
技術(shù)指標(biāo)是按照一定的指標(biāo)算法,對原始數(shù)據(jù)按照時間順序進行處理得到的具體結(jié)果,處理后的結(jié)果是一個數(shù)據(jù)序列。技術(shù)指標(biāo)廣泛應(yīng)用于股票市場預(yù)測分析,在判斷股市走向時具有直觀具體、易于應(yīng)用等特性。不同的技術(shù)指標(biāo)有不同的適用范圍和約束條件。在進行股票特征表示時,單一的技術(shù)指標(biāo)不能夠保證特征表示的全面性和準(zhǔn)確性。因此,選取多個具有代表性和易于量化的技術(shù)指標(biāo),可以提高數(shù)據(jù)的互補性和特征表示的準(zhǔn)確性。本文根據(jù)股市常用的16個技術(shù)指標(biāo)構(gòu)建預(yù)測特征集,如表1所示,這些指標(biāo)綜合反映了股票價格的趨勢變動信息,能夠包含股票價格預(yù)測的大多數(shù)影響因素。
隨機森林算法是集成學(xué)習(xí)bagging類方法中的一種,是基于一組決策樹分類器{h(x,θk),k=1,2,…,K}的組合算法,其中{θk}為服從獨立同分布的隨機向量,K為隨機森林中決策樹的個數(shù)。利用bootstrap重抽樣方法從原始樣本中抽取多個樣本,對每個樣本bootstrap構(gòu)建決策樹,然后將所有決策樹中出現(xiàn)最多的投票結(jié)果作為最終預(yù)測結(jié)果,如圖1所示。絕大多數(shù)數(shù)據(jù)集上隨機森林表現(xiàn)出了比單獨的決策樹更好的性能。
圖1 隨機森林算法示意圖Fig.1 Schematic diagram of random forest algorithm
隨機森林本身可以作為一種特征選擇方法。利用隨機森林算法的變量重要性度量對特征進行排序,然后采用序列后向搜索方法,每次從特征集合中去掉一個最不重要(重要性得分最小)的特征,逐次進行迭代,并計算分類正確率,最終得到變量個數(shù)最少、分類正確率最高的特征集合作為特征選擇結(jié)果。使用隨機森林的變量重要性排名對輸入變量組合進行優(yōu)化,可以顯著提高隨機森林模型的預(yù)測性能,簡化模型復(fù)雜程度,從而提高預(yù)測精度。
假設(shè)隨機參數(shù)向量θ對應(yīng)的決策樹為h(θ),其葉節(jié)點為l(x,θ),RF算法步驟如下。
(1)利用bootstrap方法重采樣,隨機產(chǎn)生k個訓(xùn)練集θ1,θ2,…,θk,利用每個訓(xùn)練集生成對應(yīng)的決策樹集{h(x,θ1)},{h(x,θ2)},…,{h(x,θk)}。
(2)訓(xùn)練樣本的屬性個數(shù)假設(shè)為M,從M個特征中隨機抽取m(0<m<M)個特征作為當(dāng)前節(jié)點的分裂特征集,通過計算每個特征蘊含的信息量,選擇m個特征中最好的分裂方式對該節(jié)點進行分裂。
(3)每個決策樹均得到最大限度的生長,在此過程中不進行剪枝。
(4)對于測試集樣本Z,運用每個決策樹測試,獲取對應(yīng)的類別{h(z,θ1)},{h(z,θ2)},…,{h(z,θk)}。
(5)運用投票法,將k個決策樹中輸出最多的類別H(x)作為測試集樣本Z所屬類別。H(x)計算式為
式中:H(x)為組合分類模型;h(i)為任意一個決策樹;y為目標(biāo)變量;I為示性函數(shù)。
邊緣函數(shù)是衡量平均正確分類與錯誤分類之間的差距程度。對于一個分類器模型而言,邊際函數(shù)值越高,其預(yù)測能力的置信度越高。邊緣函數(shù)(margin function)計算式為
式中:X為輸入向量;Y為正確分類;j為錯誤分類;av為取平均值;n為樹的數(shù)量。
LSTM是RNN中的一種特殊類型,解決了RNN在長序列訓(xùn)練過程中出現(xiàn)的梯度爆炸和梯度消失問題,即當(dāng)網(wǎng)絡(luò)層數(shù)增加時,后續(xù)節(jié)點對前面節(jié)點的感知能力變?nèi)?,出現(xiàn)隨著時間推移會忘記前面信息的現(xiàn)象。在普通RNN基礎(chǔ)上,LSTM在隱藏層各神經(jīng)單元中增加記憶單元,從而使時間序列上的記憶信息可控,因此能夠更深層次挖掘數(shù)據(jù)之間的潛在規(guī)律,使預(yù)測變得更加準(zhǔn)確可靠。LSTM記憶單元結(jié)構(gòu)圖如圖2所示。圖2中,St-1,ht-1分別為上一時刻記憶單元的狀態(tài)和隱藏層狀態(tài);St,ht分別為當(dāng)前記憶單元的狀態(tài)和隱藏層狀態(tài)。每次在各單元間傳遞時通過遺忘門ft、輸入門xt和輸出門ot,控制之前信息和當(dāng)前信息的記憶與遺忘。
圖2 LSTM記憶單元結(jié)構(gòu)圖Fig.2 Structure diagram of LSTM memory unit
遺忘門ft,輸入門xt,輸出門ot的計算式為
式中:σ為sigmoid激活函數(shù);Wxf為從輸入x到遺忘門的權(quán)重矩陣;xt為在時刻t的輸入;Whf為隱層狀態(tài)到遺忘門的權(quán)重矩陣;bf為遺忘門的線性偏倚;Wxi為從輸入x到輸入門的權(quán)重矩陣;Whi為隱層狀態(tài)到輸入門的權(quán)重矩陣;bi為輸入門的線性偏倚;Wxo為從輸入x到輸出門的權(quán)重矩陣;Who為隱層狀態(tài)到輸出門的權(quán)重矩陣;bo為輸出門的線性偏倚。
t時刻記憶單元狀態(tài)值ct由2部分組成,分別為上一時刻的記憶單元狀態(tài)值ct-1和輸入門輸入待更新信息c~t,這2個部分分別由輸入門和遺忘門控制,從而得到當(dāng)前的記憶單元狀態(tài)ct,計算式分別為
式中:Wxc為從輸入x到記憶單元的權(quán)重矩陣;Whc為隱藏層到記憶單元的權(quán)重矩陣;bc為記憶單元的線性偏倚。
最后,當(dāng)前隱層狀態(tài)ht由輸出門ot和當(dāng)前儲存單元狀態(tài)st決定,ht的計算式為
RF-LSTM預(yù)測模型流程圖如圖3所示,具體步驟如下。
圖3 RF-LSTM預(yù)測模型流程圖Fig.3 Flow chart of RF-LSTM
(1)獲取股票數(shù)據(jù),構(gòu)建用于預(yù)測的技術(shù)指標(biāo)作為特征集,并將特征集進行歸一化處理。
(2)訓(xùn)練一個隨機森林,利用bootstrap方法重采樣,原始數(shù)據(jù)中每個樣本不被抽到的概率為(1-1/N)N,這些數(shù)據(jù)構(gòu)成了袋外(out of bag,OOB)數(shù)據(jù)。
(3)對每一棵決策樹,選擇相應(yīng)的袋外數(shù)據(jù)計算袋外數(shù)據(jù)誤差,記為err OOB1。
(4)隨機對OOB數(shù)據(jù)所有樣本的特征x加入噪聲干擾,再次計算OOB數(shù)據(jù)誤差,記為errOOB2。
假設(shè)森林中有N棵樹,則特征x的重要性計算式為
式中,F(xiàn)IM為特征重要性評分(feature importance measures),加入隨機噪聲后,若OOB數(shù)據(jù)準(zhǔn)確率大幅度下降(即err OOB2上升),說明該特征對樣本預(yù)測結(jié)果影響很大,即重要程度比較高。
(5)計算特征重要性,然后按照重要性排序。
(6)根據(jù)上述得到的各個特征集和特征集對應(yīng)的袋外誤差率,選擇袋外誤差率最低的特征集。
(7)將選擇的特征集輸入LSTM進行預(yù)測,對比預(yù)測結(jié)果與樣本標(biāo)簽,計算交叉熵?fù)p失函數(shù),并使用Adam優(yōu)化方法對權(quán)值進行優(yōu)化。
(8)用測試數(shù)據(jù)測試訓(xùn)練完后的模型,得到最終預(yù)測結(jié)果,并與實際股票價格比較,得出結(jié)論。
為了驗證本文方法的有效性,本文研究的原始數(shù)據(jù)均來源于Tushare財經(jīng)數(shù)據(jù)包。Tushare是一個免費、開源的python財經(jīng)數(shù)據(jù)接口包。主要實現(xiàn)股票等金融數(shù)據(jù)的數(shù)據(jù)采集、清洗加工和數(shù)據(jù)存儲,能夠為金融分析人員提供快速、整潔和多樣的便于分析的數(shù)據(jù)。該數(shù)據(jù)包包含上海證券交易所浦發(fā)銀行2017.04—2019.05共524個交易日的信息,包括每日開盤價、最高價、最低價、收盤價和成交量5組交易數(shù)據(jù)。將樣本子集中80%樣本作為特征選取樣本集,20%樣本作為獨立測試集。將選取好的特征在獨立測試集上進行測試,并將未進行特征選取的分類預(yù)測作為對比實驗。
利用所選擇的數(shù)據(jù)構(gòu)造特征集。由于各個指標(biāo)計算方法不同,根據(jù)技術(shù)指標(biāo)構(gòu)造的特征量具有不同的取值范圍,并且取值范圍差別很大。巨大的數(shù)量差異會導(dǎo)致算法模型參數(shù)尋優(yōu)變得復(fù)雜,極易過擬合,從而對最終預(yù)測結(jié)果帶來不利影響。因此,本文采用式(9)對特征量進行歸一化處理,將每一維特征分量都轉(zhuǎn)換到[-1,1]。
式中:vd_min為第d維特征分量最小值;vd_max為第d維特征分量最大值。
本文采用Anaconda開發(fā)軟件構(gòu)建模型,數(shù)據(jù)處理主要基于pandas和numpy模塊,模型分析使用Sklearn和keras模塊。模型中各個參數(shù)的取值如表2所示。
對于時間序列,通常以[X(t-n),X(t-n+1),…,X(t-1),X(t)]這n個時刻的數(shù)據(jù)作為輸入預(yù)測(t+1)時刻的輸出。對于股票而言,在t時刻會有若干個特征數(shù)據(jù),因此,為了豐富特征,使模型更加精確,本文將n(時間序列)×s(特征數(shù)據(jù))的二維向量作為輸入,將提取的最優(yōu)特征子集作為輸入變量,輸入的時間跨度為30 d,當(dāng)日作為輸出變量。LSTM模型共4層,為1層LSTM層+3層Dense層。訓(xùn)練LSTM模型時,加入了Dropout參數(shù)和正則項避免過擬合。用訓(xùn)練好的模型對測試集的股票價格進行預(yù)測,同時將傳統(tǒng)的LSTM預(yù)測模型作為對比。用平均絕對誤差(MAE)、均方誤差(MSE)和均方根誤差(RMSE)作為評價指標(biāo)評價模型的有效性。3個評價指標(biāo)的計算式分別為
式中,yi和分別為真實值和預(yù)測值。
根據(jù)RF-LSTM算法提取特征,得到的特征重要性排序如圖4所示,其中縱軸為16個技術(shù)指標(biāo)構(gòu)建的用于預(yù)測的特征集,橫軸為特征量重要程度。由圖4可知,OBV,ATR,ADX的重要程度較高,其余特征的重要程度較低,均小于0.1,最終得到的最優(yōu)特征子集為OBV,ATR,ADX。用OBV,ATR,ADX代替原基礎(chǔ)數(shù)據(jù)作為建模的訓(xùn)練數(shù)據(jù),在保留大部分?jǐn)?shù)據(jù)所含信息的同時,實現(xiàn)將原始數(shù)據(jù)降維。
圖4 特征重要性排序Fig.4 Sorting graph of feature importance
不同預(yù)測模型股票價格預(yù)測結(jié)果見圖5,共預(yù)測了50個交易日的漲跌。為驗證本文模型的有效性和優(yōu)越性,將RF-LSTM和LSTM預(yù)測結(jié)果進行對比。由圖5可知,使用RF-LSTM和單一使用LSTM都能夠預(yù)測股票價格的總體趨勢。但LSTM預(yù)測結(jié)果與真實值差距較大,這主要是因為對于含有噪聲的金融時間序列,特征中也含有噪聲和信息冗余,單一模型特征提取不徹底,最終導(dǎo)致單一模型的預(yù)測效果不理想。RF-LSTM模型的預(yù)測值更接近真實值,預(yù)測精度更高,曲線更貼合,整體而言該模型的擬合效果較好。說明當(dāng)取最佳的變量個數(shù)時,可減少輸入層維度與隱含層節(jié)點數(shù),使網(wǎng)絡(luò)結(jié)構(gòu)更加精簡,提高了模型性能,預(yù)測值曲線與真實值曲線擬合較好。
圖5 不同預(yù)測模型股票價格預(yù)測結(jié)果Fig.5 Result chart of stock price prediction
不同預(yù)測模型股票價格預(yù)測誤差如表3所示,RF-LSTM的MAE為14.59%,而LSTM的MAE為27.70%,MAE為預(yù)測值和觀測值之間絕對誤差的平均值。RF-LSTM的MSE為4.10%,而LSTM的MSE為10.81%,MSE為各數(shù)據(jù)偏離真實值差值的平方和的平均數(shù)。該值越大,說明預(yù)測效果越差。RMSE為預(yù)測值和觀測值之間差異(稱為殘差)的樣本標(biāo)準(zhǔn)偏差,可說明樣本的離散程度。進行非線性擬合時,RMSE越小越好。RF-LSTM的RMSE為20.24%,而LSTM的RMSE為32.78%。從表3可以看出,對比傳統(tǒng)的LSTM模型,RF-LSTM模型的預(yù)測值誤差較小。預(yù)測誤差變小證明該模型對股票價格和預(yù)測效果更好,具有更好的可推廣性和可靠性。
表3 不同預(yù)測模型股票價格預(yù)測誤差Tab.3 Table of stock prediction error
(1)選用股市常用的16個技術(shù)指標(biāo)構(gòu)建預(yù)測特征集,這些指標(biāo)能夠全面反映股票價格趨勢。
(2)利用隨機森林算法選擇最優(yōu)特征集,可以降低數(shù)據(jù)的維度和訓(xùn)練的復(fù)雜度。
(3)利用長短期記憶網(wǎng)絡(luò)構(gòu)建預(yù)測模型,調(diào)整模型參數(shù),可以提高股票價格預(yù)測的準(zhǔn)確率。