席小雅 秦荷斌 魯志娟
(西安歐亞學(xué)院,陜西 西安 710065)
由于市場經(jīng)濟的日益蓬勃發(fā)展,金融服務(wù)機制系統(tǒng)也越來越完善,使得人民群眾普遍地投入到了金融市場投資當(dāng)中,人民對金融信息的需求水平也日益增高。伴隨著現(xiàn)代經(jīng)濟社會信息化和互聯(lián)網(wǎng)的現(xiàn)代化發(fā)展,計算機等技術(shù)系統(tǒng)也日益完備,為解決人民群眾的金融信息需求問題提供了非常強大的技術(shù)物質(zhì)基礎(chǔ)和使用工具。
Shinkaiouchi等(2016)采用貝葉斯估計和神經(jīng)網(wǎng)絡(luò)開展股市預(yù)測,實驗比較了二種方式的預(yù)測效果,結(jié)果表明,神經(jīng)網(wǎng)絡(luò)方法獲得了更好的預(yù)測效果。Pano-Azucena等(2018)在分析股票的大盤數(shù)據(jù)中引入了神經(jīng)網(wǎng)路模型,并將趨勢、模式、波動性等參數(shù)導(dǎo)入模型中,實測結(jié)果顯示神經(jīng)網(wǎng)路模型的預(yù)計有效性明顯高于其他預(yù)測模式。黃超斌等(2021)利用多模型對股票價格進行預(yù)測,將BP神經(jīng)網(wǎng)絡(luò)模型、LSTM、CNN、RNN、GRU網(wǎng)絡(luò)模型的預(yù)測結(jié)果進行對比,損失函數(shù)MAE、MSE、MAPE的值均小于其他模型,認為LSTM模型的預(yù)測效果較好。黃麗明等(2019)實現(xiàn)了一種多路循環(huán)的神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的股票預(yù)測方法。比較LSTM神經(jīng)網(wǎng)絡(luò)、CNN神經(jīng)網(wǎng)絡(luò)以及SMF神經(jīng)循環(huán)網(wǎng)絡(luò)的優(yōu)劣后,分別預(yù)測只有價格特征,價格特征和當(dāng)天新聞標(biāo)題特征組合,價格特征和當(dāng)天文檔數(shù)量特征組合,價格特征、當(dāng)天新聞標(biāo)題特征及天文檔數(shù)量特征組合,共4種情況的準確率。認為價格特征、當(dāng)天新聞標(biāo)題特征及天文檔數(shù)量特征組合的平均表現(xiàn)最優(yōu)。張曉春等(2020)用邏輯回歸及LSTM神經(jīng)網(wǎng)絡(luò)模型兩種方法對股價數(shù)據(jù)進行了預(yù)測,邏輯回歸部分作者嘗試不同的回看天數(shù),根據(jù)前10天、15天、30天、50天、100天、150天、200天及230天作為回看數(shù)據(jù)進行實驗,發(fā)現(xiàn)均在3天處求得最小MSE,因此選用3天作為回看數(shù)據(jù)代入邏輯回歸,求得MSE為0.97。LSTM部分作者將數(shù)據(jù)前40%、20%數(shù)據(jù)作為訓(xùn)練集和驗證集,通過不斷的模型調(diào)整與優(yōu)化,確定模型參數(shù)值后求得LSTM的MSE值為0.00087,認為LSTM神經(jīng)網(wǎng)絡(luò)模型是一種比較好的選擇。
鑒于股價數(shù)據(jù)關(guān)聯(lián)性強,數(shù)據(jù)復(fù)雜度高,信息難以挖掘的特點,并結(jié)合文獻研究認為LSTM神經(jīng)網(wǎng)絡(luò)模型能夠較好地適用于股價預(yù)測的問題上,因此本文選擇LSTM模型分別從單特征和多特征兩個角度實現(xiàn)股價的預(yù)測。
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANNS),也被叫做神經(jīng)網(wǎng)絡(luò)(NNS),它是根據(jù)了人腦的生理學(xué)研究,使用了仿真生物神經(jīng)網(wǎng)絡(luò),以此來獲得對信息處理的功能的數(shù)學(xué)模型。人工神經(jīng)網(wǎng)絡(luò)已經(jīng)被證明適用于處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),其核心成分是人工神經(jīng)元,每個神經(jīng)元接收來自其他幾個神經(jīng)元的輸入,將它們乘以分配的權(quán)重,將它們相加,然后將總和傳遞給一個或多個神經(jīng)元。1943年由科學(xué)家McCulloch和Pitts提出了最為經(jīng)典的MP神經(jīng)元模型,將神經(jīng)元的整個工作過程抽象后如圖1所示。
圖1 神經(jīng)元結(jié)構(gòu)圖
圖中xi(i=1,2,3,…,n)為輸入的數(shù)據(jù),wi(i=1,2,3,…,n)為權(quán)重,Σ為求和,b為偏置項,g為激活函數(shù),常見的激活函數(shù)有sigmoid函數(shù)、雙曲正切函數(shù)(tanh)、線性整流函數(shù)(RELU)、softmax函數(shù),因此神經(jīng)元的輸出可以用如下式子表示:
在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節(jié)點是無連接的,因此傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練及測試的速度較慢,還容易產(chǎn)生過擬合、局部極小值等缺陷,且這種普通的神經(jīng)網(wǎng)絡(luò)對于很多問題無能無力。RNN循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks)是一個專為序列數(shù)據(jù)分析而構(gòu)建的深層網(wǎng)絡(luò)模式,其在語音識別、語言翻譯和圖片描述等方面獲得較為廣泛的應(yīng)用。也正因于此,RNN在自然語言處理(NLP)中獲得了巨大的成功。在RNN網(wǎng)絡(luò)系統(tǒng)中,不同的時步長擁有同樣的一個權(quán)重,可以循環(huán)地完成跨時間的聯(lián)系。由于權(quán)重的共用,在RNN網(wǎng)絡(luò)系統(tǒng)中的時間參數(shù)大大減少。在實踐中,為了降低復(fù)雜性往往假設(shè)當(dāng)前的狀態(tài)只與前面的幾個狀態(tài)相關(guān)。RNN循環(huán)一般結(jié)構(gòu)及循環(huán)模塊展示如圖2所示。
圖2 RNN循環(huán)一般結(jié)構(gòu)及循環(huán)模塊展示圖
長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)是一類獨特的RNN模型,由Hochreiter與Schmidhuber提出,LSTM與典型的RNN基本框架一致,只是使用了不同的方式來計算隱藏狀態(tài)。LSTM的出現(xiàn)就是為了克服傳統(tǒng)RNN神經(jīng)網(wǎng)絡(luò)模型信息淹沒(短期記憶)以及訓(xùn)練中梯度消失與梯度爆炸的問題。相比于傳統(tǒng)RNN單元架構(gòu),LSTM創(chuàng)新性地推出了控制部門架構(gòu),使網(wǎng)絡(luò)模塊可以高效地解決時間序列中長期依賴關(guān)系,歷史時序信號也得以高效傳輸。因此,對于時間序列的預(yù)測問題,LSTM在時間單位構(gòu)造上有著獨特優(yōu)勢。LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及循環(huán)模塊展示如圖3所示。
圖3 LSTM循環(huán)一般結(jié)構(gòu)及循環(huán)模塊展示圖
LSTM的巧妙之處在于通過增加多處的門控,圖3循環(huán)模塊中3個方形形狀叫做“門”,起到對信息選擇的作用,三個門從左向右分別為遺忘門、輸入門、輸出門。這些門使得自循環(huán)的權(quán)重是變化的,控制了上一單元有多少信息可以通過,當(dāng)前單元有哪些信息可以傳遞給下一個單元。LSTM循環(huán)模塊中計算公式如下。
遺忘門計算公式為:
輸入門計算公式為:
輸出門計算公式為:
輸入處理單元:
本次實驗利用Python中的Pandas_datareader包連接stooq金融數(shù)據(jù)網(wǎng)站獲取百度股票價格,數(shù)據(jù)選取時段為2005年8月5日至2022年4月5日,共4195條數(shù)據(jù)。數(shù)據(jù)指標(biāo)主要包括:交易數(shù)據(jù)開盤價格(open)、最高價格(high)、最低指數(shù)(low)、收盤價格(close)以及成分證券成交量(volume),交易數(shù)據(jù)前五行如圖4所示。
表1 百度交易數(shù)據(jù)展示(部分)
由于指標(biāo)之間量綱差異性較大,因此計算結(jié)果會受到大量綱指標(biāo)的影響,為了消除此影響,需要對數(shù)據(jù)進行數(shù)據(jù)標(biāo)準化。本文實證中使用零均值歸一化的方法對數(shù)據(jù)進行標(biāo)準化的處理。
對原始數(shù)據(jù)進行標(biāo)準化后的數(shù)據(jù)如圖5所示。
表2 標(biāo)準化后數(shù)據(jù)展示(部分)
本文選取2005年8月5日至2019年12月31日,共3625條數(shù)據(jù)為訓(xùn)練集集,選取2020年1月1日至2022年4月5日,共570條數(shù)據(jù)為測試集,測試集占比約為14%。將百度股價以折線圖展示如圖6所示,其中藍色部分(2005年~2020年)為訓(xùn)練集數(shù)據(jù),黃色部分(2020年~2022年)為測試集數(shù)據(jù)。
圖6 百度股價折線圖
損失函數(shù)是用來評價模型的預(yù)測值和真實值差別的程度,損失函數(shù)越好,通常模型的性能也就越好,不同的模型所用的損失函數(shù)一般也是不一樣的。常見的損失函數(shù)有均方誤差(MSE)、均方根誤差(RMSE)、平均絕對誤差百分比(MAPE)、平均絕對誤差(MAE)等,本研究選用均方誤差(MSE)當(dāng)作損失函數(shù),MSE計算公式如下:
(1)模型的構(gòu)建
選擇收盤價(Close)單列進行股價(收盤價)的預(yù)測,模型的選擇時間窗口長度為60,構(gòu)建三層LSTM網(wǎng)絡(luò)模型,LSTM模型第一層、第二層、第三層展開節(jié)點均為為128,增加全連接層,輸出1一個數(shù)據(jù)。經(jīng)過實驗,循環(huán)訓(xùn)練次數(shù)為20、30、40次時,損失函數(shù)的值差別不大,考慮機器性能選擇循環(huán)訓(xùn)練次數(shù)(epoch)為20次;將每32個樣本數(shù)據(jù)打包成一個batch進行訓(xùn)練,即batchsize為32;為了讓目標(biāo)函數(shù)在合適的時間范圍內(nèi)收斂到最小的目標(biāo)值,設(shè)置學(xué)習(xí)率為0.001;在模型優(yōu)化器(optimizer)的選擇上,采用同等數(shù)據(jù)量下,熵損失及優(yōu)化時間都較好的Adam算法;對訓(xùn)川練集數(shù)據(jù)采用隨機打散,并以MSE指標(biāo)作為模型的損失函數(shù)進行訓(xùn)練。
(2)數(shù)據(jù)預(yù)測
對上述模型進行訓(xùn)練,利用測試集進行驗證,得出該模型的損失函數(shù)MES為0.2183,得到的真實數(shù)據(jù)與預(yù)測數(shù)據(jù)如下所示,將利用測試集代入模型得到的預(yù)測數(shù)據(jù)和原始真實數(shù)據(jù)進行可視化展示,如圖7所示。
圖7 單特征LSTM股價預(yù)測圖
(1)模型的構(gòu)建
選擇交易數(shù)據(jù)開盤價格(open)、最高價格(high)、最低指數(shù)(Iow)、收盤價格(close)以及成分證券成交量(volume)5個指標(biāo)對股價(收盤價)進行預(yù)測,模型構(gòu)建同單特征LSTM模型。模型選擇時間窗口長度為60,構(gòu)建三層LSTM網(wǎng)絡(luò)模型,LSTM模型第一層、第二層、第三層展開節(jié)點均為為128,增加全連接層,輸出1一個數(shù)據(jù)。經(jīng)過實驗,循環(huán)訓(xùn)練次數(shù)為20、30、40次時,損失函數(shù)取值差別不大,考慮機器性能選擇循環(huán)訓(xùn)練次數(shù)(epoch)為20次,將每32個樣本數(shù)據(jù)打包成一個batch進行訓(xùn)練,即batchsize為32,采用Adam算法作為模型的優(yōu)化器(optimizer),對訓(xùn)川練集數(shù)據(jù)采用隨機打散,并以MSE指標(biāo)作為模型的損失函數(shù)進行訓(xùn)練。
(2)數(shù)據(jù)預(yù)測
對上述模型進行訓(xùn)練,利用測試集進行驗證,得到該模型的損失函數(shù)MES為0.0078,遠遠小于單特征LSTM模型。將利用測試集代入模型得到的預(yù)測的數(shù)據(jù)和原始真實數(shù)據(jù)進行可視化展示,如圖8所示。
圖8 多特征LSTM股價預(yù)測圖
通過比較單特征LSTM以及多特征LSTM的損失函數(shù)(MSE)值,認為多特征LSTM擬合效果更優(yōu),認為LSTM可以對多維數(shù)據(jù)進行建模,并能從更多維度的數(shù)據(jù)中提取有用的信息。
表3 股價預(yù)測模型MSE指標(biāo)匯總表
預(yù)測股票價格的走勢一直是股票市場研究的熱點。本文運用LSTM模型分別從單特征及多特征兩個角度對百度的股價進行預(yù)測。首先通過對股票以及神經(jīng)網(wǎng)絡(luò)的相關(guān)知識,從問題及方法兩個方面探究了其可行性。鑒于股票價格高相關(guān)性及復(fù)雜性,本文選擇使用LSTM神經(jīng)網(wǎng)絡(luò)模型對股票數(shù)據(jù)進行分析,通過模型不斷的調(diào)整,實現(xiàn)對股價的預(yù)測。
選擇百度股票的5項指標(biāo),為了消除單位對數(shù)據(jù)結(jié)果的影響,對數(shù)據(jù)進行標(biāo)準化處理,將標(biāo)準化后數(shù)據(jù)分為訓(xùn)練集和測試集兩部分,為LSTM神經(jīng)網(wǎng)絡(luò)模型做好數(shù)據(jù)準備。本文從兩個角度實現(xiàn)股價的預(yù)測,經(jīng)多次對模型進行調(diào)參及優(yōu)化,最終得出單特征模型損失函數(shù)值為0.2183,而多特征損失函數(shù)值為0.0078,認為多特征LSTM模型有更好的預(yù)測效果。
受到各種各樣因素的影響,研究股票價格預(yù)測問題的道路還很長,需要解決的問題還有很多。在今后的研究中,可以嘗試加入更多的指標(biāo),進一步優(yōu)化模型的結(jié)構(gòu)及參數(shù),或多方法的對比,以探索更加精準的預(yù)測效果。