楊靜凌, 唐國強(qiáng), 張建文
(桂林理工大學(xué) 理學(xué)院,廣西 桂林 541006)
股票價(jià)格預(yù)測一直受社會(huì)各界人士的關(guān)注,然而股票價(jià)格具有高度非正態(tài)、非線性和非平穩(wěn)性等復(fù)雜特征,且受政治變數(shù)、社會(huì)環(huán)境、公司決策、投資者心理等諸多因素的影響,使股票價(jià)格預(yù)測面臨巨大的挑戰(zhàn)。
股票價(jià)格預(yù)測方法主要為:統(tǒng)計(jì)模型、人工智能模型、組合模型等方法。常用的統(tǒng)計(jì)模型有自回歸移動(dòng)平均(ARIMA)、廣義自回歸條件異方差(GARCH)等。這些模型計(jì)算量小、過程簡單,但是通常忽略股票價(jià)格的非線性、非平穩(wěn)等特征,對數(shù)據(jù)的分布有較高的要求。人工智能模型對數(shù)據(jù)表現(xiàn)出強(qiáng)大的自學(xué)習(xí)、自適應(yīng)、非線性映射能力,對股票價(jià)格的復(fù)雜特征有較好的跟隨能力。目前,已有許多研究利用人工智能對股票價(jià)格進(jìn)行預(yù)測[1~4]。因單一模型無法刻畫股票價(jià)格的多重特征,有學(xué)者嘗試用組合模型來分析股票數(shù)據(jù)的走勢,并取得較好的預(yù)測效果[5~8]。然而一般的組合模型對股票數(shù)據(jù)的刻畫無法滿足人們對股票預(yù)測精度的高要求。為此,一些學(xué)者提出經(jīng)驗(yàn)?zāi)B(tài)分解(EMD)結(jié)合人工智能對股票數(shù)據(jù)進(jìn)行預(yù)測,進(jìn)一步提高了股票數(shù)據(jù)的預(yù)測精度。王文波等[9]將EMD與神經(jīng)網(wǎng)絡(luò)相結(jié)合,再利用混沌分析去除時(shí)間序列的混沌性,有效預(yù)測股票收盤價(jià)。賀毅岳等[10]提出基于EMD利用ε不敏感支持向量建立預(yù)測模型(EMD-SVRF)對上證指數(shù)進(jìn)行預(yù)測。吳曼曼等[11]將EMD結(jié)合改進(jìn)的Elman神經(jīng)網(wǎng)絡(luò)對上證指數(shù)和深證成指進(jìn)行短期預(yù)測。
綜合以上研究,發(fā)現(xiàn)EMD和人工智能結(jié)合可以有效地處理股票價(jià)格非正態(tài)、非線性、非平穩(wěn)性等特征。但還存在以下不足:(1)EMD存在模態(tài)混疊的缺陷,影響預(yù)測效果;(2)所用人工智能模型較簡單,預(yù)測精度不夠高;(3)前人研究大多基于某國的股票數(shù)據(jù)進(jìn)行預(yù)測,不能有效驗(yàn)證模型的普及性。為此,本文提出以Elman神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),引入EEMD與Adaboost算法的組合模型對中美兩國的股票日收盤價(jià)進(jìn)行預(yù)測。
2004年,Wu和Huang[12]提出了集合經(jīng)驗(yàn)?zāi)B(tài)分解(EEMD),有效解決了EMD方法出現(xiàn)的模態(tài)混疊問題。EEMD的分解過程如下:
步驟1在原始數(shù)列y(t)中加入白噪聲序列n(t),得到新的序列,記為s(t)。即:
S(t)=y(t)+n(t)
(1)
步驟2對S(t)用3次樣條插值來分別確定其上下包絡(luò)線序列,然后計(jì)算得到上下包絡(luò)線的均值m1(t),序列S(t)-m1(t)得到剩余分量h1(t):
h1(t)=S(t)-m1(t)
(2)
步驟3對新的時(shí)間序列h1(t)重復(fù)(1)、(2)步驟,直到h1(t)滿足EMD的兩個(gè)條件:(1)局部極值點(diǎn)和過零點(diǎn)的數(shù)目相等或相差一個(gè);(2)局部最大值的包絡(luò)和局部最小值的包絡(luò)平均值在任意時(shí)刻均為0。
此時(shí),h1(t)為原始數(shù)列y(t)的第一個(gè)分量IMF1(t)=h1(t),殘差分量為:
Res1(t)=y(t)-IMF1(t)
(3)
步驟4將Res1(t)定義為新的原始序列,重復(fù)步驟1~3,每次添加不同的白噪聲序列,得到第二IMF個(gè)分量,如此循環(huán)反復(fù),直到殘差序列Res(t)為單調(diào)函數(shù),則可以得到多個(gè)IMF分量和一個(gè)殘差分量。
步驟5將各分量進(jìn)行集合平均,以消除多次加入白噪聲對分量的影響。得到的本征模態(tài)分量表達(dá)式為:
(4)
殘差分量表達(dá)式為:
(5)
此時(shí)股票收盤價(jià)可被表示為:
(6)
其中J為IMF分量的個(gè)數(shù)。
1990年,Elman提出了Elman神經(jīng)網(wǎng)絡(luò),其具有時(shí)變特性,能直接動(dòng)態(tài)反映數(shù)據(jù)特征,Elman網(wǎng)絡(luò)分為四層,分別為輸入層、隱含層、承接層和輸出層[13]。其結(jié)構(gòu)如圖1所示。
圖1 Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
Elman神經(jīng)網(wǎng)絡(luò)的非線性狀態(tài)空間表達(dá)式為:
y(k)=g(w3x(k))
(7)
x(k)=f(w1xc(k)+w2(u(k-1)))
(8)
xc(k)=x(k-1)
(9)
其中,y、x、u、xc分別代表m維輸出結(jié)點(diǎn)向量、n維隱含層結(jié)點(diǎn)單元向量、r維輸入向量、n維反饋狀態(tài)向量;w3、w2、w1分別代表隱含層到輸出層、輸入層到隱含層、承接層到隱含層的連接權(quán)重;g(·)為輸出神經(jīng)元的傳遞函數(shù),f(·)為隱含層神經(jīng)元的傳遞函數(shù)。
Adaboost是一種迭代算法,可以提高任意給定學(xué)習(xí)算法的精度,不僅可以應(yīng)用于預(yù)測問題,也可以應(yīng)用于分類問題。其核心思想是對同一個(gè)訓(xùn)練樣本訓(xùn)練不同的預(yù)測器(弱預(yù)測器),然后把這些弱預(yù)測器集合起來,構(gòu)成一個(gè)更強(qiáng)的預(yù)測器(強(qiáng)預(yù)測器)[14]。本文Adaboost算法在Elman-Adaboost組合中發(fā)揮作用,以Elman神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),通過Adaboost算法將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器,對Elman神經(jīng)網(wǎng)絡(luò)的樣本輸出進(jìn)行反復(fù)訓(xùn)練,通過Adaboost算法得到由多個(gè)Elman神經(jīng)網(wǎng)絡(luò)弱預(yù)測器組成的強(qiáng)預(yù)測器。Adaboost優(yōu)化Elman神經(jīng)網(wǎng)絡(luò)步驟如下:
步驟1數(shù)據(jù)獲取及網(wǎng)絡(luò)初始化。從樣本經(jīng)EEMD分解出的每個(gè)分量中隨機(jī)選取m組訓(xùn)練數(shù)據(jù),初始化測試數(shù)據(jù)分布權(quán)值Dt(i)=1/m,根據(jù)樣本輸入輸出維數(shù)確定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),初始化Elman神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值。
步驟2Elman弱預(yù)測器預(yù)測。在訓(xùn)練第t個(gè)弱預(yù)測器時(shí),使用Elman神經(jīng)網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,得到預(yù)測序列g(shù)(t)的預(yù)測誤差et:
(10)
步驟3計(jì)算預(yù)測序列權(quán)重。依據(jù)預(yù)測序列f(t)的預(yù)測誤差et計(jì)算序列的權(quán)重at:
(11)
步驟4測試數(shù)據(jù)權(quán)重調(diào)整。依據(jù)預(yù)測序列權(quán)重at調(diào)整新訓(xùn)練樣本的權(quán)重,調(diào)整公式為:
(12)
其中,Bt是歸一化因子。
步驟5輸出樣本序列各分量的強(qiáng)預(yù)測器函數(shù)。經(jīng)過T次迭代運(yùn)算后得到T組弱預(yù)測器函數(shù)f(gt,at),由此T組弱預(yù)測器組合得到強(qiáng)預(yù)測器函數(shù)F(x):
(13)
(1)EEMD-Elman-Adaboost組合模型的預(yù)測步驟
步驟1對樣本進(jìn)行EEMD分解,得到多個(gè)IMF分量和1個(gè)殘差分量。
步驟2將分解后的各個(gè)分量分成訓(xùn)練樣本和預(yù)測樣本,并將樣本進(jìn)行歸一化處理。
步驟3根據(jù)序列的特征確定神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù),利用試湊法,根據(jù)網(wǎng)絡(luò)誤差選出每一分量的最優(yōu)隱含層節(jié)點(diǎn)數(shù),在訓(xùn)練預(yù)測模型時(shí)確定神經(jīng)網(wǎng)絡(luò)的其他重要參數(shù)。
步驟4用Adaboost將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器反復(fù)訓(xùn)練組成強(qiáng)預(yù)測器,優(yōu)化Elman神經(jīng)網(wǎng)絡(luò)系統(tǒng),對訓(xùn)練樣本進(jìn)行訓(xùn)練得到預(yù)測模型,再將預(yù)測樣本放入預(yù)測模型進(jìn)行預(yù)測。
步驟5將以上步驟各個(gè)分量的預(yù)測結(jié)果進(jìn)行反歸一化后再求和,作為最終的預(yù)測結(jié)果。
預(yù)測流程如圖2所示:
圖2 EEMD-Elman-Adaboost預(yù)測流程圖
(2)重要參數(shù)的設(shè)定
在EEMD過程中,白噪聲標(biāo)準(zhǔn)差為0.2,實(shí)現(xiàn)次數(shù)為500。在建立Elman網(wǎng)絡(luò)弱預(yù)測器的過程中,弱預(yù)測器設(shè)為10個(gè),Elman神經(jīng)網(wǎng)絡(luò)以tangsig為傳遞函數(shù),traingdx為訓(xùn)練函數(shù),最大迭代次數(shù)為3000,誤差容限為0.00001,最多失敗次數(shù)為5。在Adaboost算法將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器訓(xùn)練強(qiáng)預(yù)測器時(shí),測試誤差超過0.1的樣本作為應(yīng)加強(qiáng)學(xué)習(xí)的樣本。神經(jīng)網(wǎng)絡(luò)為單層的隱含層和輸出層。根據(jù)陳健[15]和孫冰潔等[16]的觀點(diǎn)將輸入層節(jié)點(diǎn)數(shù)設(shè)為5,結(jié)合Baily等[17]和Katz[18]的研究結(jié)論,利用試湊法,根據(jù)預(yù)測模型的網(wǎng)絡(luò)誤差選擇隱含層的最優(yōu)節(jié)點(diǎn)數(shù)。
為了有效地檢驗(yàn)?zāi)P偷念A(yù)測效果,本文采用均方根誤差(RMSE)、平均相對誤差(MAPE)、平均絕對誤差(MAE)作為預(yù)測模型的評(píng)價(jià)標(biāo)準(zhǔn)。
(14)
(15)
(16)
其中,RMSE反映預(yù)測值與真實(shí)值之間的偏差,MAPE反映預(yù)測值與真實(shí)值的相差程度,MAE反映預(yù)測誤差的實(shí)際情況,三個(gè)指標(biāo)的數(shù)值越小,說明模型的預(yù)測效果越好。
本文選取2016年1月4日至2019年12月05日中國大陸股票市場上證指數(shù)和深證成指的日收盤價(jià)作為研究對象,并以香港的恒生指數(shù)和美國股票市場的道瓊斯指數(shù)、納斯達(dá)克指數(shù)的日收盤價(jià)為驗(yàn)證對象,數(shù)據(jù)來源于網(wǎng)易財(cái)經(jīng)(https://money.163.com/)。
樣本的基本統(tǒng)計(jì)量如表1所示,走勢如圖3所示。由表1可知,樣本的偏度均不為0,峰度均不為3,不服從正態(tài)分布。ADF的P值均大于0.05,說明樣本均為非平穩(wěn)序列。由圖3可知,樣本隨著時(shí)間的變化而變化,走勢曲線呈現(xiàn)明顯的大波動(dòng)、非線性的趨勢。
綜合表1和圖3,樣本具有非正態(tài)、非線性、非平穩(wěn)的復(fù)雜特征,線性模型和一般組合模型很難對其進(jìn)行有效預(yù)測。因此,本文應(yīng)用EEMD與Adaboost算法改進(jìn)Elman神經(jīng)網(wǎng)絡(luò),對樣本進(jìn)行預(yù)測。
表1 基本統(tǒng)計(jì)量
圖3 樣本走勢圖
對樣本進(jìn)行EEMD分解,均得到8個(gè)IMF分量和1個(gè)殘差分量。分解結(jié)果如圖4所示。由圖4可知,每個(gè)IMF分量的振幅、頻率和周期均不相同,每個(gè)分量都有自身的波動(dòng)特征。IMF分量從上至下的振幅和頻率逐漸變小,周期逐漸變長,殘差項(xiàng)呈現(xiàn)近似線性的趨勢,與樣本的總體走勢一致。
圖4 EEMD分解結(jié)果圖
將分解后各分量歸一化處理,再將處理后各分量的前部分?jǐn)?shù)據(jù)作為訓(xùn)練樣本,訓(xùn)練Elman-Adaboost預(yù)測模型,將后50個(gè)數(shù)據(jù)作為預(yù)測樣本進(jìn)行模型預(yù)測;最后將樣本所有分量的預(yù)測結(jié)果反歸一化,再求和,作為最終預(yù)測結(jié)果。
為了檢驗(yàn)本文預(yù)測模型的優(yōu)越性,將其與現(xiàn)有的BP、Elman、EMD-Elman、EEMD-Elman模型作對比。各模型預(yù)測結(jié)果如圖5所示。由圖5可知,對比模型對樣本預(yù)測的曲線和真實(shí)值的曲線明顯不重合且存在滯后的現(xiàn)象。EEMD-Elman-Adaboost模型的預(yù)測值與真實(shí)值曲線基本重合,說明該模型的跟隨能力更強(qiáng),預(yù)測精度更高。
為了更精確地比較模型的預(yù)測效果,本文以RMSE、MAPE、MAE作為評(píng)價(jià)指標(biāo)對各模型的預(yù)測誤差進(jìn)行量化比較,結(jié)果如表2所示。由表2可知,EEMD-Elman-Adaboost模型的預(yù)測誤差最小,說明其預(yù)測效果優(yōu)于其他模型。Elman能動(dòng)態(tài)反映樣本特征,比BP的預(yù)測效果好。EEMD克服了EMD的缺陷,更有效的分解數(shù)據(jù),提取有效信息。Adaboost算法將Elman弱預(yù)測器組合形成強(qiáng)預(yù)測器,有效地提高了系統(tǒng)的學(xué)習(xí)精度和泛化能力,使EEMD-Elman-Adaboost模型的預(yù)測精度得到有效提升。
圖5 各模型預(yù)測值與真實(shí)值的對比
表2 預(yù)測誤差比較
為了檢驗(yàn)新模型的適用性,選取香港和美國股票指數(shù)的日收盤價(jià)為驗(yàn)證對象。不同模型對驗(yàn)證樣本的預(yù)測誤差如表3所示。由表3知,EEMD-Elman-Adaboost模型比其他模型的預(yù)測誤差更小,新模型應(yīng)用于香港和美國股票市場亦呈現(xiàn)更好的預(yù)測效果,驗(yàn)證了本文模型的適用性。
結(jié)合表2和表3,由于不同股票市場的成熟度、行業(yè)規(guī)模和經(jīng)濟(jì)結(jié)構(gòu)不同,不同預(yù)測方法應(yīng)用于不同股票市場的預(yù)測誤差均有差異。
表3 驗(yàn)證樣本預(yù)測誤差比較
針對股票價(jià)格序列的多重復(fù)雜特征,本文提出EEMD- Elman- Adaboost組合模型,以中國大陸股票指數(shù)的日收盤價(jià)作為研究對象,以香港及美國的股票指數(shù)作為驗(yàn)證對象,進(jìn)行實(shí)證分析。首先,利用EEMD將樣本進(jìn)行分解,得到多個(gè)分量;其次,利用Adaboost算法優(yōu)化Elman神經(jīng)網(wǎng)絡(luò),對各個(gè)分量進(jìn)行預(yù)測;最后,將各個(gè)分量的預(yù)測結(jié)果進(jìn)行求和作為樣本的最終預(yù)測結(jié)果。將EEMD-Elman-Adaboost組合模型和現(xiàn)有的BP、Elman、EMD-Elman、EEMD-Elman模型作比較,通過對比圖和3個(gè)預(yù)測評(píng)價(jià)指標(biāo)對各模型進(jìn)行直觀對比和量化對比,驗(yàn)證新模型的預(yù)測效果。結(jié)果表明:EEMD-Elman-Adaboost組合模型均比對比模型的預(yù)測誤差小,能更有效地預(yù)測中美兩國的股票價(jià)格序列。新組合模型融合了EEMD、Elman神經(jīng)網(wǎng)絡(luò)、Adaboost算法的優(yōu)點(diǎn),具有更強(qiáng)的泛化能力和跟隨能力,預(yù)測精度更高。
由于選擇多方面指標(biāo)對股票價(jià)格進(jìn)行預(yù)測,工作量大,且易受其他因素影響,本文僅利用歷史數(shù)據(jù)進(jìn)行預(yù)測分析。在后續(xù)研究中將嘗試加入多方面指標(biāo)進(jìn)行測試,以進(jìn)一步驗(yàn)證該模型的預(yù)測能力。