截至2017年年底,全球股市總市值逼近百萬億美元,世界上市公司總數(shù)超過4萬家[1],全球股票市場達(dá)到空前規(guī)模,其波動對全球經(jīng)濟(jì)的影響是重大而深遠(yuǎn)的。雖然豐富的歷史股票信息為廣大投資者和分析者提供了數(shù)據(jù)資源,但是單單依靠分析者的個人經(jīng)驗和直覺進(jìn)行分析與判斷,顯然不可靠且低效,因此人們需要一個智能、科學(xué)且高效的研究方法來幫助指導(dǎo)股票交易。由于金融時間序列具有非平穩(wěn)性、非線性、高噪聲的特點,傳統(tǒng)的統(tǒng)計學(xué)模型難以對其作出較高精度的預(yù)測。 而神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法以其良好的非線性逼近能力和自學(xué)自適應(yīng)等特點,成為目前比較流行的預(yù)測手段。其中,LSTM神經(jīng)網(wǎng)絡(luò)作為一種新型可實現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò)模型,其具備選擇性記憶性以及時序內(nèi)部影響的特性極適用于股票價格時間序列這種類隨機(jī)的非平穩(wěn)序列。
在過去幾年,國外學(xué)者對于RNN神經(jīng)網(wǎng)絡(luò)以及LSTM 神經(jīng)網(wǎng)絡(luò)的運用多為圖片識別以及人工智能,國內(nèi)科學(xué)家以及學(xué)者們更加傾向研究神經(jīng)網(wǎng)絡(luò)與其他統(tǒng)計學(xué)和計量經(jīng)濟(jì)學(xué)數(shù)學(xué)模型的結(jié)合使用,從而優(yōu)化設(shè)計,得到更好的預(yù)測結(jié)果[2]。對于LSTM神經(jīng)網(wǎng)絡(luò),國內(nèi)學(xué)者也僅在近四五年將其運用在數(shù)據(jù)挖掘的分類算法上,基于 LSTM 神經(jīng)網(wǎng)絡(luò)在這些方面的優(yōu)異表現(xiàn),文章旨在探究LSTM神經(jīng)網(wǎng)絡(luò)是否可以應(yīng)用于個股的價格趨勢預(yù)測。
LSTM(Long Short-Term Memory)是長短期記憶網(wǎng)絡(luò),是一種時間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件。LSTM算法最早由 Sepp Hochreiter和Jurgen Schmidhuber于1997年提出,是一種特定形式的RNN(Recurrent neural network,循環(huán)神經(jīng)網(wǎng)絡(luò)),而RNN是一系列能夠處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)的總稱。本研究使用的LSTM神經(jīng)網(wǎng)絡(luò)處理股票序列的流程[2]如圖1。
圖1 LSTM層的結(jié)構(gòu)
模型假設(shè)
文章采用Python語言編程實現(xiàn)LSTM神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和預(yù)測過程,以TensorFlow作為深度學(xué)習(xí)框架進(jìn)行訓(xùn)練,并進(jìn)行圖形擬合和誤差評估。
基于實驗的嚴(yán)謹(jǐn)性、合理性以及準(zhǔn)確性考慮,文章選擇香港股票市場和美國股票市場個股作為研究對象。為減少單個個股被莊家控盤或主力做市的可能性以及削弱不同市場的相關(guān)影響,文章最終選取的基礎(chǔ)研究對象為美港股票市場中單個市場上市且市值較大的個股。
模型構(gòu)建
模型預(yù)測方式為利用前7個成交日的數(shù)據(jù)預(yù)測第8日的收盤價數(shù)據(jù)。訓(xùn)練的方式主要為取前70%的數(shù)據(jù)塊進(jìn)行訓(xùn)練,訓(xùn)練完成后再取原數(shù)據(jù)后30%的數(shù)據(jù)塊進(jìn)行滑動順序預(yù)測。
模型結(jié)構(gòu):模型層數(shù)劃分與時間點一致,且每一層均有輸入輸出,輸入時可根據(jù)時序前后逐一輸入,隱藏層內(nèi)的神經(jīng)元個數(shù)與自變量個數(shù)完全一致,本實驗中為5個自變量(參數(shù)),分別是開盤價、最高價、最低價、收盤價與成交量。層與層之間根據(jù)時序從前向后影響和從后向前反饋,形成整個隱藏層的自循環(huán)。模型網(wǎng)絡(luò)參數(shù)設(shè)計如下:(1)時間步數(shù):7;(2)隱藏層數(shù)目:10;(3)學(xué)習(xí)率:0.01;(4)迭代次數(shù):500。
數(shù)據(jù)獲取與處理
(一)數(shù)據(jù)獲?。何恼轮饕芯繉ο鬄橛寻畋kU(01299.HK)、長和(00001.HK)、微軟(MSFT)以及亞馬遜(AMZN)2016年11月2日至2017年11月1日的日K數(shù)據(jù)。利用Wind數(shù)據(jù)庫Excel插件下載股票的日K數(shù)據(jù),時間區(qū)間為2016年11月2日至2017年11月1日,股票屬性為日期、開盤價、收盤價、最高價、最低價以及日成交量,剔除無效日期的數(shù)據(jù),得到包括以上六個屬性的CSV文件。為了驗證模型的有效性,文章選取了多只股票的歷史數(shù)據(jù)進(jìn)行實驗,實驗樣本數(shù)據(jù)示例如下:
表1 友邦保險股票歷史樣本數(shù)據(jù)示例
(二)數(shù)據(jù)歸一化處理:在將歷史數(shù)據(jù)帶入模型進(jìn)行訓(xùn)練前,由于數(shù)據(jù)中幾個參數(shù)的維度不同,比如成交量與價格之間數(shù)量級上的巨大差異,所以需要先對數(shù)據(jù)進(jìn)行歸一化處理。歸一化使得每個參數(shù)隨梯度下降的步長與其數(shù)量級相對應(yīng),可提升模型的收斂速度及預(yù)測精度。把數(shù)據(jù)維度控制在0到1之間,歸一化函數(shù)如下:
Xnew=(Xold-min(X))/(max(X)-min(X))
而為了保證神經(jīng)網(wǎng)絡(luò)的輸出數(shù)據(jù)與輸入數(shù)據(jù)數(shù)量級相符,對神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果的輸出也需要進(jìn)行反歸一化處理,公式為:
y(i)=yi(max(xi)-min(xi) )+min(xi)
其中,yi為神經(jīng)網(wǎng)絡(luò)輸出。
模型的訓(xùn)練效果分析
圖2 LSTM神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差變化趨勢圖
學(xué)習(xí)率可用來限制神經(jīng)網(wǎng)絡(luò)每次更新中權(quán)重項修正值的大小。迭代次數(shù)是神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集上訓(xùn)練同時更新權(quán)重項的次數(shù)。這兩個參數(shù)和訓(xùn)練集一起,都是神經(jīng)網(wǎng)絡(luò)中預(yù)測函數(shù)的輸入?yún)?shù)。在學(xué)習(xí)率為0.01的情況下,訓(xùn)練集不斷對神經(jīng)網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練使神經(jīng)網(wǎng)絡(luò)的輸出誤差越來越小,直至誤差收斂于一個很小的區(qū)間。下圖為當(dāng)學(xué)習(xí)率為0.01,迭代次數(shù)為500,對改進(jìn)的LSTM神經(jīng)網(wǎng)絡(luò)模型分別輸入4只不同股票訓(xùn)練數(shù)據(jù)時訓(xùn)練誤差的收斂情況。其中橫坐標(biāo)表示迭代次數(shù),縱坐標(biāo)表示神經(jīng)網(wǎng)絡(luò)訓(xùn)練的誤差平方和。
綜合比較以上四圖的曲線,容易得出,在模型的訓(xùn)練過程中,當(dāng)學(xué)習(xí)率為0.01、迭代次數(shù)為500時,4只不同股票的訓(xùn)練集數(shù)據(jù)對模型的訓(xùn)練均使神經(jīng)網(wǎng)絡(luò)的預(yù)測誤差快速收斂于(0,0.1)區(qū)間,且收斂的迭代次數(shù)均在100次以內(nèi)。這說明改進(jìn)的LSTM神經(jīng)網(wǎng)絡(luò)使用數(shù)據(jù)進(jìn)行訓(xùn)練時能快速收斂,并且誤差很小。模型訓(xùn)練時誤差在前100次迭代中快速減小說明改進(jìn)的LSTM神經(jīng)網(wǎng)絡(luò)具有快速性,而模型訓(xùn)練后誤差穩(wěn)定在較低水平說明模型具有穩(wěn)定性。股票市場在多年的發(fā)展中累積了大量的歷史交易數(shù)據(jù),數(shù)據(jù)維度眾多,價格預(yù)測難度大,模型的快速性有利于快速分析海量股票數(shù)據(jù)實現(xiàn)即時預(yù)測效果。對股票價格進(jìn)行預(yù)測會很大程度上影響投資者的未來收益,股價預(yù)測的準(zhǔn)確性對投資者有著重要意義,因而網(wǎng)絡(luò)模型的穩(wěn)定性也是模型適用于股價預(yù)測的一大特點。
預(yù)測結(jié)果圖形擬合對比分析
模型預(yù)測結(jié)果擬合成圖形如下(如圖例所示,藍(lán)色曲線為預(yù)測值,紅色曲線為真實值,橫坐標(biāo)為時間,縱坐標(biāo)為股票價格):
圖3 LSTM神經(jīng)網(wǎng)絡(luò)股票收盤價趨勢預(yù)測(2017.7.19-2017.11.1)
觀察以上四個擬合圖的曲線,將預(yù)測結(jié)果與實際結(jié)果進(jìn)行比較,不難看出:雖然部分仿真輸出與真實輸出比較存在一定程度的時間滯后性,模型對四只港股價格的仿真輸出與真實輸出在總體趨勢上基本一致。限于所給精度要求和訓(xùn)練樣本個數(shù),存在一定預(yù)測誤差是在所難免的,模型預(yù)測結(jié)果擬合曲線表明LSTM神經(jīng)網(wǎng)絡(luò)對友邦保險、長和、微軟以及亞馬遜四只美港股票市場個股的價格趨勢預(yù)測還是比較準(zhǔn)確的。
從單只股票的預(yù)測價格和真實價格對比來看,微軟的預(yù)測效果是四個仿真預(yù)測實驗中最好的,而友邦保險和亞馬遜的預(yù)測值與真實值的偏差程度較大,預(yù)測效果略遜一籌。這說明模型對不同個股的預(yù)測效果不同,個股預(yù)測效果優(yōu)劣不僅與股票市場因素有關(guān),也與個股自身因素相關(guān)。
模型預(yù)測精度分析
文章采用均方根誤差(RMSE)對預(yù)測結(jié)果進(jìn)行評價。均方根誤差也稱為標(biāo)準(zhǔn)誤差,是觀測值與真實值的誤差平方根的均值。在實際測量中,觀測次數(shù)總是有限的,真實值只能用最可信賴(最佳)值來代替,而方根誤差對一組測量中的特大或特小誤差反映非常敏感,所以,均方根誤差能夠很好地反映出測量的精密度。RMSE計算公式如下,其中Yi為神經(jīng)網(wǎng)絡(luò)輸出值,Y為真實值。
當(dāng)對某一個變量進(jìn)行多次測量時,RMSE反映了測量數(shù)據(jù)偏離真實值的程度,RMSE越小,表示測量精度越高。下表為模型對4只港股進(jìn)行預(yù)測時的RMSE數(shù)據(jù)。
表2 模型對個股價格預(yù)測的均方根誤差對比表
從表2中可以看到,模型預(yù)測亞馬遜的RMSE為0.051609,較其他3只股票的預(yù)測RMSE大,其預(yù)測值與真實值擬合圖形的分散程度較大,而模型預(yù)測微軟的RMSE為0.033077,較其他3只股票的預(yù)測RMSE小,其預(yù)測值與真實值擬合圖形的分散程度較小,預(yù)測精度最高。模型對友邦保險、長和、微軟以及亞馬遜4只個股價格趨勢預(yù)測的RMSE均處于(0,0.1)的區(qū)間內(nèi),說明模型對于大市值港股價格的預(yù)測精度很高,預(yù)測結(jié)果顯著。
實驗利用LSTM對股票市場預(yù)測進(jìn)行建模,用訓(xùn)練好的模型來進(jìn)行股票預(yù)測,選取代表性個股的股票數(shù)據(jù)為例,對其進(jìn)行預(yù)測,用實例證明了LSTM神經(jīng)網(wǎng)絡(luò)通過學(xué)習(xí)和訓(xùn)練,能擬合股票數(shù)據(jù)做出預(yù)測,并取得了較好的效果。
然而文章選取的研究數(shù)據(jù)量有限,研究結(jié)果難以代表整個股票市場的預(yù)測應(yīng)用效果。另外,文章只討論了LSTM神經(jīng)網(wǎng)絡(luò)在美港股市中的預(yù)測適用性,并未對模型適用性差的情況作出進(jìn)一步改進(jìn)。該研究課題還有很大的可研究空間。