陳鐘國
金融時間序列預測是現代時間序列研究中最具挑戰性的課題。金融時間序列是復雜的非線性動態系統,被認為是非平穩的(non-stationary)、確定性混沌的(deterministic chaotic)并且含有大量噪聲[1]。非平穩性說明其分布是時變的;確定性混沌的特性則說明它是短期可預測的;而噪聲高則意味著無法從金融市場過去的行為中獲取完整的信息,以全面揭示歷史價格與未來價格間的依賴關系,模型中不能包含的信息就被視為噪聲。
以人工智能為基礎的預測方法,如人工神經網絡(ANN)、支持向量回歸(SVR)等,屬于非線性的預測模型,符合金融時間序列的特性,逐漸得到人們的重視[2,3,6]。研究[3,5]表明,SVR的預測結果明顯優于ANN。本研究將使用SVR建構金融時間序列預測模型。
SVR的精確性和泛化能力,很大程度上依賴于核心函數及超參數。本研究將采用粒子群優化算法(PSO)來確定超參數及核函數的參數。
由于金融時間序列具有非平穩性等特征,其統計特性可能隨時間而發生變化。單一的SVR模型不能有效地揭示數據的非平穩性,其預測精度容易出現波動。針對這一問題,本研究提出一種混合多個SVR模型的算法,選取訓練數據的不同子集訓練出多個SVR模型,預測時通過對多個SVR模型的預測結果加權求和而得到最終預測結果,各個SVR模型的權重根據其預測精度動態調整。通過選擇合適的子集,并采用合適的權重更新算法,可以盡量保證在某些模型預測精度出現波動時仍能找到預測精度較高的模型,降低因金融時間序列的非平穩性而使預測精度降低的風險。
實驗表明,本文提出的算法,能有效地提高金融時間序列預測的準確性。
SVM是Vapnik等學者在統計學習理論基礎上提出的分類方法,建立在VC維理論和結構風險最小化(SRM)準則基礎上。與ANN相比,SVM具有小樣本學習、泛化能力強等特點,能有效地避免過度學習、局部極小點及“維數災難”等問題。
SVR的主要概念與SVM相同,不同之處在于SVR是以回歸模型表示的。設訓練樣本為{(xi,yi)}(i=1,2,…,n),輸入變量xi∈Rm是一個m維向量,輸出變量y∈R是一個連續值,n為樣本個數。SVR的目標就是構造如下的回歸函數,公式(1)

其中Φ(x)可將輸入變量非線性映射到高維空間,將原本非線性可解的問題轉換成在高維空間線性可解的問題。為確定上式中的系數w、b,可最小化,公式(2)

其中,第一項為經驗風險(誤差),第二項為結構風險(用來預防發生過度學習問題);C為修正系數。經驗風險通過下式的ε-不敏感函數進行計算,公式(3)

該函數定義了一個管狀區域,ε為管狀區域寬度,當預測值落在管狀區域內時損失為零,預測值落在區域外時,其損失相當于預測值與區域邊界的差。
通過引入松弛變量(slack variables)ξ及ξ*,可將上述問題轉化成二次規劃問題,公式(4)

該問題可通過拉格朗日乘子法求解,決策函數(decision function)有如下形式,公式(5)

其中ai和ai*為拉格朗日乘子,滿足aiai*=0,ai≥0,ai*≥0,i=1,…,n,可通過下列最大化對偶函數(dual function)求得,公式(6)

約束條件為:

根據二次規劃問題的Karush-Kuhn-Tucker(KKK)條件,決策函數中僅有特定數量的系數(ai-ai*)非零。這些系數所對應的數據點被稱為支持向量。決策函數只需要這些數據點即可確定。一般而言,ε越大,支持向量的個數越少,解的形式也就越稀疏,但在訓練誤差越大。
K(xi,xj)為核心函數,K(xi,xj)=Φ(xi)*Φ(xj)。
使用核心函數,可以處理任意維度的特征空間,只需在特征空間進行內積運算,不必顯式地將變量映射到高維空間。
任何滿足Mercer條件的函數都可以當作核心函數。典型的核心函數有多項式核心函數、徑向基函數(Radial basis function,RBF)等:

核心函數的選擇至關重要,因為它間接定義了變量所映射到的高維特征空間的結構,從而影響解的復雜程度。RBF函數已被廣泛地應用于基于SVR模型的金融時間序列的預測[2-3]。在本研究中也使用RBF核作為核心函數,因為RBF核能夠實現非線性映射,一般不會出現太大偏差,且僅需調整參數γ。
SVR的泛化能力(預測精度)很大程度上依賴于SVR超參數和核心函數參數的選擇。選定RBF作為核心函數后,需要調整的參數為:修正系數(C)、管狀區域寬度(ε),RBF核的參數(γ)。
(1)交叉驗證法
參數選擇的基本思路是:通過嘗試不同的參數組合,比較其預測精度,選出預測精度最高的參數組合。
交叉驗證法是衡量模型精度的一種常規方法。例如使用10折交叉驗證,就是將訓練數據集分成10份,輪流將其中9份做訓練1份做測試,10次的結果的均值作為對精度的估計。模型的精度通常用均方根誤差(RMSE)進行衡量,RMSE越小,精度越大,公式(7)

其中,n為測試數據的個數,pi為預測輸出,ai為實際輸出。
(2)使用PSO算法確定參數
為了確保SVR模型的預測精度以及減少計算量,本研究采用PSO算法確定上述參數,PSO算法具有流程簡單、容易實現、無需復雜調整的優點,比傳統的網格搜索具有更高性能。
粒子的位置代表一種參數組合(C,ε,γ),使用該參數組合在訓練數據上采用5折交叉驗證法得到RMSE,粒子的適應度的計算公式為(8)

實驗中,SVR參數選擇范圍為:C=[2,1000],ε=[0.001,0.2],γ=[0.0001,2];采用的PSO參數為:c1=1.9,c2=1.9,r1=1.2,r2=1.2,ωstart=0.8,ωend=0.2,tmax=50,粒子個數為20。
使用上述參數運行PSO算法,當達到最大迭代次數或所得解不再變化,就終止迭代。
(3)其他方法
由于本研究需要進行大量實驗(尤其是在研究SVR輸入參數、輸出參數的選擇的時候),為減少實驗時間,還考慮了其他選擇參數組合的方法。
當ε處于合理的范圍之內時,ε的變動對SVR模型的影響不明顯[3],因此在部分實驗中取ε=0.001。
實驗中發現,當γ不變時,C的變動對SVR模型的影響不明顯。為了進一步節省實驗時間,在部分實驗中選擇C=3σy,其中σy為訓練數據集中輸出變量的標準差。
時間序列包含一系列標量數據,因為一般認為時間序列的下一輸出與時間并不直接相關,而與系統狀態有關,所以必須選擇合適的輸入向量,以重構狀態空間。重構狀態空間的方式包括過嵌入法(over-embedding)、特性向量法(feature vector)。
使用過嵌入法[5],必須選擇合適的維度m、時延d,在時刻i,輸入向量為{pi,pi-d,…,pi-(m-1)d},輸出變量為pi+d(pi為時刻i的價格)。對于金融時間序列,目前還沒有系統化的方法可以確定合適維度和時延。常規的方法,如互信息法[5]、偽鄰點法[5],由于金融時間序列噪聲比較高,效果并不理想。
特性向量方法,指的是考慮當前時間點往前的一個時間窗口,將其中的數據壓縮成幾個特性值,作為輸入向量。如果選擇的是合適的特性,輸入向量的維度往往小于過嵌入法。
本研究采用的是特征向量法,特征的選擇參考了文獻[3]的方法。假設選定的輸入向量維度為m,時延為d。在每個時間點j,輸入向量為{RDP1,d,…,RDPm-1,d,EMA15},輸出變量為RDPd:

其中p(j)為時間點j的價格。EMA15的計算方法為:當前價格減去15日EMA(指數移動平均)價格。計算RDPd時必須先求得當前以及d天后的3日EMA價格。用EMA平滑化數據,可以提高模型的預測性能[3]。
對于輸入向量維度和時延的選擇,采用的是窮舉法:嘗試各種維度和時延的組合,使用單一SVR模型的方法進行預測,計算預測誤差。由于這一過程相當耗時,實驗中采用了采用1.3節第3小節中的方法確定C、ε,并將γ的選擇范圍限定為{0.001,0.005,0.01}。
單一SVR模型的主要問題在于不能有效處理非平穩的金融時間序列。某一SVR模型在各個時間段的預測誤差(用NMSE表示),如圖1所示:

圖2 某一SVR模型在各個時間段的預測誤差
從圖1可以看出,同一SVR模型在不同時間段的預測誤差可能出現較大波動,例如在時間段22處預測誤差驟增,這種情況通常表示當前時間段的統計特性發生變化,已經和訓練數據的統計特性不一致。
為了解決單一SVR模型的問題,我們選取訓練數據的不同子集,從中訓練出多個SVR模型,分別用這些模型進行預測,并分析了這些模型在各個時間段的預測誤差,部分模型的預測誤差,如圖2所示:

圖2 多個SVR模型在各個時間段的預測誤差
從圖2中可以看出,雖然存在所有模型的預測誤差同時驟增的情況(如時間段22處),但通常情況下,在某些模型誤差驟增時,其他模型的誤差仍然保持平穩。根據這一規律,為了降低某些SVR模型誤差驟增所造成的影響,本研究提出一種混合多個SVR模型的算法,通過對多個SVR模型的預測結果進行加權求和而得到預測結果,公式(9)

其中,K為模型的個數,fi(x)為模型i的預測結果,wi為模型i的權重,f(x)為最終的預測結果。由于最終的預測結果綜合考慮不同模型的預測結果,在部分模型出現較大偏差時,如果其他模型的預測準確性較高且權重足夠大,就能夠抵消誤差驟增所造成的影響。
各個SVR模型的權重根據其上一輪的預測誤差動態調整:

其中,K為模型的個數,ei為模型i在上一輪的預測誤差(如:預測值與實際值之差的絕對值),為所有模型在上一輪的預測誤差的平均值。容易看出,上一輪預測精度較高的模型權重更高,式中取平方的目的主要是為了進一步增加其權重。由于金融時間序列有短期平穩的特點,多數SVR模型的預測精度在短時間內保持穩定,所以這種更新權重方法能夠提高下一輪的預期預測精度。這里只根據上一輪的預測誤差調整權值,是為了及時降低誤差驟增的模型的權重從而抵消其影響。實驗也證實:如果考慮更早之前的預測誤差,預測精度并沒有得到提高。實驗中還發現,如果只選取權重較高的約25%的模型進行預測,預測精度比使用全部模型更好。上述權重還需歸一化:

為了盡量確保在某些模型的預測精度出現波動時仍能找到預測精度較高的模型,必須選取合適訓練數據子集。本研究采用的方法是:分別將訓練數據平均劃分為2、3、4、5、6、10個分區,得到共30個分區。
為驗證本文提出的算法,使用表1中所列的指數進行實驗,如表1所示:

表1 所用指數及其代號
數據從Yahoo Finance網站獲得,原始數據包括了每個交易日的開盤價、收盤價、最高價、最低價、交易量等,實驗中使用的是收盤價。數據集所跨越的歷史時期包含眾多重大的經濟事件,應該足以驗證本文所提出的混合多個SVR模型的算法在非平穩的金融時間序列上的表現。
首先根據1.4節的方法計算每個時間點的輸入向量及輸出變量。實驗時采用維度m=5,時延d=5。
超出±2倍標準差范圍的RDP值被當作異常值,用與之相近的邊界值代替。
由于RBF函數對所有特征采用相同處理,從而賦予各個特征相同的權值,數值范圍較大的特征比數值范圍較小的特征影響更大。為了平衡各個特征的影響,將輸入向量各維的數據歸一到[-1,1]。
為了衡量模型的預測能力,采用衡量指標包括:RMSE(root mean square error,均方根誤差)、NMSE(normalized mean squared error,歸一化均方誤差)、WDS(weighted directional symmetry,加權方向對稱性),公式(10)

其中,n為測試數據個數,pi為預測輸出,ai為實際輸出。
RMSE、NMSE都衡量了模型的預測誤差,值越小,表示模型的預測精度更高。不同的是,NMSE將測試數據本身的方差考慮在內。
WDS不僅衡量預測誤差,還考慮方向準確度。WDS越小,則表示模型越好。這一指標對于市場交易者更有實際意義,因為交易者關心的往往是未來的價格的走勢而非具體價格。
需要說明的是,計算WDS時,必須先將輸出變量轉換成價格。
對上述5個指數的數據進行預處理,將轉化后的數據集的前90%作為訓練數據,后10%作為測試數據。
實驗中分別考察了單一SVR模型和混合多個SVR模型的算法(混合模型)的預測能力。
單一SVR模型使用全部訓練數據訓練出一個SVR模型,并用該模型在測試數據上進行預測。
混合模型先將選擇訓練數據的不同子集,再在各個子集上進行訓練,得到多個SVR模型,再利用前文描述的算法在測試數據上進行預測。
訓練時,使用PSO算法尋找在訓練數據上交叉驗證誤差最小的SVR超參數及核心函數參數。
列出了各個指數上的實驗結果,如表2所示:

表2 實驗結果
同一結果,如圖3所示:

圖3 實驗結果
實驗結果顯示,與單一模型相比,混合模型的預測誤差(NMSE)降低了10%~30%,而WDS也降低了5%~25%。由此可見,混合模型的預測能力明顯優于單一模型。
為了分析模型的預測誤差隨時間變化的情況,將預測結果根據時間分為30個時間段,計算每個時間段的RMSE?;旌夏P团c模型中用到的各個SVR模型的預測誤差(RMSE),其中黑線表示混合模型,如圖4所示:

圖4 混合模型預測誤差與其他模型的對比
在各個時間段,混合模型的預測誤差基本上都低于其他模型。由此可見,混合模型確實能夠有效處理非平穩的金融時間序列,在市場出現結構性變動時仍能保持較高的預測準確度。從圖4中可以看到,在各個時間段,當某些模型的預測誤差驟增時,仍有其他模型的預測誤差保持穩定,這說明所選擇的訓練數據子集具有互補性,而權重的調整算法也較合理,能有效抵消非平穩性的影響。
但是,時間段22處的預測誤差仍然較大,這可能是因為選擇訓練數據的子集的算法還有待改進,也有可能因為市場在該時間段的可預測性較低,在后續研究中將繼續研究這一問題。
本文提出一種混合多個SVR模型的金融時間序列預測算法。在全球5大股指上的實驗表明,與單一SVR模型相比,該算法預測金融時間序列的能力有顯著提升。這種改進主要是由于算法考慮了時間金融序列的非平穩性,采用不同的數據訓練出多個SVR模型,通過合理調整各個模型的權重來抵消某些模型出現波動而造成的影響,從而提高整體的預測精度。
后續研究中將進一步優化算法,繼續分析SVR輸入向量的維度、時延對算法預測能力的影響,并將該算法應用于其他非平穩時間序列,考察算法的通用性。
[1]Yaser S A M,Atiya A F.Introduction to financial forecasting[J].Applied Intelligence,1996.6:205 13.
[2]Lu C J,Lee T S.Financial time series forecasting using independent component analysis and support vector regression[J].Decision Support Systems,2009.47(2):115-125.
[3]Tay F E H,Cao L J.Application of support vector machines in financial time series forecasting[J].Omega,2001.9(4):309-317.
[4]Kantz H,Schreiber T.Nonlinear time series analysis[M].2nd ed,Lundon:Cambridge University Press,2004.
[5]Samsudin R,Shabri A,Saad P.A comparison of time series forecasting using support vector machine and artificial neural network model[J].Journal of Applied Sciences,2011.10:950-958
[6]Hadavandi E,Shavandi H,Ghanbari A.Integration of genetic fuzzy systems and artificial neural networks for stock price forecasting[J].Knowledge-Based-Systems,2010.23(8):800-808.