文/趙翔(安徽大學(xué))
股票作為金融行業(yè)必不可少的一部分,日漸受到人們的關(guān)注,越來越多的人參與股票投資。在股票投資中人們最為關(guān)心的就是股價(jià)的波動,因?yàn)楣蓛r(jià)的波動直接影響著股市的穩(wěn)定以及金融市場與國民經(jīng)濟(jì)的健康發(fā)展。
擁有一個準(zhǔn)確的股價(jià)和趨勢預(yù)測方法有助于加強(qiáng)投資者活力,同時也可以給政府部門的市場監(jiān)管與指導(dǎo)提供支撐。因此,如何預(yù)測股票市場在金融領(lǐng)域是一個重要并且十分具有價(jià)值的課題。
現(xiàn)如今預(yù)測股票漲跌的方法五花八門,每個方法都有其優(yōu)點(diǎn)和缺點(diǎn),并沒有十全十美的預(yù)測方法。考慮到當(dāng)下預(yù)測方法眾多本文篇幅有限不能一一采用,所以本文選取了如今最熱門的方法之一人工神經(jīng)網(wǎng)絡(luò)。
人工神經(jīng)網(wǎng)絡(luò)通過效仿人大腦中神經(jīng)元功能,在股票市場中利用之前的數(shù)據(jù)和其他有關(guān)信息來對股價(jià)未來的變化趨勢進(jìn)行預(yù)測,并且其具有十分強(qiáng)大的自組織與自適應(yīng)的能力。正因如此,神經(jīng)網(wǎng)絡(luò)適用于處理具有非線性時間序列特征的股價(jià)預(yù)測問題,這也是神經(jīng)網(wǎng)絡(luò)如此受人推崇的原因。
神經(jīng)網(wǎng)絡(luò)是一個大的整體,而不僅僅是某一個方法,它包括了很多種方法。本文提出了一種基于BP神經(jīng)網(wǎng)絡(luò)針對股價(jià)預(yù)測問題的模型。首先從影響股價(jià)的眾多市場因素中討論并確定了11個針對股價(jià)預(yù)測的評價(jià)指標(biāo),然后通過相關(guān)關(guān)系分析把指標(biāo)個數(shù)降至6個;同時探討了樣本數(shù)據(jù)的選取、隱藏層節(jié)點(diǎn)個數(shù)和預(yù)處理等問題;最后多次運(yùn)行所建立的模型,得到一個具有最好預(yù)測精度和穩(wěn)定性的綜合模型。理論和實(shí)驗(yàn)的結(jié)果表明,本文建立的基于BP神經(jīng)網(wǎng)絡(luò)的股價(jià)預(yù)測綜合模型是可行且有效的,有著非常良好的應(yīng)用前景。
人工神經(jīng)網(wǎng)絡(luò)在人工智能領(lǐng)域扮演著重要角色,它通過模擬人腦神經(jīng)元的結(jié)構(gòu),找出隱藏在數(shù)據(jù)中的非線性關(guān)系。目前為止,人工神經(jīng)網(wǎng)絡(luò)被廣泛地應(yīng)用于包括醫(yī)學(xué)、經(jīng)濟(jì)學(xué)、圖像識別等在內(nèi)的各個領(lǐng)域。神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)大致可以分為輸入層、隱含層和輸出層三個部分,數(shù)據(jù)傳入輸入層,通過閾值,權(quán)重和激勵函數(shù)在神經(jīng)元中進(jìn)行運(yùn)算,經(jīng)過隱含層,層層傳遞,最后在輸出層得到結(jié)果。神經(jīng)網(wǎng)絡(luò)利用誤差反向傳遞,逐次調(diào)整閾值和權(quán)重,通過多次的迭代,參數(shù)進(jìn)行反復(fù)優(yōu)化,最后便可得到一個擁有某種作用的神經(jīng)網(wǎng)絡(luò)。
人工神經(jīng)網(wǎng)絡(luò)只是大量人工智能技術(shù)中的一種,其之所以引起人們廣泛的關(guān)注,是因?yàn)橄鄬τ谄渌斯ぶ悄芗夹g(shù),具有以下幾個優(yōu)勢:
1.容錯與聯(lián)想存取能力
人工神經(jīng)網(wǎng)絡(luò)的參數(shù)大部分是由閾值與連接權(quán)重組成,人工神經(jīng)網(wǎng)絡(luò)的整個學(xué)習(xí)過程就是在對這些參數(shù)進(jìn)行更新和調(diào)整,最終人工神經(jīng)網(wǎng)絡(luò)就會把通過學(xué)習(xí)所得到的數(shù)據(jù)之間的關(guān)系存儲在這些參數(shù)中。同時如果BP神經(jīng)網(wǎng)絡(luò)部分的神經(jīng)元結(jié)構(gòu)遭到破壞時,它不會對整個訓(xùn)練結(jié)果造成很大的影響,也就是說整個神經(jīng)網(wǎng)絡(luò)部分結(jié)構(gòu)出現(xiàn)問題后它依然可以正常的運(yùn)行,并且得到的結(jié)果不會受到太大的影響。這就是BP神經(jīng)網(wǎng)絡(luò)的容錯能力。
2.高速尋優(yōu)能力
人工神經(jīng)網(wǎng)絡(luò)可以通過計(jì)算機(jī)進(jìn)行并行計(jì)算,加快訓(xùn)練速度,同時利用各種優(yōu)化函數(shù),讓神經(jīng)網(wǎng)絡(luò)能以最快的速度得出最優(yōu)參數(shù)。
3.自學(xué)能力
通常我們所得到的原始數(shù)據(jù)看似毫無關(guān)聯(lián),但其中往往隱藏著某種較為復(fù)雜的非線性關(guān)系,人工神經(jīng)網(wǎng)絡(luò)按照某種特定的機(jī)制對這些雜亂的數(shù)據(jù)進(jìn)行訓(xùn)練與學(xué)習(xí),當(dāng)完成訓(xùn)練與學(xué)習(xí)后,再把其他的同種雜亂的數(shù)據(jù)輸入到這個人工神經(jīng)網(wǎng)絡(luò)模型中,模型便會利用它之前通過學(xué)習(xí)得到的這種規(guī)律給出比較精確的結(jié)果。
4.非線性映射能力
BP神經(jīng)網(wǎng)絡(luò)實(shí)際上是輸入層到輸出層的一個映射,相關(guān)理論證明三層的人工神經(jīng)網(wǎng)絡(luò)就可以以任意的精度去迫近任意的非線性連續(xù)函數(shù)。這也是為什么它特別合適解決內(nèi)部機(jī)制復(fù)雜的問題。
5.泛化能力
泛化能力就是保證人工神經(jīng)網(wǎng)絡(luò)對所需分類對象正確進(jìn)行分類的前提下,還要求人工神經(jīng)網(wǎng)絡(luò)在經(jīng)過訓(xùn)練學(xué)習(xí)后,對未知模式或者含有噪聲的模式進(jìn)行正確分類。
其算法流程圖如圖1。
圖1 算法流程圖
BP算法是BP神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)節(jié)機(jī)制,給定一個由n組訓(xùn)練樣例構(gòu)成的訓(xùn)練數(shù)據(jù)集,x代表特征數(shù)據(jù),y代表標(biāo)簽數(shù)據(jù)(圖2)。
圖2 神經(jīng)網(wǎng)絡(luò)架構(gòu)
以(xk,yk)為例。敘述BP算法具體的流程,xk輸入網(wǎng)絡(luò),經(jīng)過層層計(jì)算,最終輸出的結(jié)果為:即:
以yk作對比計(jì)算出均方誤差為:
每一輪迭代運(yùn)算 ,均會對參數(shù)做一次更新調(diào)整,參數(shù)更新公式為:
這里選取隱含層到輸出層的鏈接權(quán)ωhj作為樣例,描述神經(jīng)網(wǎng)絡(luò)中各參數(shù)的更新過程。BP算法采用非線性規(guī)劃中的梯度下降法對參數(shù)進(jìn)行調(diào)整,因此選取目標(biāo)的負(fù)梯度方向?qū)?shù)進(jìn)行調(diào)整,給定學(xué)習(xí)率η,有:
數(shù)據(jù)在網(wǎng)絡(luò)的傳遞過程中,先用計(jì)算第j個輸出神經(jīng)元的輸入值βj,然后再通過激活函數(shù)計(jì)算其輸出值進(jìn)而得到Ek。
金融時間序列指的是把金融數(shù)據(jù)在特定的時間內(nèi)按照時間前后順序所獲得值進(jìn)行排列,它有一個最明顯的特征就是與“時間”緊密相連。金融時間序列主要受到行業(yè)周期、供求關(guān)系、宏觀經(jīng)濟(jì)政策等眾多外部條件影響。所以怎樣利用這些外部條件對股票進(jìn)行研究十分重要。一般我們認(rèn)為,宏觀經(jīng)濟(jì)和外界環(huán)境的變化,會以某種形式表現(xiàn)在數(shù)據(jù)里,我們所面臨的問題是怎么去對數(shù)據(jù)進(jìn)行挖掘,研究各種信息融合對序列趨勢所產(chǎn)生的影響,突發(fā)事件對序列的影響也會通過數(shù)據(jù)的突然變化體現(xiàn)出來。本文對金融時間的選取,數(shù)據(jù)的處理,機(jī)器學(xué)習(xí)模型,分類回歸預(yù)測模型評價(jià)指標(biāo)進(jìn)行相應(yīng)的描述。
本文實(shí)驗(yàn)所選取的數(shù)據(jù)為五糧液(000858)2018年 1月 2號 到2020年12月16號日線數(shù)據(jù)集。該數(shù)據(jù)集是網(wǎng)易財(cái)經(jīng)網(wǎng)站的一個子數(shù)據(jù)集,一共有720條數(shù)據(jù)。除了收集股票數(shù)據(jù)外,我們還需要知道引起股價(jià)變化的具體因素,并選取影響股價(jià)的主要因素建立一個合適的股價(jià)預(yù)測模型。在建立模型之前,我們需要采集盡可能多的信息方便我們從各個不同的角度和層面來分析股票。首先我們需將數(shù)據(jù)分成兩個部分,如表1所示,第一部分為2018年1月2號到2020年12月16號每日的歷史股票數(shù)據(jù)(選取70%的數(shù)據(jù))我們用它來當(dāng)訓(xùn)練數(shù)據(jù)集(如表),用于人工神經(jīng)網(wǎng)絡(luò)算法學(xué)習(xí)和訓(xùn)練,剩下的數(shù)據(jù)就為我們的測試數(shù)據(jù)集。我們利用經(jīng)過學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)模型對測試集股價(jià)趨勢進(jìn)行預(yù)測,將得到預(yù)測結(jié)果與實(shí)際數(shù)據(jù)進(jìn)行一個對比(表1)。
表1 樣本劃分?jǐn)?shù)據(jù)說明
本文從最高價(jià)、最低價(jià)、開盤價(jià)等維度選取了11個評價(jià)指標(biāo)。日線數(shù)據(jù)的每一行代表的為每一天的記錄,主要記錄了當(dāng)天股票的開盤和收盤價(jià)、最低價(jià)和最高價(jià)格以及成交量等幾個關(guān)鍵指標(biāo),開盤價(jià)為當(dāng)天早上9:30所給出的開盤價(jià),收盤價(jià)為當(dāng)天下午3:00所給出的收盤價(jià),最低價(jià)和最高價(jià)分別為當(dāng)天價(jià)格最低時候和最高時候所對應(yīng)的值,成交量是一整天的累積,其原始數(shù)日線部分?jǐn)?shù)據(jù)如表2。
表2 數(shù)據(jù)說明
我們需要對原始數(shù)據(jù)進(jìn)行一定程度的預(yù)處理,前期數(shù)據(jù)的一些準(zhǔn)備工作對我們所得到的序列預(yù)測效果有著十分重大的影響,可以說我們所得到模型的精度很大程度上取決于對原始數(shù)據(jù)預(yù)處理的效果。因此,利用一些有效的技術(shù)手段對金融時間序列數(shù)據(jù)進(jìn)行前期預(yù)處理變得十分有必要,它可以讓數(shù)據(jù)更加可靠和完整,可以在一定程度上提高數(shù)據(jù)的質(zhì)量,從而能提高模型預(yù)測的準(zhǔn)確率和精確度。
(1)異常值和空缺值處理:目前比較流行的解決方法有以下幾種,例如直接把缺失值刪除或者運(yùn)回歸值、前一時刻的正常值、平均值等填充,但是金融數(shù)據(jù)整體數(shù)據(jù)一般波動幅度較大,用平均值填充缺失值或者代替異常值的話非常容易產(chǎn)生較大的誤差,因此我們通常選擇采用前一時刻的正常值來替換比較合適。
(2)數(shù)據(jù)標(biāo)準(zhǔn)化處理:在現(xiàn)實(shí)中,即使同種類型的數(shù)據(jù)集所使用的量綱也會不同,因此,一般需要對時間序列進(jìn)行一定的標(biāo)準(zhǔn)化處理,如果直接利用它們進(jìn)行一系列的處理和分析,得到的結(jié)果將會產(chǎn)生一定程度的偏差,不能體現(xiàn)真正的預(yù)測結(jié)果甚至產(chǎn)生違背事實(shí)的結(jié)果。一般時間序列的標(biāo)準(zhǔn)化方法有:線性函數(shù)歸一化處理,Z-Score,反正切函數(shù)轉(zhuǎn)化,對數(shù)轉(zhuǎn)化,本文使用的是線性歸一化處理數(shù)據(jù),下面簡單介紹一下線性歸一化處理,計(jì)算公式如下:
輸入數(shù)據(jù)為 X=(x1,x2 ...xn),xmin為輸入數(shù)據(jù)的最小值,xmax為輸入數(shù)據(jù)的最大值,通過線性歸一化處理線性函數(shù),使得輸入數(shù)據(jù)在同一個量綱上,有效地減少預(yù)測的誤差,提高預(yù)測的精確度。
1.隱含層數(shù)的確定
1989 年 Robert Hecht - Nielsen用數(shù)學(xué)理論證明了在任何一個閉區(qū)間內(nèi)的任意一個連續(xù)函數(shù)都可以采用含有一層隱含層的BP神經(jīng)網(wǎng)絡(luò)來逼近,即我們可以用一個含有三層隱含層的BP網(wǎng)絡(luò)完成任意的m維到n維的映射。因此,本文選定含有一層隱含層的BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型。
2.隱含層節(jié)點(diǎn)數(shù)的確定(表3)
表3 不同隱含層節(jié)點(diǎn)數(shù)誤差分析
一般來說,對于較為復(fù)雜的股價(jià)預(yù)測問題,BP神經(jīng)網(wǎng)絡(luò)預(yù)測按照經(jīng)驗(yàn)公式,隱含層一般含有神經(jīng)元個數(shù)的大致范圍為3-10,然后采用比較法,找到最適合的隱含層結(jié)點(diǎn)個數(shù)。實(shí)驗(yàn)結(jié)果如表3所示:通常BP神經(jīng)網(wǎng)絡(luò)模型的誤差隨著節(jié)點(diǎn)個數(shù)的增加會呈現(xiàn)先減少后增加的趨勢。我們通過比較不同隱含層節(jié)點(diǎn)數(shù)的測試均方誤差,表3表明,在本文的實(shí)驗(yàn)中隱含節(jié)點(diǎn)數(shù)為6時,網(wǎng)絡(luò)預(yù)測誤差最小。因此,本文確定隱含層節(jié)點(diǎn)數(shù)為6。
從五糧液收盤價(jià)的趨勢圖可以看出(如圖3),五糧液的股價(jià)呈現(xiàn)出先下降后上升的趨勢,在2018年到2019年期間,五糧液的股價(jià)是逐漸下降的,2019年到2021年改變了以往的趨勢,表現(xiàn)出一路上漲的形態(tài),雖然中間略微波動且下降,從圖中可以直觀地看出,2020年到2021年上漲的速度比上一年還要快。五糧液作為“濃香型”白酒之一,股價(jià)的上漲可能與五糧液公司的業(yè)績良好有很大的關(guān)系。
圖3 五糧液趨勢圖
根據(jù)圖3、圖4和圖5可以明顯地看出五糧液股票的收盤價(jià)時間序列的確出現(xiàn)尖峰厚尾性,對比標(biāo)準(zhǔn)正態(tài)分布,兩段的尾部更厚,也就是極值更多,峰度更高。通過圖6明顯看出五糧液的股票價(jià)格收益率序列在樣本區(qū)間內(nèi)都顯示出一定程度的聚集性和波動性,其中,在2018到2021的三年中波動幅度十分的明顯。
圖4 五糧液收益率分布
圖5 QQ 圖
圖6 收益率波動
在數(shù)據(jù)規(guī)范化中選擇線性歸一化處理方法對數(shù)據(jù)進(jìn)行操作,圖7是數(shù)據(jù)處理前的收盤價(jià)價(jià)格變化走勢,圖8是數(shù)據(jù)處理后的收盤價(jià)價(jià)格變化趨勢,從圖中可以清晰地看出,基本保持了原始數(shù)據(jù)的走勢規(guī)律,說明歸一化不改變數(shù)據(jù)要表達(dá)的原始意義。
圖7 原始數(shù)據(jù)分布
圖8 處理后數(shù)據(jù)分布
進(jìn)一步,對處理后的數(shù)據(jù)進(jìn)行變量的篩選,參考相關(guān)文獻(xiàn)的變量選擇和相關(guān)性分析,最終選出與標(biāo)簽變量相關(guān)度大的變量,選取收盤價(jià)為輸出變量即因變量,最高價(jià)、最低價(jià)、開盤價(jià)、前收盤、成交量、總市值為輸入變量即自變量,設(shè)置模型的學(xué)習(xí)率為0.01,對其建立金融時間序列預(yù)測的神經(jīng)網(wǎng)絡(luò)模型,以探究神經(jīng)網(wǎng)絡(luò)預(yù)測效果及其模型在金融時間序列的數(shù)據(jù)的可行性。
運(yùn)用綜合代碼進(jìn)行十次交叉檢驗(yàn),記錄每一次模型的均方誤差,并計(jì)算其均值,由表4、圖9可知,模型的均方誤差是 0.0202。由箱線圖可知,只有一個異常值,其余的值都在0到0.045之間。
表4 多次運(yùn)行誤差分析
圖9 均方誤差箱線圖
通過實(shí)證分析結(jié)果可以發(fā)現(xiàn),其預(yù)測結(jié)果如圖,對于處理后的數(shù)據(jù),從圖10訓(xùn)練集預(yù)測效果圖可以看出,神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練集表現(xiàn)出較好的預(yù)測效果,而在驗(yàn)證集上,神經(jīng)網(wǎng)絡(luò)模型在短期內(nèi)的股票預(yù)測較為準(zhǔn)確,但是從圖11可以看出,長期的擬合效果有點(diǎn)差,測試誤差均在0周圍波動。(圖12、圖13)
圖10 訓(xùn)練集預(yù)測效果
圖11 訓(xùn)練集誤差
圖12 測試集預(yù)測效果
圖13 測試集誤差
本文綜合考慮造成股市市場變化的各個方面因素,從成交量、總市值、股票價(jià)格等方面選取了11個評價(jià)指標(biāo),然后我們通過相關(guān)關(guān)系方法減少評價(jià)指標(biāo)的個數(shù),找到了6個主要影響股市市場的評價(jià)指標(biāo)。以此建立基于BP神經(jīng)網(wǎng)絡(luò)的股價(jià)預(yù)測綜合模型。
一般短期股價(jià)的波動隱藏著非線性的映射關(guān)系,BP神經(jīng)網(wǎng)絡(luò)相比其他算法有著很強(qiáng)的非線性映射能力,所以它可以完美地解決非線性映射關(guān)系,并且它擁有十分強(qiáng)大的自主學(xué)習(xí)能力。
因此,BP神經(jīng)網(wǎng)絡(luò)可以實(shí)現(xiàn)對短期股票收盤價(jià)比較精準(zhǔn)的預(yù)測。我們由圖12所得出的結(jié)果也可以驗(yàn)證這一點(diǎn),在短期時間內(nèi)對股票的預(yù)測還是十分精準(zhǔn)的。但BP神經(jīng)網(wǎng)絡(luò)也存在一定的缺點(diǎn),如果我們想要對股票做一個長期預(yù)測,最好不要采用BP神經(jīng)網(wǎng)絡(luò),因?yàn)樗玫降慕Y(jié)果并不是很理想,如圖12、圖13所顯示的結(jié)果。所以我們在現(xiàn)實(shí)生活中進(jìn)行股票投資的時候,可以用BP神經(jīng)網(wǎng)絡(luò)模型對股價(jià)進(jìn)行預(yù)測,給自己提供一個短期時間內(nèi)股票走勢參考。如果想要利用BP神經(jīng)網(wǎng)絡(luò)對股票進(jìn)行一個長期的投資預(yù)測,我們首先要對其算法原理存在的缺陷進(jìn)行一定的改進(jìn),現(xiàn)在已經(jīng)出現(xiàn)了很多改進(jìn)后的方案,在這里就不細(xì)說。