黃卓誠
(河北金融學(xué)院 河北 保定 071051)
隨著中國經(jīng)濟(jì)的發(fā)展,股票市場作為服務(wù)實(shí)體經(jīng)濟(jì)的重要手段,對企業(yè)發(fā)展和整體經(jīng)濟(jì)穩(wěn)步提升有著重要意義。與此同時(shí),股票市場的漲跌與國民經(jīng)濟(jì)密切相關(guān),國家的經(jīng)濟(jì)形勢往往也可以通過股票價(jià)格的變化來體現(xiàn)。因此,預(yù)測和研究股票價(jià)格的重要性也愈發(fā)顯著。
近年來,越來越多的研究者通過經(jīng)濟(jì)學(xué)、數(shù)學(xué)理論來分析、研究和預(yù)測股票的走勢,得到了不同的預(yù)測理論。然而,股票市場是一個復(fù)雜的非線性動態(tài)系統(tǒng),所以在對其進(jìn)行預(yù)測時(shí)若使用傳統(tǒng)的時(shí)間序列模型,效果并不理想。這也使得其對函數(shù)的擬合需求也是非線性擬合。
本文所介紹的神經(jīng)網(wǎng)絡(luò)作為不依賴于模型的自適應(yīng)函數(shù)預(yù)測器,可以帶來更好的預(yù)測效果。本文提出基于神經(jīng)網(wǎng)絡(luò)的短時(shí)股票趨勢預(yù)測模型,通過全連接神經(jīng)網(wǎng)絡(luò)算法,所建立的模型能夠找到市場環(huán)境變化所帶來的一定規(guī)律,一定程度上解決以往一些股票趨勢預(yù)測方法的缺陷。
神經(jīng)網(wǎng)絡(luò),全稱為人工神經(jīng)網(wǎng)絡(luò),是對人類大腦思維的模擬。由于人腦中含有多個神經(jīng)元并將其連接而成一個多層網(wǎng)絡(luò),使得它能夠很好的對人類大腦進(jìn)行模擬并且充分實(shí)現(xiàn)大腦中神經(jīng)元的所有功能。作為一個自適應(yīng)的函數(shù)預(yù)測器,神經(jīng)網(wǎng)絡(luò)因其復(fù)雜的非線性動態(tài)系統(tǒng),并不依靠于任何的模型,故當(dāng)其實(shí)現(xiàn)某種函數(shù)關(guān)系時(shí)無需依靠其他模型。
神經(jīng)網(wǎng)絡(luò)在進(jìn)行處理時(shí)擁有較強(qiáng)的學(xué)習(xí)能力以及容錯能力,這使得其比起傳統(tǒng)的處理方式更具優(yōu)勢。所以,我們可以發(fā)現(xiàn)在信息領(lǐng)域,對神經(jīng)網(wǎng)絡(luò)的使用與發(fā)展越來越具有重要意義。
神經(jīng)元在神經(jīng)網(wǎng)絡(luò)中的連接方式反映了神經(jīng)元之間的拓?fù)浣Y(jié)構(gòu),它決定了神經(jīng)元的本質(zhì)及其處理信息的能力。本文中使用的反向傳播神經(jīng)網(wǎng)絡(luò)(Back-Propagation Network,即BP網(wǎng)絡(luò))是用于非線性可微分函數(shù)的權(quán)重訓(xùn)練的多層網(wǎng)絡(luò)。而在實(shí)際運(yùn)用人工神經(jīng)網(wǎng)絡(luò)時(shí),80%~90%的神經(jīng)網(wǎng)絡(luò)模型是使用BP網(wǎng)絡(luò)或其變體,它也是前向網(wǎng)絡(luò)的核心部分,反映了人工神經(jīng)網(wǎng)絡(luò)最精華和重要的部分[1]。
自1987年Lapedes和Faeber首次將神經(jīng)網(wǎng)絡(luò)應(yīng)用于預(yù)測以來,神經(jīng)網(wǎng)絡(luò)在金融領(lǐng)域中的預(yù)測方法得到了廣泛重視和研究[2]。自90年代開始,神經(jīng)網(wǎng)絡(luò)在經(jīng)濟(jì)領(lǐng)域得到了廣泛運(yùn)用。
FUJITSU實(shí)驗(yàn)室的Kimoto等人在分析不同市場相關(guān)因素內(nèi)在聯(lián)系的基礎(chǔ)上,開發(fā)了基于神經(jīng)網(wǎng)絡(luò)模型的TOPIX預(yù)測系統(tǒng),預(yù)測東京股票交易市場的股票買賣時(shí)機(jī)[3]。Dr.Youngohc Yoon和George Swales在1991年比較分析了神經(jīng)網(wǎng)絡(luò)和多重差分方法應(yīng)用于股價(jià)的預(yù)測方面的能力[4]。2005年,Altay通過實(shí)驗(yàn)比較了神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)線性回歸方法進(jìn)行預(yù)測的效果,證明了神經(jīng)網(wǎng)絡(luò)相對于傳統(tǒng)線性回歸在股票預(yù)測方面的優(yōu)越性[5]。
在國內(nèi)也有許多學(xué)者對利用神經(jīng)網(wǎng)絡(luò)進(jìn)行股票價(jià)格的預(yù)測展開過研究。陳蓓蓓于2011年將股票價(jià)格預(yù)測與主成分分析法以及神經(jīng)網(wǎng)絡(luò)模型相結(jié)合進(jìn)行研究。鄭睿等在2015年將因子分析與神經(jīng)網(wǎng)絡(luò)兩者融合,以此對股票價(jià)格預(yù)測分析[6]。孫晨等在2016年對BP神經(jīng)網(wǎng)絡(luò)進(jìn)行布谷鳥算法優(yōu)化之后,將模型應(yīng)用到股價(jià)預(yù)測之中[7]。孫冰潔等在2016年利用小波分解與重構(gòu),采用BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行股票市場的研究[8]。
在眾多研究中,神經(jīng)網(wǎng)絡(luò)均能更好的擬合數(shù)據(jù)并更好的泛化,其預(yù)測精度比傳統(tǒng)的統(tǒng)計(jì)預(yù)測方法有很大的提高,相對而言可以得到更好的結(jié)果,這些研究成果有力地證明了神經(jīng)網(wǎng)絡(luò)在對于股票市場的預(yù)測上更為有效。
雖然BP神經(jīng)模型在分析和預(yù)測股票市場等非線性系統(tǒng)方面有其獨(dú)特的優(yōu)勢,但是,也存在一些需要解決的問題。通過對模型所含有的缺點(diǎn)進(jìn)行分析可以得到一些解決方案。
首先,由于BP算法的本質(zhì)是梯度下降法,所以發(fā)生鋸齒形現(xiàn)象的概率很大,即一般來說,當(dāng)誤差梯度變化相對較小時(shí),增加權(quán)重值的調(diào)整量能夠使得誤差的變化明顯,但在這種情況下,即使將權(quán)重值的調(diào)整量增加,誤差的變化也會增加的較為緩慢,這便是BP神經(jīng)算法之所以效率低的原因[9]。
其次,雖然整個模型的權(quán)重值和閾值都可由于訓(xùn)練而達(dá)到最優(yōu)值,但在網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)運(yùn)算函數(shù)的選擇上仍然是主觀的,缺乏理論依據(jù),一般選取都是基于經(jīng)驗(yàn)。這就使得整個模型往往具有復(fù)雜性、局限性,也增加了網(wǎng)絡(luò)學(xué)習(xí)時(shí)間。
研究者們也針對以上問題,不斷給予改進(jìn)。一些研究者改進(jìn)了激活函數(shù),不再使用原有的轉(zhuǎn)換函數(shù)Sigmoid,而是使用tan-Sigmoid函數(shù)。tan-Sigmoid能將(-∞,+∞)的輸入值分別映射到(-1,1)之間,這樣的輸入輸出關(guān)系能夠恰好反映單個神經(jīng)元的響應(yīng)特征,從而優(yōu)化整個模型。另外也可以選擇Relu作為激活函數(shù),Relu的優(yōu)勢在于:1.不飽和;2.計(jì)算效率高;3.收斂速度快。Relu激活函數(shù)可以有效解決梯度下降苦難的問題,每層的網(wǎng)絡(luò)都可以得到相同的更新速度。通過選擇適合的激活函數(shù),可以有效解決學(xué)校收斂慢、梯度消失的問題。
除此之外,網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)對于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效率、準(zhǔn)確度具有重要意義,它主要包括:隱藏層數(shù)、隱藏節(jié)點(diǎn)數(shù)、學(xué)習(xí)率、步長、優(yōu)化器參數(shù)等。為了更好地改進(jìn)神經(jīng)網(wǎng)絡(luò),應(yīng)當(dāng)針對實(shí)際問題選取最適合的數(shù)值。
1.指數(shù)選取
模型使用上證收盤價(jià)作為預(yù)測值。上證綜合指數(shù)是根據(jù)西方發(fā)達(dá)國家的經(jīng)驗(yàn)編制的價(jià)值加權(quán)指數(shù),具有一定的科學(xué)性,可以非常準(zhǔn)確地反映市場的行情變動趨勢[10]。本文中選取2016年1月4日-2019年5月30日的收盤價(jià)作為樣本。根據(jù)以往文獻(xiàn),我們選取開盤價(jià)、收盤價(jià)、最高價(jià)、最低價(jià)、成交量、換手率[11]等對與股票價(jià)格高度相關(guān)的指標(biāo),作為神經(jīng)網(wǎng)絡(luò)特征值。
2.數(shù)據(jù)預(yù)處理
為了避免各特征值由于量級不同(如收盤價(jià)和換手率數(shù)字相差巨大)所造成的擬合時(shí)權(quán)重過大或過小,需要對原始數(shù)據(jù)需要進(jìn)行標(biāo)準(zhǔn)化處理,使數(shù)據(jù)單位統(tǒng)一。
標(biāo)準(zhǔn)化處理公式為
將標(biāo)準(zhǔn)化的數(shù)據(jù)分為兩部分分別作為訓(xùn)練集和測試集。其中,訓(xùn)練集合包含總樣本中650天的樣本,測試集包含剩余178個樣本。
1.隱藏神經(jīng)層
一般來說,增加隱藏神經(jīng)層的數(shù)量可以提高學(xué)習(xí)的精度。但是隨著隱藏層數(shù)的提高也會使網(wǎng)絡(luò)復(fù)雜化,容易造成訓(xùn)練時(shí)間的增加并且造成過擬合。在本研究中,對于股票價(jià)格預(yù)測這種簡單的回歸問題,選擇使用單層隱藏神經(jīng)層進(jìn)行學(xué)習(xí)。
2.隱藏節(jié)點(diǎn)數(shù)
隱藏節(jié)點(diǎn)的選擇對于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效果非常重要。選擇的隱層節(jié)點(diǎn)數(shù)太少,網(wǎng)絡(luò)訓(xùn)練效果會很差,甚至不能擬合;如果隱層節(jié)點(diǎn)數(shù)太多,雖然可以讓誤差效果縮小,但是與增加隱藏神經(jīng)層一樣,容易造成訓(xùn)練時(shí)間增加和過擬合情況,導(dǎo)致最終預(yù)測能力下降。
隱藏節(jié)點(diǎn)數(shù)的選擇公式為:
其中m是隱藏層節(jié)點(diǎn)數(shù),n是輸入層節(jié)點(diǎn)數(shù),l是輸出層節(jié)點(diǎn)數(shù)。a是1到10之間的常數(shù)。經(jīng)過多次測試,最終隱藏節(jié)點(diǎn)數(shù)選定為9個。最終構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型如圖1所示:
圖1
使用ADAM優(yōu)化器令神經(jīng)網(wǎng)絡(luò)開始訓(xùn)練,以均方誤差RMSE作為損失值。在訓(xùn)練過程中,模型會自動嘗試不同的權(quán)重w、偏置值b,并依據(jù)損失值最小化原則自動進(jìn)行參數(shù)調(diào)整。RMSE的計(jì)算公式為
權(quán)衡了精確度和學(xué)習(xí)效率,本研究將學(xué)習(xí)率定為0.001,并進(jìn)行200次迭代學(xué)習(xí)。使用不同的激活函數(shù),使神經(jīng)網(wǎng)絡(luò)提供非線性輸出。實(shí)驗(yàn)分別嘗試了Sigmoid,tanh以及Relu函數(shù)。擬合過程中的損失值變化如下圖、表所示:
表1 使用Sigmoid函數(shù)的損失值
表2 使用tanh函數(shù)的損失值
表3 使用Relu函數(shù)的損失值
圖2 Sigmoid函數(shù)損失下降曲線
圖3 tanh函數(shù)損失下降曲線
圖4 Relu函數(shù)損失下降曲線
根據(jù)表1、表2、表3和圖1、圖2、圖3可以看出,三種不同的激活函數(shù)在處理學(xué)習(xí)的過程中均表現(xiàn)出了不錯的收斂速度,均迭代25次前實(shí)現(xiàn)了曲線的快速擬合。
圖5 Sigmoid函數(shù)的預(yù)測與真實(shí)值對比
圖6 tanh函數(shù)的預(yù)測與真實(shí)值對比
圖7 Relu函數(shù)的預(yù)測與真實(shí)值對比
從預(yù)測值和真實(shí)值的對比情況來看,使用Sigmoid和tanh函數(shù)預(yù)測的曲線與真實(shí)值相差巨大。這通常是由于過擬合引起的,即訓(xùn)練集的損失下降很快,但是模型并不能很好地推廣到測試集數(shù)據(jù)上。
而使用Relu函數(shù)的模型,可以更好地避免過擬合,模擬出大盤指數(shù)收盤價(jià)的漲跌情況。
圖8 Relu函數(shù)曲線圖
如圖8所示,這主要是由于Relu函數(shù)會使一部分神經(jīng)元的輸出為0,這樣就造成了網(wǎng)絡(luò)的稀疏性,類似于在層間添加了一個隨機(jī)丟棄(DropOut)的效果,減弱了參數(shù)之前的相互依存性,最終防止了過擬合問題的發(fā)生。
本文使用上證綜合指數(shù)各項(xiàng)指標(biāo)作為樣本,通過構(gòu)建bp神經(jīng)網(wǎng)絡(luò)對未來上證綜合指數(shù)進(jìn)行預(yù)測,并得到了比較良好的預(yù)測結(jié)果。
在使用神經(jīng)網(wǎng)絡(luò)對股票價(jià)格進(jìn)行學(xué)習(xí)、預(yù)測的過程中發(fā)現(xiàn),雖然在本次實(shí)驗(yàn)中使用不同激活函數(shù)都可以使損失快速收斂,但是訓(xùn)練出來的模型的預(yù)測效果并不一定總是令人滿意。所以,應(yīng)當(dāng)根據(jù)序列的復(fù)雜程度、特征值維度、預(yù)測值維度、數(shù)據(jù)標(biāo)準(zhǔn)化方式等實(shí)際情況選擇適合的激活函數(shù)和神經(jīng)網(wǎng)絡(luò)架構(gòu)。
雖然本文構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型理論上的預(yù)測結(jié)果較為良好,但是不得不考慮到由于上證指數(shù)體量夠大、有漲跌幅限制,大盤指數(shù)每日的收盤價(jià)格并不會相差很多,而是一定在正負(fù)10%之內(nèi),并且實(shí)際上上證指數(shù)在絕大多數(shù)情況下漲跌幅小于5%。因此本文中良好的預(yù)測效果可能只是由于指數(shù)每日的偏差不大,并且特征值中已經(jīng)包含了上一天的收盤價(jià)所導(dǎo)致的。
為了更好地使用機(jī)器學(xué)習(xí)的方式進(jìn)行股票價(jià)格預(yù)測,避免單純通過過去價(jià)格信息預(yù)測未來的“技術(shù)面游戲”,在未來的研究中可以考慮更多地加入即時(shí)輿情信息,例如:使用爬蟲抓取互聯(lián)網(wǎng)上網(wǎng)民對于個股、大盤的評論,分析市場情緒;引入搜索引擎的搜索指數(shù),分析輿論熱度等,從而提高預(yù)測準(zhǔn)確性,保護(hù)投資者利益,更好地維護(hù)股票市場穩(wěn)定。