梅杰 李星野
摘要:針對傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測的缺陷,本文采用小波神經(jīng)網(wǎng)絡(luò)對滬深300指數(shù)收盤價(jià)的短期走勢進(jìn)行了預(yù)測分析。實(shí)驗(yàn)結(jié)果表明小波神經(jīng)網(wǎng)絡(luò)比直接使用神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測的精度更高,預(yù)測的效果也更好。
關(guān)鍵詞:小波神經(jīng);預(yù)測;滬深300指數(shù)
一、引言
股市是金融市場的一個(gè)重要組成部分,股票市場價(jià)格預(yù)測是金融分析領(lǐng)域中一個(gè)重要且困難的問題。由于受到時(shí)間序列具有平穩(wěn)性、正態(tài)性和獨(dú)立性的限制,傳統(tǒng)的統(tǒng)計(jì)建模方法 (如指數(shù)平滑法、ARMA模型等)在解決諸如股票一類的時(shí)間序列預(yù)測問題時(shí)出現(xiàn)了一定的局限性,而神經(jīng)網(wǎng)絡(luò)應(yīng)用于股票預(yù)測有著獨(dú)特的優(yōu)勢,它不需要建立復(fù)雜的非線性系統(tǒng)的顯式關(guān)系和數(shù)學(xué)模型就可以進(jìn)行預(yù)測,這使得預(yù)測理論及方法產(chǎn)生了質(zhì)的飛躍。
自從Lapedes發(fā)表了將神經(jīng)網(wǎng)絡(luò)用于股票預(yù)測的文章以來,國內(nèi)外眾多學(xué)者都曾用其對股票數(shù)據(jù)進(jìn)行預(yù)測。White嘗試以人工神經(jīng)網(wǎng)絡(luò)來預(yù)測IBM公司普通股每日的收益率;楊忻和馬洪川用神經(jīng)網(wǎng)絡(luò)預(yù)測中長期馬克/美元的匯率;王愛平等采用神經(jīng)網(wǎng)絡(luò)對股票時(shí)間序列進(jìn)行短期走勢的預(yù)測分析。然而,傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型的固有缺陷,如算法容易陷入局部極小值、收斂速度慢等,嚴(yán)重限制了它的進(jìn)一步應(yīng)用。
近些年人們開始嘗試將小波神經(jīng)網(wǎng)絡(luò)應(yīng)用于股票預(yù)測,如向小東等人將小波神經(jīng)網(wǎng)絡(luò)用于上證指數(shù)的預(yù)測,王洪剛等人將小波神經(jīng)網(wǎng)絡(luò)應(yīng)用于SP500的短期走勢預(yù)測上。實(shí)證分析表明,基于小波神經(jīng)網(wǎng)絡(luò)的預(yù)測模型往往比傳統(tǒng)BP網(wǎng)絡(luò)的預(yù)測更為有效。
本文將小波分析和神經(jīng)網(wǎng)絡(luò)相結(jié)合形成“小波神經(jīng)網(wǎng)絡(luò)模型”,進(jìn)而用構(gòu)造了小波神經(jīng)網(wǎng)絡(luò)對滬深300指數(shù)收盤價(jià)的短期走勢進(jìn)行預(yù)測,與傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)預(yù)測方法進(jìn)行比較,體現(xiàn)小波神經(jīng)網(wǎng)絡(luò)的預(yù)測優(yōu)勢。
二、小波神經(jīng)網(wǎng)絡(luò)模型的建立
(一)小波分析
小波分析是近20年來發(fā)展起來的一個(gè)新興數(shù)學(xué)分支,它的出現(xiàn)為非平穩(wěn)信號分析和處理提供了一個(gè)強(qiáng)有力的工具。小波變化在時(shí)頻平面上的不同位置具有不同的分辨率,是一種多分辨率的信號分析方法。
在函數(shù)空間L2(R)中,如果φ(t)滿足
φ(t)dt=0(1)
則稱φ(t)為一個(gè)小波,也常稱為母小波或基本小波。
本文采用國外常使用的余弦調(diào)制高斯波:Morlet母小波,數(shù)學(xué)公式為
φ(t)=cos(1.75t)e(2)
對小波φ(t)進(jìn)行伸縮和平移,可得到一組函數(shù)
φa,b(t)=φ(),a>0,b∈R
(3)
其中φa,b(t)為小波基函數(shù),a為伸縮因子,b為平移因子。
對任意f(t)∈L2(R),其連續(xù)小波變換定義為
wf(a,b)=f(t)φa,b(t)dt(4)
與Fourier基于小波變換的小波分析是將信號函數(shù)分解成小波標(biāo)準(zhǔn)正交基,以此構(gòu)成級數(shù)來逼近信號函數(shù),不同的是小波基是通過平移和伸縮構(gòu)成的,具有良好的局部化性質(zhì),依據(jù)小波理論達(dá)到最佳的函數(shù)逼近能力。
(二)小波神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和學(xué)習(xí)算法
小波神經(jīng)網(wǎng)絡(luò)是一種以BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)為基礎(chǔ),它融合了小波變換與神經(jīng)網(wǎng)絡(luò),將常規(guī)神經(jīng)網(wǎng)絡(luò)隱含層節(jié)點(diǎn)函數(shù)由小波基函數(shù)代替,相應(yīng)輸入層到隱含層的權(quán)值及閾值分別由小波函數(shù)的伸縮和平移因子代替,信號前向傳播的同時(shí),誤差反向傳播的神經(jīng)網(wǎng)絡(luò)。因此,小波神經(jīng)網(wǎng)絡(luò)具備了小波變換的局部化能力和神經(jīng)網(wǎng)絡(luò)的自適應(yīng)學(xué)習(xí)功能。通常的預(yù)測模型采用三層的小波神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),因?yàn)榇蟛糠謱?shí)際的時(shí)間序列是非線性序列,少于三層結(jié)構(gòu)無法逼近這樣的非線性曲線。當(dāng)層數(shù)大于三層時(shí),當(dāng)然也可以逼近這樣的曲線,但增加了計(jì)算的復(fù)雜度,而對于BP神經(jīng)網(wǎng)絡(luò)來說,當(dāng)采用三層結(jié)構(gòu)時(shí),該模型就能逼近任何形式的曲線,故采用三層結(jié)構(gòu),即輸入層、隱含層和輸出層。
小波神經(jīng)網(wǎng)絡(luò)的連接權(quán)值、尺度因子和平移因子調(diào)整過程分為兩個(gè)步驟:第一個(gè)階段從網(wǎng)絡(luò)的輸入層開始逐層向前計(jì)算,根據(jù)輸入樣本計(jì)算各層的輸出,最終求出網(wǎng)絡(luò)輸出層的輸出,這是前向傳播過程;第二個(gè)階段從網(wǎng)絡(luò)的輸出層向后對權(quán)值進(jìn)行修正,這是反向傳播過程。兩個(gè)過程反復(fù)交替,直到達(dá)到網(wǎng)絡(luò)要求。
學(xué)習(xí)算法的具體實(shí)現(xiàn)步驟如下。
1.參數(shù)初始化
隨機(jī)初始化小波函數(shù)伸縮因子、平移因子及網(wǎng)絡(luò)連接權(quán)重,設(shè)置網(wǎng)絡(luò)權(quán)值學(xué)習(xí)速率,小波參數(shù)的學(xué)習(xí)速率。
2.輸入學(xué)習(xí)樣本,計(jì)算網(wǎng)絡(luò)各層的輸出
輸入樣本Xμ=(x1μ,x2μ,…,xmμ),(μ=1,2,…,p),則隱含層輸出為
hjμ=φ(),j=1,2,…,q(5)
輸出層的輸出為
yμ=f(wjhjμ)(6)
式(5)、(6)中,xiμ為輸入層的第i個(gè)節(jié)點(diǎn)的輸入;hjμ為隱含層第j 個(gè)節(jié)點(diǎn)的輸出值;yμ為網(wǎng)絡(luò)的輸出;φ(·)為Morlet小波。f(·)為Sigmoid函數(shù),即f(x)=1/1+e-x。m為輸入層節(jié)點(diǎn)數(shù);q為隱含層節(jié)點(diǎn)數(shù);輸出層的節(jié)點(diǎn)數(shù)為1。
3.計(jì)算誤差及參數(shù)的調(diào)整量
定義網(wǎng)絡(luò)的全局誤差為
E=(tμ-yμ)2={tμ-f[wjφ(wjixiμ-bj/aj)]}(7)
式(7)中tμ為樣本Xμ的期望輸出,P為樣本總數(shù)。
從式(7)可知,網(wǎng)絡(luò)輸入誤差是各層權(quán)值wji、wj及小波參數(shù)aj、bj的函數(shù),因此調(diào)整權(quán)值可改變誤差E。顯然權(quán)值的原則是使誤差不斷地減少,因此應(yīng)使權(quán)值及參數(shù)的調(diào)整量與誤差的梯度下降成正比,故有
權(quán)值調(diào)整量:Δwji=-η(8)
Δwj=-η(9)
參數(shù)調(diào)整量:Δaj=-γ(10)
Δbj=-γ(11)
4.誤差反向傳播,修改網(wǎng)絡(luò)參數(shù)
對輸入層與隱含層的連接權(quán)值wji,修正公式為
wji(N+1)=wji(N)+Δwji(12)
對隱含層與輸出層的連接權(quán)值wj,修正公式為
wj(N+1)=wj(N)++Δwj(13)
對隱含層小波基函數(shù)的伸縮因子aj,修正公式為
aj(N+1)=aj(N)++Δaj(14)
對隱含層小波基函數(shù)的平移因子bj,修正公式為
bj(N+1)=bj(N)++Δbj(15)
通過網(wǎng)絡(luò)參數(shù)wji、wj、aj、bj的調(diào)整,使得網(wǎng)絡(luò)的全局誤差達(dá)到最低。
三、實(shí)證分析
如圖1,選取2012年1月4日到2012年12月31日期間243個(gè)交易日滬深300指數(shù)收盤價(jià)作為原始序列作為實(shí)驗(yàn)研究對象。。
(一)數(shù)據(jù)預(yù)處理
由于滬深300指數(shù)收盤價(jià)數(shù)據(jù)受到市場多種因素的影響,波動(dòng)范圍較大,為了加快神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速度、提高預(yù)測精度,必須在網(wǎng)絡(luò)訓(xùn)練之前對數(shù)據(jù)進(jìn)行預(yù)處理。
通常情況下,數(shù)據(jù)處理就是將原始數(shù)據(jù)進(jìn)行歸一化處理,即通過一定的線性變換將輸入數(shù)據(jù)限制在 [-1,1]區(qū)間內(nèi)。
歸一化的數(shù)學(xué)表達(dá)式是
Pn=2(P-minP)/(maxP-minP)-1(16)
其中,P為原始輸入數(shù)據(jù),max P和min P分別是P中最大值和最小值。Pn為歸一后的目標(biāo)數(shù)據(jù)。
(二)小波神經(jīng)網(wǎng)絡(luò)模型的設(shè)計(jì)
1.網(wǎng)絡(luò)層數(shù)的設(shè)計(jì)
根據(jù)Kosmogorow定理可知,在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)合理和神經(jīng)節(jié)點(diǎn)權(quán)值恰當(dāng)?shù)臈l件下,三層神經(jīng)網(wǎng)絡(luò)可以逼近任何連續(xù)函數(shù)。因此,本實(shí)驗(yàn)選取含單一隱含層的三層小波網(wǎng)絡(luò)。
2.輸入層和輸出層神經(jīng)節(jié)點(diǎn)的設(shè)計(jì)
由于實(shí)驗(yàn)只使用收盤價(jià)這一單一變量作為原始數(shù)據(jù),本文選擇網(wǎng)絡(luò)輸入的交易天數(shù)是一周(5個(gè)交易日),即用5天的數(shù)據(jù)作為BP神經(jīng)網(wǎng)絡(luò)的一個(gè)輸入數(shù)值,其后一天的數(shù)據(jù)作為網(wǎng)絡(luò)的目標(biāo)數(shù)據(jù),按此方式進(jìn)行滾動(dòng)式排列,形成實(shí)驗(yàn)中的輸入樣本(共238個(gè))。因此,我們將實(shí)驗(yàn)中的輸入層節(jié)點(diǎn)設(shè)為5,輸出節(jié)點(diǎn)數(shù)設(shè)為1。
3.隱含層小波函數(shù)及輸出層傳遞函數(shù)的設(shè)計(jì)
隱含層使用常用的小波函數(shù)Morlet。由于本文所使用的原始數(shù)據(jù)都經(jīng)過歸一化處理,輸入、輸出向量均在區(qū)間[-1,1]范圍內(nèi),符合S型對數(shù)函數(shù)對于數(shù)值取值區(qū)間的要求。因此,實(shí)驗(yàn)中采用了輸出層傳遞函數(shù)logsig。
4.隱含層神經(jīng)節(jié)點(diǎn)的設(shè)計(jì)
通用的隱含層神經(jīng)元數(shù)的確定經(jīng)驗(yàn)公式為
l=+a(17)