1.背景:
針對股票市場中AR 模型的識別、建立和估計問題,利用AR 模型算法對股票價格進行預測。
2.模型選取:
股票的價格可視為隨機信號,將此隨機信號建模為:一個白噪聲通過LTI系統的輸出,通過原始數據求解 所建模型參數,得到模型,即可預測近期未來的未知股票價格。
隨機信號建模為:白噪聲通過濾波器,濾波器的系統函數為:
其中,bq,ap為濾波器系數,根據參數的不同,此濾波器的類型相應有三種。
(1)AR模型(Auto-Regreesion)
此時,濾波器系數為bq(分子)為1,系統主要依賴於過去輸出的反饋作用(分母),這是一種特殊的IIR濾波器。
AR模型中,序列X當前值由序列e的當前值和序列X的前一個長度為M的窗口內序列值決定。
原理:自回歸模型(Autoregressive Model,AR Model)是用自身做回歸變量的過程,即利用前期若干時刻的隨機變量的線性組合來描述以后某時刻隨機變量的線性回歸模型。
(2)MA模型(畫的平均)
此時,濾波器系數ap(分母)為1,無反饋,系統主要依賴於白噪聲樣本加權求和輸出,FIR濾波器。
(3)ARMA模型
bq,ap都不為1,是一種典型的IIR濾波器。
這三種模型中,AR模型的特別之處是它具有預測特性,把所有能用過去值預測的都表達了,只剩下輸入導致的變化。故我們的預測模型使用AR模型。
AR 是對平穩時間序列成立的,平穩大致上意味着該序列沒有趨勢,圍繞着一個均值上下波動。為了將股票價格平穩化,先對股價進行差分處理。然后使用Yule—Walker 方程求解模型系數,模型的階數通過試探的方法確定。預測時程序可選擇使用模型預測天數,本程序使用六階模型預測未來近三日的股價。
步驟:
考慮一組隨機自變量觀測值與因變量觀測值之間的關系,設自變量觀測值為x(n),因變量觀測值為Y=[y(n),y(n-1),…,y(n-N)],則依據AR Model,滿足如下關系式:
\[{a_0}y\left( n \right) + {a_1}y\left( {n - 1} \right) + \cdot \cdot \cdot + {a_N}y\left( {n - N} \right) = x\left( n \right)\]
其中,a=[a0,a1,…aN]為各項因變量觀測值系數。通常情況下,我們令a0=1。考慮到上式的迭代性,我們可以將其轉化為一組自變量觀測值和一個因變量觀測值的形式如下:
\[y\left( n \right) = x\left( n \right) + {\alpha _1}x\left( {n - 1} \right) + {\alpha _2}x\left( {n - 2} \right) + \cdot \cdot \cdot \]
其中,A=[]是各項自變量觀測值的系數。另外,我們假定自變量觀測值的自相關函數為:
\[{\rm{E}}\left\{ {\left. {x\left( n \right)x\left( {n - k} \right)} \right\}} \right. = {\sigma ^2}\delta \left( k \right)\]
其中:\[{\sigma ^2}\]是自變量觀測值的方差; \[\delta \left( k \right)\]是狄拉克函數。
將所得的y(n)代入可得:
\[{\rm{E}}\left\{ {\left. {y\left( n \right)x\left( n \right)} \right\}} \right. = {\rm{E}}\left\{ {\left. {\left[ {x\left( n \right) + {\alpha _1}x\left( {n - 1} \right) + \cdot \cdot \cdot } \right]x\left( n \right)} \right\}} \right. = {\sigma ^2}\]
同樣,將任意的一個y(n-K)代入可得:
\[{\rm{E}}\left\{ {\left. {y\left( {n - k} \right)x\left( n \right)} \right\}} \right. = {\sigma ^2}\delta \left( k \right)\]
將因變量觀測值(Y(n)的自相關)的自相關函數寫成矩陣形式可得如下:
\[\left[ {\begin{array}{*{20}{c}}
{{r_0}}&{{r_1}}& \cdots &{{r_{N - 1}}}\\
{{r_1}}&{{r_0}}& \cdots &{{r_{N - 2}}}\\
\vdots & \vdots & \vdots & \vdots \\
{{r_{N - 1}}}&{{r_{N - 2}}}& \cdots &{{r_0}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{a_1}}\\
{{a_2}}\\
\vdots \\
{{a_N}}
\end{array}} \right] = - \left[ {\begin{array}{*{20}{c}}
{{r_1}}\\
{{r_2}}\\
\vdots \\
{{r_N}}
\end{array}} \right]\]
該矩陣由Yule-Walker方程描述為:\[Ra = - r\]
對於該系統預測的關鍵在於對系統系數向量a的求解。將AR Model方程寫成如下形式:
\[y\left( n \right) = - \sum\limits_{k = 1}^N {{a_k}y\left( {n - k} \right)} + x\left( n \right)\]
將因變量觀測值y(n)的L個觀測值寫成矩陣形式如下:
\[\left[ {\begin{array}{*{20}{c}}
{y\left( N \right)}\\
{y\left( {N + 1} \right)}\\
\vdots \\
{y\left( {L - 1} \right)}
\end{array}} \right] = - \left[ {\begin{array}{*{20}{c}}
{y\left( {N - 1} \right)}&{y\left( {N - 2} \right)}& \cdots &{y\left( 0 \right)}\\
{y\left( N \right)}&{y\left( {N - 1} \right)}& \cdots &{y\left( 1 \right)}\\
\vdots & \vdots & \vdots & \vdots \\
{y\left( {L - 2} \right)}& \cdots & \cdots &{y\left( {L - N - 1} \right)}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{a_1}}\\
{{a_2}}\\
\vdots \\
{{a_N}}
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
{x\left( N \right)}\\
{x\left( {N + 1} \right)}\\
\vdots \\
{x\left( {L - 1} \right)}
\end{array}} \right]\]
將上式寫成Yule-Walker方程形式為:\[y = - Ya + x\]。其中,x是自變量觀測值矩陣,a是系數矩陣,Y是Toeplitz矩陣,y是因變量觀測值矩陣。
使用最小二乘法(Least Square,LS)尋找一個最優解為:\[{\left\| x \right\|^2} = {\left( {y + Ya} \right)^H}\left( {y + Ya} \right)\]。對該式進行求解可得:\[a = - {\left( {{Y^H}Y} \right)^{ - 1}}{Y^H}y\]。將所求系數代入即可得到擬合方程,根據擬合方程可以得到問題的估計值。
AR模型結束確定(Matlab):
研究表明,采用Yule-Walker方法可得到優化的AR模型,故采用aryule程序估計模型參數。
[m,refl] = ar(y,n,approach,window)
yp = predict(m,y,k)
表示預測模型;為實際輸出;預測區間;yp為預測輸出。
當k<Inf時,yp(t)為模型m與y(1,2,…t-k)的預測值;當k=Inf時,yp(t)為模型m的純仿真值;默認情況下,k=1。
在計算AR模型預測時,k應取1,原因參照AR模型理論公式。
compare(y,m,k)
[yh,fit,x0] = compare(y,m,k)
Compare的預測原理與predict相同,但其對預測進行了比較。
e = pe(m,data)
pe誤差計算。采用yh=predict(m,data,1)進行預測,然后計算誤差e=data-yh;
[e,r]= resid(m,data,mode,lags);
resid(r)
resid計算並檢驗誤差。采用pe計算誤差;在無輸出的情況下,繪出誤差圖,誤差曲線應足夠小,黃色區域為99%的置信區間,誤差曲線在該區域內表明通過檢驗。