時間序列分析----結合ARMA的卡爾曼濾波演算法

作者:Epilogue 原文鏈接:時間序列分析補充----結合ARMA的卡爾曼濾波演算法

前言

一直也希望能夠把自己的知識共享出去,為社區補充一些東西,前段時間恰好讀到了 @fyiqi 寫的「金融時間序列分析入門(一)~(四)」,覺得其深入淺出地介紹一些理論知識的模式比較合適,因為確實一些基礎且實用的理論在社區內還沒被介紹過。比如卡爾曼濾波,在社區里幾乎沒有對它的介紹與演算法實現,因此在本貼中希望能夠在一定程度上將其補充~

本文一定程度上是對 @fyiqi 的「金融時間序列分析入門(一)~(四)」的補充,會用到其中的一些概念(如ARMA模型)

卡爾曼濾波簡介

卡爾曼濾波演算法是通過系統輸入輸出觀測數據(在本貼中為HS300日對數收益率),對系統狀態進行最優估計的演算法。由於觀測數據中包括系統(市場)中的雜訊和干擾的影響,所以最優估計也可看作是濾波過程。

卡爾曼濾波無論是在對過去值的估計(插值或平滑)、對現在值得估計(濾波)以及對將來值的估計(預測)方面都有著比較重要的作用。在本帖中主要介紹在預測方面的實現方法,希望能夠給需要用到此類方法的礦友一些啟發~

在將卡爾曼濾波演算法與ARMA模型結合時,卡爾曼濾波演算法可以在當獲得一個新的數據點(y_{t+1} )時,遞歸地更新狀態變數(預測值)的信息,可以起到對ARMA模型的修正作用,在一定程度上提高ARMA模型的預測精度。

演算法實現 part 1

首先,提取出y_{t} ,即HS300的日對數收益率

提取2015年去年HS300收盤價及對數收益率

一、狀態空間模型與ARMA

要卡爾曼濾波,首先要引入狀態空間模型。在這裡,「狀態」與「測量」相對,表示從數據中移除測量誤差。

在介紹狀態空間模型時,我們由淺入深,首先引入一元的局部趨勢模型

1.1 局部趨勢模型

首先考慮一元時間序列y_{t} (HS300日對數收益率),局部趨勢模型滿足

初始狀態s1~N(μ1|0,Σ1|0),其中μ1|0,Σ1|0是給定的。

1.3 ARMA模型與線性狀態空間之間的轉換

ARMA模型的詳細解讀請參照「金融時間序列入門(二)----MA & ARMA & ARIMA」

在下面的過程中,令phi _{0} =0(當phi _{0} ≠0時,則在y_{t} 中將其減去,得到均值為0的y_{t} ),並令m=max(p,q+1)(後面的討論中為了簡便,只討論令m=p的情況)

此時,可以令ARMA(p,q)=ARMA(m,m-1),其中如m=q-1,則?p+1,?,?m=0;如m=p,則θq+1,?,θm?1=0

演算法實現 part 2

下面進入ARMA模型的演算法實現部分

ARMA模型:通過信息準則定階(詳細解讀參照「金融時間序列入門(一))

(aic-order: , (3, 2))

n(bic-order: , (2, 2))

(hqic-order: , (2, 2))

bic與hqic均給出ar階數為2,又根據前面假設:p >= q+1,故令order = (2,1)

ljung-box檢驗(檢驗殘差序列是否存在滯後相關)

AC Q Prob(>Q)

lag n1.0 0.001445 0.000514 0.98192

2.0 0.018605 0.086024 0.957900

3.0 -0.002259 0.087289 0.993318

4.0 0.083168 1.810307 0.770596

5.0 0.051584 2.475918 0.780117

6.0 -0.096262 4.803670 0.569229

7.0 -0.006572 4.814565 0.682581

8.0 0.140752 9.833538 0.276904

9.0 -0.024263 9.983311 0.351838

10.0 -0.102196 12.651893 0.243791

11.0 -0.115016 16.046571 0.139411

12.0 0.072517 17.401897 0.135094

13.0 0.111749 20.634319 0.080483

14.0 -0.075790 22.127649 0.076029

15.0 -0.005695 22.136117 0.104284

16.0 0.097925 24.651090 0.076217

17.0 0.015490 24.714301 0.101290

18.0 -0.015433 24.777319 0.131174

19.0 -0.010715 24.807835 0.166965

20.0 0.114525 28.309448 0.102274

21.0 0.162293 35.372962 0.025685

22.0 -0.043516 35.883094 0.031254

23.0 -0.100106 38.594945 0.021968

24.0 -0.004349 38.600087 0.030066

25.0 0.055229 39.433107 0.033318

26.0 -0.130746 44.123087 0.014662

27.0 -0.055123 44.960590 0.016417

28.0 0.055733 45.820698 0.018188

29.0 0.085124 47.836577 0.015282

30.0 -0.133892 52.847294 0.006163

31.0 -0.093931 55.325033 0.004608

32.0 -0.033918 55.649630 0.005918

33.0 0.061328 56.715913 0.006285

34.0 0.107805 60.026497 0.003847

35.0 -0.060198 61.063710 0.004126

36.0 0.088619 63.322414 0.003275

37.0 0.056958 64.260011 0.003593

38.0 -0.013537 64.313233 0.004847

39.0 -0.017196 64.399532 0.006412

40.0 0.014103 64.457863 0.008440

通過ljung-box檢驗,判斷殘差序列是否存在滯後相關。得到滯後20階以內的p-value均大於0.05,故可以判斷殘差中沒有顯著的序列相關性,可以進行下一步分析。

1.3.1 Harvey方法:推導

將ARMA轉化為狀態空間模型主要有Akaike、Harvey、Aoki三種方法,在這裡只介紹較為常用的Harvey方法。1.3.1節的推導過程中公式較多,但邏輯清晰,讀起來不會費力。不過側重於應用的小夥伴可以跳過該節,直接看Harvey方法的結論與演算法實現部分

推導過程如下:

Harvey方法中,給出了具有m維狀態向量S_{t} 的狀態空間的一種形式,該狀態向量的第一個元素是yt,即S_{1t} =y_{t} S_{t} 的其他元素通過遞歸得到。 由ARMA(m,m-1):

上式中:

繼續,考慮S_{2,t+1} ,可以得到:

可以得到

繼續,可以得到S_{3,t+1} S_{4t} S_{4,t+1} S_{5t} →?→S_{mt} 根據遞歸,有:

最終有

1.3.2 Harvey方法:結論

將上述方程綜合起來,我們得到如下形式的狀態空間模型:

Qt=sigma x_{a}^{2} 。在(3)式中,AR與MA的係數被直接用在了系統矩陣里

演算法實現 part 3

下面進入Harvey方法的演算法實現部分,參見原文查看

二、結合ARMA模型的卡爾曼濾波演算法

2.1 卡爾曼濾波基本公式

卡爾曼濾波(Kalman filter)的目標是:當獲得一個新的數據點時,遞歸地更新狀態變數的信息,即遞歸地得到在給定數據Ft=y1,?,yt條件下st+1的條件分布和模型。由於卡爾曼濾波早已有成型的公式,因此公式的推導過程在這裡不做贅述,直接給出。

對於(2)式所給出的狀態空間模型,給定初始值s1|0,Σ1|0,卡爾曼濾波的演算法為(公式中上角標T表示轉置):

2.2 結合ARMA模型的卡爾曼濾波演算法

對於由Harvey方法(即(3)式)所給出的狀態空間模型,給定初始值s1|0,Σ1|0,卡爾曼濾波的演算法為(公式中上角標T表示轉置):

其中T,R,Qt 均由Harvey方法給出。

確定初始值s1|0,Σ1|0的方法:

演算法實現 part 4

下面進入卡爾曼濾波預測的演算法實現部分

預測收益率一步漲跌準確率——ARMA + Kalman:0.555555555556

預測收益率一步漲跌準確率——ARMA:0.469135802469

可以看到,相比於ARMA模型的擬合結果,ARMA+卡爾曼濾波演算法所得到的擬合結果更為平滑,說明在經過卡爾曼濾波調整之後,對於雜訊過濾效果更好。因此,利用卡爾曼濾波對時間序列進行平滑是大有可為的。同時,在預測收益率一步漲跌時,ARMA+卡爾曼濾波演算法相比於單純的ARMA演算法來說,準確度有了近10%的提高。雖然相對其他諸如機器學習等預測方法來說,預測準確度還不夠,但卡爾曼濾波對於ARMA的調整效果值得借鑒。

參考文獻

《金融時間序列分析》 第2版 Ruey S.Tsay著 王輝、潘家柱 譯

其他文章推薦:

金融時間序列分析入門(一)

金融時間序列入門(二)----MA & ARMA & ARIMA

金融時間序列入門(三)--- 季節模型

金融時間序列入門(四)--- ARCH、GARCH

基於時間序列的協整關係的配對交易

基於小波變換的時間序列預測

時間序列的小波去噪


推薦閱讀:

RNN最大化條件概率參數模型預測時間序列
量化策略系列教程:18MACD策略
掘金量化擂台賽
【量化】均值回歸入門

TAG:时间序列分析 | 量化 | 卡尔曼滤波KalmanFilter |