摘要:本文首先確定了反映股票交易數(shù)據(jù)的特征指標(biāo),構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型和LSTM神經(jīng)網(wǎng)絡(luò)模型,并將它們應(yīng)用于上證綜指狀態(tài)的分類預(yù)測。實(shí)驗(yàn)通過對兩種模型應(yīng)用結(jié)果的比較,驗(yàn)證了LSTM模型在時(shí)序數(shù)據(jù)的預(yù)測分析上較BP神經(jīng)網(wǎng)絡(luò)有十分顯著的優(yōu)勢。BP神經(jīng)網(wǎng)絡(luò)的預(yù)測準(zhǔn)確率為66.98%,而LSTM的準(zhǔn)確率達(dá)到了87.4%,充分驗(yàn)證了所設(shè)計(jì)模型的有效性。
關(guān)鍵詞:股票預(yù)測;神經(jīng)網(wǎng)絡(luò);LSTM;分類預(yù)測
1.引言
股票市場對商品市場有著十分重要的影響,它的走勢一定程度上也能反應(yīng)國家經(jīng)濟(jì)狀況。上證綜指反應(yīng)了整個(gè)上海證券市場的股票價(jià)格總趨勢及漲跌幅度,如果能夠較好地對其漲跌進(jìn)行預(yù)測,對投資者進(jìn)行投資的風(fēng)險(xiǎn)控制和收益最大化來說有著巨大的實(shí)際應(yīng)用價(jià)值。
BP神經(jīng)網(wǎng)絡(luò)是當(dāng)前使用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一。它能夠在不知道具體映射關(guān)系的情況下,通過學(xué)習(xí)輸入數(shù)據(jù),依靠所確定的目標(biāo)函數(shù),使網(wǎng)絡(luò)結(jié)構(gòu)誤差最小化,完成模型訓(xùn)練。誤差逆向傳播的原理是利用網(wǎng)絡(luò)輸出和真實(shí)標(biāo)簽之間的誤差進(jìn)行反向傳播逐層更新并縮小每一層誤差。
近年來關(guān)于長短期記憶神經(jīng)網(wǎng)絡(luò)的應(yīng)用開始逐漸出現(xiàn),它是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)。國內(nèi)外在股票市場預(yù)測領(lǐng)域使用較廣泛的都是BP神經(jīng)網(wǎng)絡(luò)及其各種優(yōu)化算法。而LSTM神經(jīng)網(wǎng)絡(luò)主要被用在自然語言處理方面,在金融預(yù)測領(lǐng)域使用較少。2016年Luca Di Persio等人使用了MLP、CNN、RNN等多種模型來對S&P500的日交易數(shù)據(jù)進(jìn)行預(yù)測,說明了RNN在股票趨勢預(yù)測方面有著自己的優(yōu)勢。
本文主要將日線交易數(shù)據(jù)進(jìn)行特征提取,通過建立神經(jīng)網(wǎng)絡(luò)模型,實(shí)現(xiàn)對未來T+1天上證綜指的漲、跌、持平三種狀態(tài)的預(yù)測。本文對BP神經(jīng)網(wǎng)絡(luò)和LSTM神經(jīng)網(wǎng)絡(luò)這兩種模型進(jìn)行比較,利用歸一化、dropout等工具優(yōu)化模型,最終應(yīng)用到上證綜指狀態(tài)預(yù)測中,比較兩者模型的實(shí)驗(yàn)結(jié)果,證明模型的適用性和準(zhǔn)確性以及模型的泛化能力。
2.樣本數(shù)據(jù)預(yù)處理
考慮到2008年金融危機(jī)股市波動(dòng)較大,故本文采用2009年1月1日至2019年4月1日10年余的共2490條上證綜指的日交易數(shù)據(jù)。數(shù)據(jù)來源于網(wǎng)易財(cái)經(jīng)。
根據(jù)分析,本文選取收盤價(jià)、最高價(jià)、最低價(jià)、開盤價(jià)、成交量、10日ROC、14日RSI、14日CMO、10日MA、20日EMA、MACD、9日KDJ、調(diào)整的OBV差值等17個(gè)特征指標(biāo)作為反應(yīng)上證綜指交易信息、指數(shù)走勢等的特征進(jìn)行實(shí)驗(yàn),特征提取使用python中的Talib庫。
由于數(shù)據(jù)中幾個(gè)特征的維度不一致,因此本文將對各個(gè)輸入變量特征數(shù)據(jù)進(jìn)行歸一化處理。歸一化處理能夠把數(shù)據(jù)的量級范圍控制在0到1之間,使得各個(gè)變量特征在誤差逆向傳播過程中,更新步長與數(shù)據(jù)的數(shù)量級一致,可以提升模型的收斂速度和預(yù)測精度。歸一化函數(shù)計(jì)算公式如下:
本文將T+1天上證綜指的狀態(tài)分為三類,分別為:上漲、持平、下跌。T+1天上證綜指狀態(tài)持平的閾值設(shè)為0.5%,即上漲幅度大于0.5%即認(rèn)為上漲,下跌亦然,這樣選擇閾值的原因是為了保證樣本在三種狀態(tài)下分布大致均勻。
3.模型與實(shí)驗(yàn)
3.1BP神經(jīng)網(wǎng)絡(luò)模型
BP神經(jīng)網(wǎng)絡(luò)一般分為三個(gè)層,輸入層、隱藏層和輸出層。每一層上都有許多神經(jīng)元節(jié)點(diǎn),層與層之間的神經(jīng)元節(jié)點(diǎn)相互連接,完全連接的神經(jīng)元層稱為全連接層。每一層的神經(jīng)元節(jié)點(diǎn)都有一個(gè)權(quán)值參數(shù)稱為連接的權(quán)重,后一層的輸入為前一層的輸出乘以前一層的權(quán)重加上一個(gè)偏置(bias)并經(jīng)過一個(gè)激活函數(shù)。
BP神經(jīng)網(wǎng)絡(luò)的向前傳播公式如下:
其中,X是輸入的數(shù)據(jù)特征向量,維度是17;b1是第一層的偏置向量,維度等于隱藏層單元的個(gè)數(shù)n;W1是第一層的權(quán)值參數(shù)矩陣n×17,維度是;b2是第二層的偏置向量,維度等于3;W2是第二層的權(quán)值參數(shù)矩陣,維度是3×n;? ?是輸出的估計(jì)值,該估計(jì)值的每個(gè)維度的數(shù)表示屬于各個(gè)類別的概率值。
BP神經(jīng)網(wǎng)絡(luò)的隱藏層激活函數(shù)全部選擇Sigmoid函數(shù),這也是一般BP神經(jīng)網(wǎng)絡(luò)最普遍運(yùn)用的一個(gè)激活函數(shù),它能將任意范圍的數(shù)映射到0到1之間。由于本文研究的是三分類問題,因此輸出層激活函數(shù)將采用Softmax函數(shù),相應(yīng)的損失函數(shù)選擇多分類交叉熵函數(shù),反向傳播的優(yōu)化算法選擇Adam算法。
對于BP神經(jīng)網(wǎng)絡(luò)來說,隱藏層的節(jié)點(diǎn)個(gè)數(shù)合適與否將是模型效果好壞的關(guān)鍵。本文將不同數(shù)量隱藏層節(jié)點(diǎn)個(gè)數(shù)的模型進(jìn)行準(zhǔn)確性比較,由此得到最適合的節(jié)點(diǎn)個(gè)數(shù)。
3.2長短時(shí)記憶模型
長短時(shí)記憶模型是一種特定形式的循環(huán)神經(jīng)網(wǎng)絡(luò),但LSTM單元比RNN單元性能更好,收斂更快,能夠感知數(shù)據(jù)的長時(shí)依賴。
LSTM單元內(nèi)部傳播由三個(gè)門進(jìn)行控制,遺忘門和更新門負(fù)責(zé)對時(shí)序數(shù)據(jù)的特征進(jìn)行篩選控制,提取隱藏的信息進(jìn)行長時(shí)記憶,輸出門則負(fù)責(zé)向后一個(gè)單元進(jìn)行數(shù)據(jù)輸入,或者進(jìn)行結(jié)果輸出。
本文使用的LSTM模型預(yù)測方式為利用前14個(gè)交易日的交易數(shù)據(jù)及各個(gè)指標(biāo)特征實(shí)現(xiàn)對T+1天指數(shù)狀態(tài)的預(yù)測。因此,模型設(shè)計(jì)為14個(gè)連接的LSTM單元,各個(gè)LSTM單元的權(quán)值參數(shù)共享,設(shè)置α[t]隱藏層的神經(jīng)元個(gè)數(shù)為30個(gè)。
3.3實(shí)證分析
模型訓(xùn)練所使用的數(shù)據(jù)按8:2的比例劃分為訓(xùn)練集和測試集,在用訓(xùn)練集訓(xùn)練模型的時(shí)候又將訓(xùn)練集按9:1的比例劃分出驗(yàn)證集。
本為分別設(shè)置三層BP神經(jīng)網(wǎng)絡(luò)的隱藏層神經(jīng)元個(gè)數(shù)為20、30、40,分別在30和40個(gè)神經(jīng)元的網(wǎng)絡(luò)隱藏層后面都加入了Dropout層以防止模型發(fā)生過擬合。Dropout層的參數(shù)設(shè)置為0.2,表示隨機(jī)丟掉20%的神經(jīng)元個(gè)數(shù)。迭代次數(shù)根據(jù)模型擬合需要分別選有700次和800次。
表1是BP網(wǎng)絡(luò)(模型1-5)和LSTM網(wǎng)絡(luò)(模型6、7)訓(xùn)練模型的準(zhǔn)確率結(jié)果表。
由準(zhǔn)確率結(jié)果表可以看出,BP網(wǎng)絡(luò)模型隱藏層神經(jīng)元個(gè)數(shù)為20、30、40的三個(gè)模型的準(zhǔn)確率相差并不是很大,準(zhǔn)確率均在65%到66%之間。三個(gè)模型在訓(xùn)練過程階段的擬合效果均不錯(cuò),但在測試集上的準(zhǔn)確率明顯低于模型訓(xùn)練時(shí)的準(zhǔn)確率,由此可以看出模型的泛化能力有待提高,都存在較輕較重的過擬合現(xiàn)象。分別在隱藏層神經(jīng)元個(gè)數(shù)為30、40的模型隱藏層之后添加一層Dropout層之后,能夠明顯改善模型的過擬合現(xiàn)象,提高模型的泛化能力,并且模型在測試集中應(yīng)用的準(zhǔn)確率也略有提高,這說明Dropout工具能夠顯著改善模型的適用性和準(zhǔn)確性以及模型的泛化能力。
從準(zhǔn)確率來看,五個(gè)模型在測試集上的準(zhǔn)確率均在65%到67%之間,五個(gè)模型的準(zhǔn)確性相去不大。而從模型訓(xùn)練效果和泛化能力來講,模型3要略優(yōu)于另外四個(gè)模型,在三個(gè)數(shù)據(jù)集上的準(zhǔn)確率十分穩(wěn)定,均在66%到67%之間。
LSTM單元隱藏層節(jié)點(diǎn)設(shè)置為30個(gè),由于LSTM層較深,易產(chǎn)生過擬合現(xiàn)象,因此本文在LSTM層之后又添加了一個(gè)Dropout層,Dropout層參數(shù)設(shè)置為0.4。模型迭代次數(shù)為120次。
LSTM模型6在訓(xùn)練集上的準(zhǔn)確率達(dá)到了91.46%,在驗(yàn)證集上為87.24%,而在測試集上較低,為86.83%??梢钥闯鯨STM網(wǎng)絡(luò)模型過擬合現(xiàn)象較BP網(wǎng)絡(luò)模型要更為嚴(yán)重,在訓(xùn)練模型的時(shí)候就已經(jīng)出現(xiàn)了過擬合。添加了Dropout層的模型7的準(zhǔn)確率在三個(gè)數(shù)據(jù)集上十分相近,顯著提高了模型的泛化能力。從測試集上的準(zhǔn)確率來看,模型7較模型6略有提高,這說明模型的適用性和準(zhǔn)確性略有提升。
LSTM模型在預(yù)測能力上要顯著高于BP網(wǎng)絡(luò)模型。在相同的數(shù)據(jù)集上,BP網(wǎng)絡(luò)模型的最優(yōu)準(zhǔn)確率在66.98%左右,而LSTM網(wǎng)絡(luò)模型的最優(yōu)準(zhǔn)確率高達(dá)87.4%,提升了20%有余。
4.總結(jié)
本文實(shí)驗(yàn)的研究對象是上證綜指。實(shí)驗(yàn)所采用的股票數(shù)據(jù)是日線交易數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行特征提取,得到了ROC、RSI、CMO、MACD等17個(gè)指標(biāo)特征。
實(shí)驗(yàn)結(jié)果證明了LSTM模型在對諸如股票這類時(shí)序數(shù)據(jù)的預(yù)測中較傳統(tǒng)的BP網(wǎng)絡(luò)有非常明顯的優(yōu)勢,模型最終的準(zhǔn)確率達(dá)到了87.4%。并且Dropout工具能夠顯著改善模型的適用性和準(zhǔn)確性以及模型的泛化能力。
神經(jīng)網(wǎng)絡(luò)模型的好壞也很大程度上依賴于輸入特征的選擇,有關(guān)于分類對象更完善的特征對分類的準(zhǔn)確性提高有很大的幫助,以后研究除了從優(yōu)化模型結(jié)構(gòu)、改變優(yōu)化算法亦可以從完善特征工程入手。
參考文獻(xiàn):
[1]吳凌云.BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法的改進(jìn)及其應(yīng)用[J].信息技術(shù),2003,27(7):42-44.
[2]Luca Di Persio,Ole Ksandr Honchar.Artificial neural networks approach to forecast of stock market price movements[J].International Journal of Economics and Management Systems, Vol.1, 2016: 158-162.
[3]張翔.量化投資與Python語言[M].北京:清華大學(xué)出版社,2018.
作者簡介:謝君杰(1997.2-),男,漢族,浙江紹興人,上海大學(xué)經(jīng)濟(jì)學(xué)院,2019級研究生。