楊 培,姚宏亮
(1.淮北職業(yè)技術學院 計算機系,安徽 淮北 235000;2.合肥工業(yè)大學,安徽 合肥 230009)
股票預測是指對股市具有深刻了解的證券分析人員根據(jù)股票行情的發(fā)展進行的對未來股市發(fā)展方向以及漲跌程度的預測行為。這種預測行為只是基于假定的因素為既定的前提條件為基礎的。
但是在股票市場中,行情的變化與國家的宏觀經濟發(fā)展,法律法規(guī)的制定,公司的運營,股民的信心等等都有關聯(lián)。因此所謂之預測難于準確預計。證券分析師的預測也只能作為股民入市操作的一般參考意見。[1]
支持向量機是美國著名學者Corinna Cortes以及Vapnik8在1995年共同提出的。支持向量機的主要優(yōu)勢體現(xiàn)在解決小樣本、非線性數(shù)據(jù)以及高維模式識別方面。除此之外,支持向量機還有一個優(yōu)點就是其比較適合推廣,可以將其應用到其他各個方面比如說數(shù)據(jù)的擬合度分析。[2]
事實上,所謂的小樣本并不是我們所想的那樣樣本的絕對數(shù)量少,它只不過是相對于問題的復雜度來說,支持向量機算法所需要的樣本數(shù)并不多。非線性主要是指支持向量機算法能夠對那些數(shù)據(jù)線性不明顯的情況進行處理,主要方法是通過松弛變量以及核函數(shù)技術來完成。高維模式識別主要是因為需要處理的樣本維數(shù)相對于其它樣本來說非常高,在這種情況下,支持向量機同樣都能進行處理。支持向量機之所以能夠用于高維模式識別,是因為它所產生的分類器相對來說更加簡潔,需要借助的相比信息相對來說就更少,因此,就算維數(shù)很高,其在存儲以及計算過程中都不會有大的困難。
支持向量機方法是建立在一定的理論基礎之上的,主要有兩個理論來對其進行支持,第一個是統(tǒng)計學習理論;第二個是VC維理論。除此之外,其還結合了結構風險最小原理,以期獲得最好的推廣能力。[3]
VC維如果作最簡單的解釋,它的意思就是用來描述問題的難易程度,如果這個指標越大,也就越說明這個問題比較難;如果VC維越低,那就說明這個問題越簡單。由于支持向量機注重的僅僅是VC維,因此,當支持向量機解決問題的時候,并不會去考慮樣本的維數(shù)。例如,上萬維的樣本它可以解決,如此一來,支持向量機可以用于解決文本分類類似的問題。
為了保證該算法預測分析的有效性,從大智慧軟件上下載了2014年1月份到5月份的上證指數(shù)和深證成指的開盤數(shù)作為這次預測的金融時序數(shù)據(jù)。
有效的預測大盤指數(shù)可以為整體上觀測股市變化提供強有力的信息,因此預測大盤指數(shù)對于上證指數(shù)預測很有意義,通過對今年1月份到5月份的每日上證指數(shù)和深證成指的開盤指數(shù)進行回歸分析,擬合的結果如下:上證指數(shù)均方誤差 MSE=0.000698138相關系數(shù) R=96.4776%;深證成指均方誤差 MSE=0.000897312相關系數(shù)R=95.886%。由此可以看出,SVM的擬合結果還是比較準確的,并且對上證指數(shù)的擬合更加精準。
把一組數(shù)據(jù)存儲在shangzhengdata.mat文件中,數(shù)據(jù)是一個100*6的double型的矩陣,記錄的是從2014年1月到2014年5月的100個交易日的每日上證綜合指數(shù)的各種指標,6列分別表示開盤指數(shù),指數(shù)最高值,指數(shù)最低值,收盤指數(shù),當日交易量,當日交易額。
把另外的一組數(shù)據(jù)存儲在shenzheng.mat文件中,數(shù)據(jù)依然用一個100*6的double型矩陣記錄,時間同上,6列分別表示深證成指的開盤指數(shù),指數(shù)最高值,指數(shù)最低值,收盤指數(shù),當日交易量和當日交易額。
模型目的:利用SVM建立回歸模型,然后對上證指數(shù)的每日開盤指數(shù)進行回歸擬合。
模型假設:假設上證指數(shù)和深證成指每日的開盤指數(shù)和前一天的開盤指數(shù),最高值,最低值,收盤數(shù),交易量,交易額相關,也就是把前一天的開盤指數(shù),最高值,最低值,收盤數(shù),交易量,交易額作為當天開盤指數(shù)的自變量,當天的開盤指數(shù)作為因變量。
選取第一個到第99個交易日內每日的開盤指數(shù),最高值,最低值,收盤指數(shù),交易量,交易額作為自變量,選取第二個到第100個交易日內每日的開盤指數(shù)作為因變量。
Matlab實現(xiàn)代碼如下:
% 載入測試數(shù)據(jù)上證指數(shù)
% 數(shù)據(jù)是一個100*6的double型的矩陣,每一行表示每一天的上證指數(shù)
%6列分別表示當天上證指數(shù)的開盤指數(shù),指數(shù)最高值,指數(shù)最低值,收盤指數(shù),當日交易量,當日交易額.
% 提取數(shù)據(jù)
深證成指的數(shù)據(jù)提取方法與此類似。
在數(shù)據(jù)的預處理之前,先說明預處理的必要性,這里的預處理就是將數(shù)據(jù)進行歸一化處理。
歸一化后進行交叉驗證選擇最佳回歸參數(shù)松弛變量c和核函數(shù)值g。對libsvm工具包中的SVMcg-ForClass.m稍微修改就可以用來尋找回歸的最佳參數(shù)c和g,由SVMcgForRegress.m實現(xiàn),可以精確的選取c和g的最佳值。
在獲取到最為合適的c和g的值后,可以用這兩個參數(shù)值對SVM進行訓練。訓練完成之后,再對最初輸入的數(shù)據(jù)做回歸預測。利用svmpredict函數(shù)即可進行回歸預測:
得到的預測結果和實際結果的對比如圖1所示。紅色代表回歸預測結果,藍色代表原始數(shù)據(jù)。
圖2預測結果和實際結果之差除以實際結果所得的相對誤差率圖。由圖可見,相對誤差量大部分在百分之十五以內。誤差結果很小,說明這種方法精度很高。
圖1
圖2
本文算法是根據(jù)上一個交易日的所有數(shù)據(jù)特征值作為自變量,預測出下一個交易日的周線,這個算法預測的準確率相對較高,因為它考慮到了上一個交易日的數(shù)據(jù),但是也有一定局限性,因為每一個特征值對于因變量的影響程度是不一樣的,因此下一步可以把不同的特征給予不同的權值,即用特征加權支持向量機去進行股票走勢的預測,這里給不同的特征給予不同的權值以及給予權值之后怎樣導入支持向量機將是我下一步工作的重點,相信考慮特征加權這個因素之后,預測的準確率會進一步提高的。
[1]鄧華麗,李修全.基于混沌時間序列分析的股票價格拐點預測方法[J].統(tǒng)計與決策,2007(9).
[2]彭麗芳,孟志青,姜華,田密.基于時間序列的支持向量機在股票預測中的應用[J].計算技術與自動化,2006(3).
[3]王巍,趙宏,梁朝暉,馬濤.基于EMD和SVR的混合智能預測模型及實證研究[J].計算機工程與應用,2012(4).