劉洋
摘 要:本文利用BP網絡對數據的壓縮性和非線性映射功能,模擬股指期貨合約的各項數據之間的關系,建立起一個基于神經網絡的股指期貨合約結算價格預測系統(tǒng)。用交易數據進行網絡訓練,生成網絡后,用另外的數據對生成的網絡進行驗證,驗證發(fā)現該網絡的預測精度較高,具備一定的應用價值。
關鍵詞:BP算法;人工神經網絡;股指期貨
1.引言
股市投資是我們日常生活中一種十分普及的,具備高風險高收益特性的投資方式。2010年4月,滬深300股指期貨經過證監(jiān)會的審核,開始在我國發(fā)行。股指期貨的推出革命性地改變股票市場的游戲規(guī)則,將期貨與股票結合,使市場參與者在股市下跌的時候可以做空獲利。
隨著神經網絡算法的研究深入發(fā)展,人們逐步將神經網絡應用于經濟領域,比如金融實際交易分析中。本文使用matlab工具箱中的BP算法,建立一個具有平滑學習函數的神經網絡,做出一個可以合理響應輸入的數據訓練模型,以便對股指期貨合約的短期價格進行檢驗以及預測判斷。
2.BP神經網絡
2.1 BP神經網絡的構成
神經網絡在很大程度上仿照人腦神經系統(tǒng)的信息處理、存貯及檢索功能,因而人工神經網絡的主要功能具備學習功能、記憶功能、計算功能以及各式智能處理功能。人工神經網絡是人類大腦的一個抽象概念,是一個由大量的神經元互相連接并且用它的各連接的權重值的分布向量來表示特定知識概念而組成的一種較為復雜的網絡。
人工神經網絡的模型相當多,一般在matlab建立模型時用得最多,相對于其他工具箱工具來說應用的最為廣泛的是BP(Back-propagation)神經網絡。標準的BP網絡由三層神經元組成,分別是輸入層、隱含層、輸出層,數據在不同層級間傳遞,都涉及到一定的權重因子。
2.2 BP網絡和BP算法的特點
BP網絡的輸入和輸出是并行的兩個模擬量,網絡的輸入輸出關系由鏈接各層的權重因子決定,不需固定的算法,權重因子通過學習信號來調節(jié)。學習越多,隱含層就越多,輸出層的精度就越高,其中個別權重因子的損壞不會對網絡輸出產生大的影響。
BP算法是由兩部分組成,分別是信息的正向傳遞和誤差的反向傳播。在正向傳遞的過程中,因為輸入信息是逐層傳遞的,每一層神經元的狀態(tài)只能影響到下一層神經元的狀態(tài),如果在輸出層未得到期望的輸出,則計算輸出層的誤差變化值,然后開始反向傳播,通過網絡將誤差信號沿原來的連接通路反傳回來,修改各層神經元之間的權重因子,再次進行信息的正向傳遞,反復運行直至達到期望目標。
3.BP神經網絡在期貨合約價格預測中的應用
3.1輸入層的節(jié)點的確定
在matlab中編程的時候,首先考慮輸入層的參數選取。對于股指期貨合約價格的變動,從宏觀方面來考慮我們可以認為它受以下因素的影響。
a.宏觀經濟狀況:一些能反映經濟運行狀況的經濟指標,比如GDP、PPI、CPI,恩格爾系數等;b.宏觀經濟政策:政府的一些貨幣政策和財政政策,比如降息,降準,減稅,社保改革等;c.與標的物相關的各種信息:比如某些標的指數中的一些權重較大的成份股進行定增融資、派息轉送等;d.國際金融市場走勢:比如國際匯率,石油,黃金等價格波動走勢;e.到期時間長短:股指期貨合約有到期日,合約期限的不同會影響到合約價格的波動變化 。
從數據指標方面來考慮,最常接觸到的就是滬深300股指期貨合約每日的開盤價、收盤價、最低價、最高價、交易量、總交易金額等等數據。這6個方面的數據是精確化的歷史性數據,可以直接用于算法里面的數據訓練。因而,在輸入層的選擇上,本文取這6組數據作為節(jié)點,即輸入層的節(jié)點數為6。
3.2隱含層節(jié)點,輸出節(jié)點的確立
在這里,出于簡便考慮,只選擇一層隱含層。這里只預測第二天的股指期貨的結算價,因而輸出節(jié)點,可以看作是1。由此可看出建立的本BP網絡的一個特點,那就是多元輸入,單項輸出。
3.3數據選取
由于需要將數據作為多種用途使用,有的用于學習訓練,有的用于測試輸入,因而樣本容量必須足夠大。滬深300股指期貨,從2010年4月推出起,已經運行了接近5年時間,有上千天的交易數據。本文擬選取一個整年,用這一年的交易日數據,來建立模型。
這里通過互聯(lián)網,從新浪財經網站上查詢到2014年3月1日至2015年2月28日的滬深300股指期貨合約相關交易數據。這一年中,有243個有效交易日。其中,選取前233組數據,進行神經網絡的訓練,選取后10組,作為測試輸入和對照。
4.利用MATLAB建立預測模型
將收盤價作為Y變量,因為這是模型預測和對照的數據組。將其他五個參數的數據作為X變量。X變量是一個243*5的矩陣,Y變量是一個243*1的矩陣。由于X變量中的前三列與后兩列的數據相差巨大,可以在系統(tǒng)設置中,將數據改成長數據形式?,F在用MATLAB建立BP神經網絡模型,進行運算和對比檢測。首先,對X和Y進行賦值,然后運行以下命令。
>> temp = randperm(size(x,1));
K_train = x(temp(1:233),:);
L_train = y(temp(1:233),:);
K_test = x(temp(234:end),:);
L_test = y(temp(234:end),:);
N = size(K_test,2);
net = newff(K_train,L_train,9);
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;
net = train(net,K_train,L_train);
L_sim_bp = sim(net,K_test);
figure
plot(1:N,K_test,b:*,1:N,L_sim_bp,r-o)
>> xlabel(檢驗樣本)
ylabel(滬深300股指收盤價)
經過運行之后,MATLAB即顯示出BP預測值與真實值(以*為標記)的對比圖??煽闯鯞P神經網絡所預測的收盤價與真實收盤價的吻合度較高,兩者的變化曲線基本重合。
5.結論
通過matlab編程,結合實際數據,可以發(fā)現訓練出來的神經網絡在實際預測中達到了所預想的精度要求,在上述輸入測試值中,代碼運行結果比較令人滿意。
我們將技術分析引入到期貨合約結算價格的預測中去,用文中所述的訓練編制的神經網絡進行預測,對于短期合約價格的預測在一般情況下還是具有不錯的精度和合理的誤差的。
可以認為網絡的預測有效程度主要取決于一下兩方面。
(1)針對股指期貨交易市場,在建立模型時,考慮到越多的相關影響因素,網絡的實際運用可行性會更強。(2)股指期貨交易市場,其完善程度和網絡預測精度有著一定的正想關性,市場越完備,其效果越好。在實際情況中,如果市場不夠成熟,可能會造成預測的實用性不夠顯著。
在重復運行的時候,本文發(fā)現了一個問題,就是該模型對于源代碼中固定的那個輸入測試值的預測是在不斷變動的,且與真實值之間的誤差大小也是在不斷改變的,這與模型變量的選擇和模型算法有一定的關系。
本文核心在于將神經網絡算法和期貨合約歷史數據結合起來,提出了這樣一種思想來預測期貨合約價格,對于在短期做空做多決策方面是有著一定參考作用,如果今后在這方面的探索中繼續(xù)進行改進,尤其是變量的選取和算法的改進,將更能提高其預測值的實用價值。(作者單位:華東交通大學經管學院)