読者です 読者をやめる 読者になる 読者になる

FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

カルマンフィルターでAR(2)モデルを表現するには・・・。

引き続きカルマンフィルターについて調べたことなどを・・・。

カルマンフィルターは座標や価格のみを使った予測とはちょっと違ってて、状態空間という内部の隠れた状態を推定するのが特徴なのだそうです。

で、その状態空間というのは最低限のルールに従えば自由に設定できるらしく「価格、加速度、ボラティリティ、トレンド、指標」みたいなモデルを定義することも可能なのだとか・・・。

ということで、簡単な例として[価格 ; 一つ前の価格]を状態変数として保持し、AR(2)モデルを表現する方法について調べてみました。

AR自己回帰モデル(ARモデル)

このモデルは「将来の自分は過去の自分によって説明される」という考えに基づいたもので、Ytを今期、Yt-1を1期前、φを係数、etを誤差とすると次式で表せます。

t = φ1 × Yt-1 + φ2 × Yt-2 + φn × Yt-n … + εt

何期前までのデータを使うかによってAR(1)、AR(2)というように表現します。

AR(1)の式・・・t = φ1 ×Yt-1t
AR(2)の式・・・t = φ1 ×Yt-1 + φ2 ×Yt - 2t

例えば、AR(2)の式では、

将来の価格(Yt)は一期前の終値(Yt-1)を φ1倍したモノと二期前の終値(Yt-2)をφ2倍したのモノの和にノイズ(εt)が乗ったモノ

 という意味になります。

AR(2)でカルマンフィルター

まずはカルマンフィルタの公式をおさらいすると

状態方程式・・・ xt =  F xt-1 + Gt wt

観測方程式・・・ zt =  H xt + vt  

 になります。これにAR(2)の係数φ1とφ2を逐次的に推定させるようにするには、例えばこんな風に設定します。

f:id:fxborg:20170420153845p:plain

(※名称は適当)

状態方程式

このときの状態方程式を一旦ノイズを無視して表すと次のようになります。 

f:id:fxborg:20170420155516p:plain

この式で一期前の状態(Yt-1; Yt-2)にシステムモデルを掛けたら、一期先の状態(Y; Yt-1)が取り出せることが分かります。

式の解き方

行列の積を解いて連立方程式にしていきます。

f:id:fxborg:20170420172117p:plain

・・・となり

f:id:fxborg:20170420172649p:plain

さらにシステム雑音を同じように計算して付け加えると・・・

f:id:fxborg:20170420173118p:plain

これはAR(2)の式と同じになります。

観測方程式

観測方程式もHを掛けることで、Ytをうまく取り出すことが可能になります。

f:id:fxborg:20170420191643p:plain

こんな感じでモデルを定義していくと、いろいろな状態を表現することが出来るのだそうです。 

参考サイト

今回の内容は以下のサイトなどを読んで部分的にまとめたものです。まだまだ私の理解が浅いので間違いがあるかもしれません。より詳しい内容は以下のリンクから得ることができます。

【参考にしたサイトのリンク】

  1. [mixi]マス埋めの話 - Rで経済時系列 | mixiコミュニティ
  2. カルマン講座のゆくえ ( 工学 ) - 温泉気分で♪ - Yahoo!ブログ
  3. [R] [教材]アニメーションで学ぶカルマンフィルタ - ill-identified diary
  4. http://truestar.jp/main/metrics/basicstatistics/Timeseries.pdf
  5. Tutorial: Kalman Filter with MATLAB example part1 - YouTube
  6. カルマン フィルター設計 - MATLAB & Simulink Example - MathWorks 日本

最後に

今回もカルマンフィルタについて勉強したことを整理してみました。自分でモデルを考えたりするのはなかなか楽しそうです。まずはいろいろなモデルを試してみたいと思います。