金融時序預測:狀態空間模型和卡爾曼濾波

2020-12-05 騰訊網

作者:arit Maitra

編譯:1+1=6

前言

時間序列由四個主要成分組成: 季節變化、趨勢變化、周期變化和隨機變化。在今天的推文中,我們將使用狀態空間模型對單變量時間序列數據進行預測分析。該模型具有連續的隱狀態和觀測狀態。

1

狀態空間模型

基於狀態空間模型對問題進行了結構分析。該系列是由不同的組成部分,如趨勢、季節、周期、變化以及解釋變量和幹預分別建模,然後放在狀態空間模型中。

數據基於1986年以來的Schlumberger Limited歷史數據。

在這裡,為了方便計算,我採用了月(12個月)頻率,你也可以嘗試天(252天/年)的頻率。

下面由密度和正態 QQ 圖組成的分布圖清楚地顯示了數據分布的非正態性。

描述性統計:

2

平穩性檢驗(ADF)

數據歸一化:

3

自相關函數(ACF)

確定不同時間lags的相關性是否趨近於0!

平穩性=高斯噪聲和一個趨勢=累積高斯噪聲之和。

在這裡,我們將通過查看每個信號的自相關函數來檢查每個信號的平穩性特徵。我們期望對於一個平穩信號,ACF 在每個時間 lag (τ) 時變為0,因為我們期望不依賴於時間。

我們在這裡看到,平穩信號有很少的lags超過ACF的 CI。這種趨勢導致幾乎所有的lags時間都超過了置信區間。結果表明,ACF 信號是平穩的。但是,趨勢信號並不是平穩的。平穩序列在均值水平附近有較好的方差,峰值是原始序列幹預的證據。

我們將進一步分解時間序列,它通常涉及水平、趨勢、季節性和噪聲成分的組合。分解有助於在分析和預測期間更好地理解問題。

4

時間序列分解

對時間序列進行分解意味著將其分解為組成成分,這些成分通常是趨勢成分和隨機成分,如果數據是季節性的,則是季節性成分。分解涉及到將時間序列分離到這些單獨的成分中。

我們可以對數據進行差分或對數變換來消除趨勢和季節性。在許多統計和計量經濟學應用的背景下,這些成分的知識具有潛在的重要性。趨勢和季節的估計可以通過最大化殘差均方差從差分序列中恢復,但是這並不像直接對分量建模那樣吸引人。我們要記住,真實的時序從來都不是靜止的。

在這裡,我們將使用簡單的時間序列移動平均平滑法來估計趨勢分量。

我們看到,估計的趨勢部分顯示,從1997年的約9小幅下降到1999年的約7,然後從那時起穩步上升到2019年的12。

經季節性調整

結構模型

結構時間序列模型是(單變量)時間序列的(線性高斯)狀態空間模型。在考慮狀態空間架構時,通常我們感興趣的有三個主要方面:

預測,預測狀態的後續值

濾波,根據過去和現在的觀測值來估計狀態的當前值

平滑,根據觀測值估計狀態的過去值

我們將使用卡爾曼濾波器來執行上述各種類型的推理。

過濾幫助我們在每次觀察時更新系統的知識。平滑可以幫助我們根據整個樣本來估計感興趣的數量。

然而,你可能會問為什麼我們不使用比結構模型更流行的ETS(指數平滑)模型。

ETS模型更具有一般性,因為它允許非線性(乘法成分)。

由於模型空間較大,ETS允許自動預測。

附加的ETS模型幾乎等同於相應的結構模型。

ETS模型具有較大的參數空間。

結構模型參數總是非負的(方差)。

結構模型更容易推廣(例如,添加協變量)。

使用結構模型更容易處理缺失的值。

5

基本結構模型(BSM)

結構模型具有使用簡單、可靠性高等優點。給出了用極大似然法擬合時間序列結構模型的主要工具。

結構時間序列狀態空間模型是將序列分解為若干個分量。它們由一組誤差方差指定,其中一些可能是零。我們將使用一個基本的結構模型來擬合隨機水平模型進行預測。構成狀態空間模型的兩個主要部分是:(1)可觀測數據和(2)不可觀測狀態。

最簡單的模型:

我們需要看到觀測結果,因為狀態被系統噪聲隱藏起來了。觀測結果是當前狀態和一些額外的隨機變化(稱為測量噪聲)的線性組合。觀察結果是:

它實際上是一個ARIMA(0,1,1)模型,但對參數集有一定的限制。

局部線性趨勢模型具有相同的測量方程,但在 t的動態性中具有時變斜率:

有三個方差參數。這裡εt、ξt和ζt是獨立的高斯白噪聲過程。基本結構模型,是一個附加季節成分的局部趨勢模型。因此,測量方程為:

其中 t 是具有動態性的季節性成分

訓練、測試

模型擬合和預測

最好的做法是檢查結構程序的收斂性。與任何結構化過程一樣,我們需要有合適的初始點,以確保算法收斂到正確的最大值。

交叉驗證

交叉驗證是時間序列分析的重要步驟。

Fit model to data y1, . . . , yt

Generate 1-step ahead forecast yt+1

Compute forecast error e t+1 = yt+1 y t+1

Repeat steps 1–3 for t = m, . . . , n 1 where m is minimum number of observations to fit model

Compute forecast MSE from e m+1, . . . , e

Ljung-Box殘差檢驗的p值為0.2131015>顯著水平(0.05);因此,不建議使用交叉驗證的結果,因為模型顯然不適合數據。

6

基本診斷

對任何統計分析進行的第一個診斷是檢查殘差是否與假定的錯誤結構相符。在單變量狀態空間模型中,我們有兩種類型的誤差:過程誤差(wt)和觀測誤差(vt)。它們不應該有時間趨勢。

model.residuals

vt是t:vt = yt - Zxt - a時的數據與預測數據的差值

在狀態空間模型中,xt是隨機的,模型殘差是隨機變量。yt也是隨機的,雖然與xt不同。模型殘差隨機變量為:Vt = Yt ZXt a

Vt的無條件均值和方差為0和R

7

卡爾曼濾波器

卡爾曼濾波算法使用了一系列隨時間變化的觀測數據,其中包含了噪聲和其他誤差,並產生了對未知變量的估計。這一估計往往比僅基於單一測量的估計更準確。使用卡爾曼濾波器並不假設誤差是高斯的;然而,在所有誤差均為高斯分布的特殊情況下,該濾波器給出了準確的條件概率估計。

預測

可以看出,BSM模型能夠很好的提取季節成分。你可以在這裡試驗基於SMA的分解(如前面所示),並比較預測精度。

8

動態線性模型與卡爾曼濾波

動態線性模型(dlm)是狀態空間模型的一個特例,其中狀態誤差和觀測分量是正態分布的。這裡,卡爾曼濾波將用於:

狀態向量的過濾值。

平滑狀態向量的值和終值。

預報提供了未來觀測和狀態的平均值和方差。

我們必須在擬合dlm模型之前定義參數。參數分別為V、W(分別為測量和狀態方程的協方差矩陣)、FF和GG(分別為測量方程矩陣和過渡矩陣)、m0、C0(狀態向量的先驗均值和協方差矩陣)。

然而,在這裡,我們開始dlm模型寫一個小函數如下:

我們考慮了一個帶有dlm的局部水平模型一個多項式dlm(一個局部線性趨勢是一個二階多項式dlm)和一個季節分量12。檢查MLE過程的收斂性是很好的實踐,而不是最佳實踐的一部分。

我們還應用了卡爾曼濾波和平滑器。

由此可見,dlm模型的預測精度相當好。過濾和平滑在時序中幾乎是一起移動的,彼此之間的差別不大。這裡忽略了季節因素。預測時序和原始時序非常接近。

在這裡公眾號普及一下R中的dlm包:它是模塊化的,因此你可以自由地構建具有多個組件的模型,例如,你可以指定具有季節性組件的線性趨勢模型。

9

總結

狀態空間模型有多種形式,是處理大量時間序列模型的一種靈活方法,並提供了處理缺失值、似然估計、平滑、預測等的框架。單變量和多變量數據均可用於狀態空間模型的擬合。

參考資料

1、Durbin, J., & Koopman, S. J. (2012). Time series analysis by state space methods. Oxford university press.

2、Giovanni Petris & Sonia Petrone (2011), State Space Models in R, Journal of Statistical Software

3、G Petris, S Petrone, and P Campagnoli (2009). Dynamic Linear Models with R. Springer

4、Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: principles and practice. OTexts.

2020年第14篇文章

你點的每個「在看」,都是對我們最大的鼓勵

相關焦點

  • 金融時序預測:狀態空間模型和卡爾曼濾波(附代碼)
    該模型具有連續的隱狀態和觀測狀態。1 狀態空間模型基於狀態空間模型對問題進行了結構分析。該系列是由不同的組成部分,如趨勢、季節、周期、變化以及解釋變量和幹預分別建模,然後放在狀態空間模型中。結構時間序列狀態空間模型是將序列分解為若干個分量。它們由一組誤差方差指定,其中一些可能是零。我們將使用一個基本的結構模型來擬合隨機水平模型進行預測。構成狀態空間模型的兩個主要部分是:(1)可觀測數據和(2)不可觀測狀態。
  • 卡爾曼與卡爾曼濾波
    60年代初,卡爾曼(R.E.Kalman)和布塞(R. S.Bucy)發表了一篇重要的論文《線性濾波和預測 理論的新成果》,提出了一種新的線性濾波和預測理由論,被稱之為卡爾曼濾波。特點是在線性狀態空間表示的基礎上對有噪聲的輸入和觀測信號進行處理,求取系統狀態或真實信號。
  • 車載毫米波雷達之大話卡爾曼濾波
    所以,卡爾曼濾波在毫米波雷達的應用上,就扮演著至關重要的角色。卡爾曼&卡爾曼濾波什麼是卡爾曼濾波?卡爾曼濾波和傅立葉變換、泰勒級數一樣,都是以其發明人命名。稍微不同的是,卡爾曼是個現代人!卡爾曼是匈牙利數學家,1930年出生於匈牙利首都布達佩斯。
  • 詳解卡爾曼濾波原理
    意外的是很少有軟體工程師和科學家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。什麼是卡爾曼濾波?你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種幹擾,卡爾曼濾波總是能指出真實發生的情況。
  • 卡爾曼濾波是怎麼回事?
    對於更複雜的濾波,比如維納濾波,則要根據信號的統計知識來設計權重。從統計信號處理的角度,降噪可以看成濾波的一種。降噪的目的在於突出信號本身而抑制噪聲影響。從這個角度,降噪就是給信號一個高的權重而給噪聲一個低的權重。維納濾波就是一個典型的降噪濾波器。卡爾曼濾波Kalman Filter 算法,是一種遞推預測濾波算法。
  • 深度解讀:卡爾曼濾波原理
    什麼是卡爾曼濾波?你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種幹擾,卡爾曼濾波總是能指出真實發生的情況。所以,輪子轉過的長度並不能精確表示機器人實際行走的距離,預測也不是很完美。GPS 傳感器告訴了我們一些狀態信息,我們的預測告訴了我們機器人會怎樣運動,但都只是間接的,並且伴隨著一些不確定和不準確性。但是,如果使用所有對我們可用的信息,我們能得到一個比任何依據自身估計更好的結果嗎?回答當然是YES,這就是卡爾曼濾波的用處。
  • 卡爾曼濾波及其衍生算法在SOC估計中的應用
    1 卡爾曼濾波原理卡爾曼濾波算法的目的,是想要解決在測量和模型推演的結果都無法做到完全準確的條件下,如何獲得一個比較準確的估計結果的問題。整個過程可以在時變參數軸上延伸,迭代,在變量與目標參數構成的二維或者多維空間中,形成一條估計軌跡。成功的估計會使得估計軌跡與真實軌跡儘可能的接近。
  • 透徹理解擴展卡爾曼濾波
    卡爾曼濾波是貝葉斯濾波的一種特例,是在線性濾波的前提下,以最小均方誤差為最佳準則的。估計線性高斯模型,是對線性模型和高斯分布的優化方法。邊緣分布和條件分布的模型:卡爾曼濾波器的主要參數卡爾曼濾波器假設x(paths), z(observations)都為線性高斯的:主要參數:A是在沒有命令的情況下,由於環境因素造成的機器人的位置移動。
  • 卡爾曼濾波的原理
    我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。簡單來說,卡爾曼濾波器是一個「optimal recursive data processing algorithm(最優化自回歸數據處理算法)」。
  • 卡爾曼濾波應用於自動駕駛
    卡爾曼濾波器是一個迭代過程,遵循兩步預測和更新迭代過程的流程圖預測:在該步驟中,卡爾曼濾波器根據初始值預測新值,然後根據系統中存在的各種過程噪聲預測我們預測中的不確定性/誤差/方差。然後我們計算預測值和測量值之間的差值,然後通過計算卡爾曼增益來決定保持哪個值,即預測值或測量值。根據卡爾曼增益做出的決定,我們計算新值和新的不確定性/誤差/方差。來自更新步驟的該輸出再次反饋到預測步驟,並且該過程繼續直到預測值和測量值之間的差異傾向於轉換為零。
  • 卡爾曼濾波算法解析(一)
    那我們是如何得到這些位置、速度、航向的信息呢,一般有兩種形式:一種是通過傳感器進行測量,還有一種是通過運動狀態模型進行預估。傳感器測量的方式有多種多樣,比如測量位置信息的傳感器有GPS、視覺傳感器、雷達等。
  • 卡爾曼濾波,如此強大的工具,你值得弄懂!
    什麼是卡爾曼濾波?你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種幹擾,卡爾曼濾波總是能指出真實發生的情況。在連續變化的系統中使用卡爾曼濾波是非常理想的,它具有佔用內存小的優點(除了前一個狀態量外,不需要保留其它歷史數據),並且速度很快,很適合應用於實時問題和嵌入式系統。在Google上找到的大多數關於實現卡爾曼濾波的數學公式看起來有點晦澀難懂,這個狀況有點糟糕。
  • 深度解讀:卡爾曼濾波,如此強大的工具 你值得弄懂!
    意外的是很少有軟體工程師和科學家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。什麼是卡爾曼濾波?你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種幹擾,卡爾曼濾波總是能指出真實發生的情況。
  • 深度解讀:卡爾曼濾波,如此強大的工具 你值得弄懂
    意外的是很少有軟體工程師和科學家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。什麼是卡爾曼濾波?在連續變化的系統中使用卡爾曼濾波是非常理想的,它具有佔用內存小的優點(除了前一個狀態量外,不需要保留其它歷史數據),並且速度很快,很適合應用於實時問題和嵌入式系統。在Google上找到的大多數關於實現卡爾曼濾波的數學公式看起來有點晦澀難懂,這個狀況有點糟糕。
  • 看完這篇卡爾曼濾波原理,我被驚到了!
    意外的是很少有軟體工程師和科學家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。 什麼是卡爾曼濾波? 你可以在任何含有不確定信息的動態系統中使用卡爾曼濾波,對系統下一步的走向做出有根據的預測,即使伴隨著各種幹擾,卡爾曼濾波總是能指出真實發生的情況。
  • 卡爾曼濾波 – Kalman Filter 通俗的解釋及原理
    而實際狀態值無法得知,既有先驗預測,又有後驗預測)實際狀態值與先驗預測狀態值的偏差 = 實際狀態值 – 先驗預測狀態值~X(k+1|k) = X(k+1) - ^X(k+1|k) >>>> 式3實際測量值與先驗預測測量值的偏差 = 當前測量值 - 先驗預測測量值~Z(k+1|k)  = Z(k+1)  -  ^Z(k+1|k) >>>>式4先驗預測測量值
  • 卡爾曼濾波在電容觸控螢幕坐標定位中的應用
    為此,針對主要影響因素——系統噪聲進行濾波,還原初始數據的有效信號有利於提高觸控螢幕的坐標定位準確度。在眾多的濾波方法中,經過實驗分析和對比,最終證實,卡爾曼濾波在還原原始數據和算法實現方面都有較好的優勢。
  • 一代宗師卡爾曼
    在RIAS期間,卡爾曼做出了他一生中最著名的貢獻,也就是所謂的「卡爾曼濾波」。1958年底到1959年初期間,他在離散時間(採樣數據)問題方面取得了一些成果,並將早期的基礎工作應用在維納濾波、Kolmogorov、伯德、香農、普加喬夫和其他現代狀態空間方法上。
  • 深入淺出講解卡爾曼濾波(附Matlab程序)
    我們現在要學習的卡爾曼濾波器,正是源於他的博士論文和1960年發表的論文《A New Approach to Linear Filtering and Prediction Problems》(線性濾波與預測問題的新方法)。
  • 卡爾曼濾波應用實例
    打開APP 卡爾曼濾波應用實例 發表於 2017-10-30 09:27:47