韋增欣 萬騰飛
摘要:本文針對股票市場這一非線性系統(tǒng),利用人工神經(jīng)網(wǎng)絡(luò)的方法來對股票進行時間序列預(yù)測。采用BP神經(jīng)網(wǎng)絡(luò),將歷史時間序列數(shù)據(jù)作為參考依據(jù),預(yù)測未來短期內(nèi)的股票價格;并在此基礎(chǔ)上,與實際的股票價格進行對比分析,并得出結(jié)論。對于股票市場內(nèi)的投資者具有一定的理論意義和實踐價值。
關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò);股票;預(yù)測
1.引言
由于股價的非線性特性,股票市場投資者商業(yè)行為的復(fù)雜性和對未來事件的影響能力,以及我國股市具有明顯的政策性等因素,都極大的增加了我們預(yù)測股價的難度。
神經(jīng)網(wǎng)絡(luò)是一種大規(guī)模并行的復(fù)雜非線性動力系統(tǒng),一些復(fù)雜的非線性模型系統(tǒng)都可以借助神經(jīng)網(wǎng)絡(luò)表現(xiàn)出來,其特點是處理機制高度并行、運算能力高速、拓撲結(jié)構(gòu)高度靈活、非線性運算能力高速和極強的自學(xué)習(xí)自組織能力。預(yù)測科學(xué)研究領(lǐng)域已經(jīng)開始重視這一方法的應(yīng)用。
始于上世紀(jì)90年代的人工智能,迄今為止已經(jīng)取得了極大的發(fā)展,并在在諸多領(lǐng)域都有了廣泛的運用。金融領(lǐng)域也不例外,很多領(lǐng)域內(nèi)的專家學(xué)者都已經(jīng)開展了神經(jīng)網(wǎng)絡(luò)的研究工作。
1990年,Kimoto.Asakawa,Yoda and Takeoka[1]等人開發(fā)了Tokyo stock exchange Price index預(yù)測系統(tǒng),應(yīng)用modularNN系統(tǒng)研究了各種市場因素之間的聯(lián)系,同年Kamijo[2]應(yīng)用recurrentNN進行了股票市場預(yù)測。2001年,Hamid等[3]預(yù)測了德黑蘭的股票指數(shù);Dr.Matthias Schurmann等人[4]就傳統(tǒng)數(shù)理統(tǒng)計方法和神經(jīng)網(wǎng)絡(luò)在股票預(yù)測研究領(lǐng)域中的應(yīng)用作了比較研究。國內(nèi)李敏強等人[5]采用遺傳算法對股市投資策略作了相關(guān)研究。但是受到股票市場噪聲多且不穩(wěn)定等原因的影響,上述預(yù)測的效果可以說實際上并不理想。
本文想通過選取合適的激活函數(shù)和訓(xùn)練函數(shù),以及其他參數(shù)值與股票標(biāo)的,使預(yù)測的誤差盡可能地小,對股票市場投資者具有理論意義及實踐價值。
2.BP算法
(1)選定初始權(quán)值;
(2)重復(fù)以下過程直到收斂:
(對k=1到N
正向傳播過程計算:計算每層各單元的Om-1jk,netmjk和k,k=2,…,N
反向傳播過程計算:對各層(m=L-1到2),對每層各單元,計算δmjk
(修正權(quán)值
2.1BP算法的改進
標(biāo)準(zhǔn)的BP算法在作權(quán)值調(diào)整時,調(diào)整方向的依據(jù)是t時刻誤差的梯度下降方向,并未將t時刻以前的梯度方向納入考慮,因此導(dǎo)致訓(xùn)練過程經(jīng)常產(chǎn)生震蕩,收斂緩慢。為了達到神經(jīng)網(wǎng)絡(luò)訓(xùn)練速度提升的目的,可以將一個動量項增加到權(quán)值調(diào)整公式中[6]。以輸出層為例,式(2.1)可調(diào)整為:
由上述式子可知,動量項的增加就是在本次權(quán)值調(diào)整量中疊加取自上一次權(quán)值調(diào)整量中的一部分,動量因子為α,動量項是以前積累的調(diào)整經(jīng)驗的反映,對于t時刻的調(diào)整所起的作用是阻礙。當(dāng)驟然起伏發(fā)生在誤差曲面的時刻,可以使震蕩趨勢減弱,訓(xùn)練速度得以提升。
3.BP神經(jīng)網(wǎng)絡(luò)進行股票預(yù)測的原理
通過學(xué)習(xí)歷史數(shù)據(jù),BP神經(jīng)網(wǎng)絡(luò)能夠?qū)⒐善眱r格變化趨勢之間的非線性關(guān)系找出來,并在網(wǎng)絡(luò)具體的權(quán)值中將其存放,然后預(yù)測未來股價的走勢。
對于m個輸入學(xué)習(xí)樣本:X1,X2,…,Xm,已知與其對應(yīng)的目標(biāo)樣本為:T1,T2,…,Tm。學(xué)習(xí)的目的是用網(wǎng)絡(luò)的實際輸出Y1,Y2,…,Ym與目標(biāo)矢量T1,T2,…,Tm之間的誤差來修改其權(quán)值,使Yi(i=1,2,…,m)盡可能地接近期望的T,達到最小化網(wǎng)絡(luò)輸出層的誤差平方和的目的。通過連續(xù)不斷地在相對于誤差函數(shù)斜率下降的方向上計算網(wǎng)絡(luò)權(quán)值和偏差的變化而逐漸逼近目標(biāo)的。每一次權(quán)值和偏差的變化與網(wǎng)絡(luò)誤差的影響成正相關(guān),并以反向傳播的方式向每一層傳遞。
在時間序列預(yù)測中,網(wǎng)絡(luò)成為輸入輸出的非線性函數(shù)。記時間序列為Xi,由于單步預(yù)測數(shù)據(jù)量太少,為了使實預(yù)測更加精確,使用更多數(shù)據(jù)來預(yù)測,需要將時間序列矩陣化,設(shè)輸入層與輸出層神經(jīng)元為m個,則輸入數(shù)據(jù)為:
時間序列預(yù)測可用下式表述:
時間序列預(yù)測方法就是用神經(jīng)網(wǎng)絡(luò)來擬合函數(shù)g,然后預(yù)測未來值。理論上已經(jīng)證明,三層前饋式神經(jīng)網(wǎng)絡(luò)的能力是可以逼近任意復(fù)雜連續(xù)函數(shù)關(guān)系,其他的方法卻不具備這一能力,因此對時間序列的預(yù)測采用三層BP神經(jīng)網(wǎng)絡(luò)可以說是非常適合方式。在實際的使用中,任何針對所分析的時間序列做的假設(shè)都是不必要的,該時間序列的擬合只需要采用一個神經(jīng)網(wǎng)絡(luò)就行。
4.實例分析
4.1固定訓(xùn)練樣本數(shù)量的預(yù)測
(1)選取訓(xùn)練樣本數(shù)據(jù),構(gòu)造訓(xùn)練樣本
選取代碼為600048的股票保利地產(chǎn)從2010年6月7日起的收盤價。
二、訓(xùn)練樣本數(shù)據(jù)與測試數(shù)據(jù)的分類
訓(xùn)練樣本數(shù)據(jù)取前600個收盤數(shù)據(jù),而作為神經(jīng)網(wǎng)絡(luò)預(yù)測能力的測試樣本數(shù)據(jù)則取后m個收盤數(shù)據(jù)。
(3)樣本數(shù)據(jù)預(yù)處理
原始的樣本數(shù)據(jù)由于過大,因此在進行神經(jīng)網(wǎng)絡(luò)預(yù)測之前,要做歸一化處理,這樣的做法能夠有效避免網(wǎng)絡(luò)麻痹狀況的出現(xiàn)。
(4)構(gòu)造訓(xùn)練樣本
將600個訓(xùn)練樣本數(shù)據(jù)中前(600-m)個交易日的收盤價作為輸入數(shù)據(jù)并矩陣化,目標(biāo)數(shù)據(jù)是后(600-m)個數(shù)據(jù),將之矩陣化,參照這種方式進行滾動式的排列,這樣神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本就形成了。m選擇過小,從歷史數(shù)據(jù)中得到的信息過少,可能會影響預(yù)測精度,而m選擇過大,會使網(wǎng)絡(luò)在權(quán)值調(diào)整時,每次迭代都要累加前一次k個預(yù)測值的誤差,導(dǎo)致更大的誤差出現(xiàn),這里分別選取m=5,10,15,20來進行預(yù)測。
(5)確定神經(jīng)網(wǎng)絡(luò)的參數(shù)
初始化學(xué)習(xí)速率μ=0.02,動量因子α=0.9,隱層神經(jīng)元個數(shù)為50,validation checks為25,算法采用改進的BP算法。
(6)確定激活函數(shù)與訓(xùn)練函數(shù)
三層的BP神經(jīng)網(wǎng)絡(luò),輸入層到隱層是s型函數(shù),隱層到輸出層是線性激活函數(shù),確定隱層激活函數(shù)為對數(shù)S型激活函數(shù)“l(fā)ogsin”,輸出層激活函數(shù)為線性函數(shù)“purelin”。
以下幾種函數(shù)是MATLAB中神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù):
TRAINLM:Levenberg-Marquardt法
TRAINGD:梯度遞減法
TRAINGDM:帶動量因子的梯度遞減法
TRAINGDA:帶自適應(yīng)學(xué)習(xí)率的梯度遞減法
TRAINGDX:帶自適應(yīng)學(xué)習(xí)率和動量因子的梯度遞減法
我們比較以上的方法,從而做到快速有效地確定訓(xùn)練函數(shù)。設(shè)定最大迭代次數(shù)為2000次,m=10,目標(biāo)收斂精度為0,validation checks為25。評價的指標(biāo)是迭代次數(shù)和收斂精度,預(yù)測擬合分別采用以上算法,得到以下結(jié)果:
(7)分別使用訓(xùn)練樣本數(shù)300和600進行訓(xùn)練網(wǎng)絡(luò),并將預(yù)測結(jié)果反歸一化。
4.1推廣效果檢驗
取最后的m個測試樣本數(shù)據(jù)來檢驗訓(xùn)練好的網(wǎng)絡(luò)的預(yù)測能力。求出輸出值與實際值的均方誤差和平均相對誤差,比較結(jié)果如下:
可以看出,訓(xùn)練樣本增大到600時,對應(yīng)不同m值的預(yù)測結(jié)果的均方誤差基本都增大。選取m=10,訓(xùn)練樣本300時的預(yù)測結(jié)果最接近實際值,此時的均方誤差和平均相對誤差為最小,其中均方誤差為00201,平均相對誤差1894%,由此證明該模型預(yù)測的準(zhǔn)確性較高且具備相應(yīng)的參考價值。所以我們可以看到,基于神經(jīng)網(wǎng)絡(luò)基礎(chǔ)的時間序列預(yù)測模型的預(yù)測能力還是很有效的。表4.4為m=10時的輸出值p與實際值k的比較,其中e為相對誤差。
4.2預(yù)測
選取m=10,訓(xùn)練樣本數(shù)300的神經(jīng)網(wǎng)絡(luò),預(yù)測2011年9月19日至9月30日的股票價格如下圖:
(作者單位:廣西大學(xué)數(shù)學(xué)與信息學(xué)院)
參考文獻:
[1]Kimoto,T&Asakawa K.stock Market Prediction System with Modular Neural Networks.Proceeding of the International Joint Conference on Neural Network.1990,1:1-6
[2]Kamijo K&Tanigawa T.Stock Price Pattern Recognition:A Recurrent Network Approach.Proceeding of the International Joint Conference on Neural Network.1990,1:215-222
[3]Hamid Khaloozadeh,Ali Khaki Sedigh.Long term prediction of Tehran pric index using neural networks.European journal of operation research,1998,563-567
[4]Prof.Dr.Matthias Schurmann,DipL-Kfm,Thomads Lohrbach.Comparing artificial neural networks with statistical methods within the field of stock market prediction.[J]Neural Computing and Applications,2000,3:597-605.
[5]李敏強,張俊峰,寇紀(jì)淞.遺傳算法在股市投資策略研究中的應(yīng)用[J].系統(tǒng)工程理論與實踐,1998,8:19-25.
[6]袁曾任.人工神經(jīng)元網(wǎng)絡(luò)及其應(yīng)用[M].清華大學(xué)出版社.1999:66-70,78-79.