ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ホーム > コミュニティ > ビジネス、経済 > Rで経済時系列 > トピック一覧 > マス埋めの話

Rで経済時系列コミュのマス埋めの話

  • mixiチェック
  • このエントリーをはてなブックマークに追加

コミュ内全体

まずは状態の話から。

カルマンフィルタそのものは、一種の公式の類なわけで
これに当てはめれば、予想が出来るのだけど、何を
当てはめたいのか?と言う事が第一に問われます。

何を当てはめるか?と言えば、ひとことで言えば
知りたい「状態」を当てはめれば良い話。

じゃ状態って何?ってのが第一の関所と言う事だけど
関係が、移ろいでゆく、データのセットの事です。

例えば、坂田罫線に従って、未来永劫、相場つきが
変化しないのであれば、そのまま坂田罫線を使えば
予想できるのだから、状態は変化が無い事になります。

ところがあるときは坂田罫線が良くあたり、あるときは
エリオットのほうが良いと言う事が起きるのであれば
これは何某かの相場の状態が変化しているのでは?と
言う事になるわけです。

問題は、後になって、状態が変化した事を知った所で
意味が無いわけで、状態の変化そのものを先読みし
次は、こういう状態になるだろうから、それに合わせて
予想してやれ!と言うのがカルマンフィルタなわけです。

ここではAR(2)を使って、状態について考えて見ます。

 Yt = a1 x Yt-1+ a2 x Yt-2 +εt  (0)

今の株価(Yn)は、一期前の株価(Yt-1)をa1倍し、二期前の
株価(Yt-1)をa2倍しモノにノイズ(εt)が載っているんだよ
と書いてあります。

ここでノイズ(εt)は平均が0,分散がVARな正規分布型のノイズ
であるとします。

εt 〜 N(0,VAR)

以上がAR(2)の定義ですが、一期前や二期前の循環の影響がある
のであれば、これで当たる可能性のある話。

ところがここでa1やa2は、やはり時期によって移ろいで行くわけで
これを解決しないと行けないわけです。

さてこの問題での状態ですが(Yt-1,Yt-2)が状態になります。
これが一期進むと(Yt,Yt-1)になる訳ですが、状態の変化そのものは

 (Yt,Yt-1) = F (Yt-1,Yt-2)

F倍すると次の状態になるとします。

こういうFが本当にあれば、状態変化そのものを捉えられる事になる
わけで、そうなるようにツジツマあわせに入るわけです。

|Yt   |   |Yt-1|
|    | =F |  |
|Yt-1|     |Yt-2|

と今度は成分を縦に書きました。ここで今の状態をxt、一期前とxt-1とすると

   |Yt |
xt =|   |
   |Yt-1|


     |Yt-1|
xt-1 =|   |
     |Yt-2|


こんな風に書き表せるわけです。


ここでFに

|a1 a2|
|1  0|

を詰め込んで、展開すると

Yt = a1 x Yt-1 + a2 x Yt-2  (1)

Yt-1 = 1 x Yt-1 + 0 x Yt-2 (2)

と なりますよね?

(1)はAR(2)にノイズが無いもの(2)は、Yt-1= Yt-1 となり自明です

まぁ実際にはノイズがあるわけで、今度はノイズのツジツマをあわせます。

ノイズの係数をGとしておくと


|Yt  |   |Yt-1|   |ノイズ1|
|   |= F |   | + G |    |
|Yt-1|   |Yt-2|   |ノイズ2|

となる訳ですが、ここで

   |1|
G = | |
   |0|

とすると、

(1)の式は

Yt = a1 x Yt-1 + a2 x Yt-2 +1 x ノイズ1

(2)の式は

Yt-1 = Yt-1 + 0 x ノイズ2

と成る為、(1)の変形がAR(2)そのものを現し、(2)の変形は

Yt-1 =Yt-1

と自明な関係になった訳で、ツジツマは合っているわけです。

ここまでが計算できれば状態(Yt,Yt-1)が求まっているわけで
(0)の式に、これを入れると観測方程式は一期先がわかるわけで

Yt+1 = a1 * Yt + a2 Yt-1 + εt

と、 一期先の値を教えてくれるわけです。

この事を、他とあわせる為に行列で書くわけですが

Yt = H xt + wt

と表現すると(2)式の類は、結局いらないので

H = |1 0|

と、しておけば、やはりツジツマが合う事になります。

次回は、初期化について説明します。

コメント(26)

次が初期化です。

カルマンフィルタは、出来るだけ実態に合うように初期化することが
悩まなくて済む道。

上の例であればa1やa2を、最初から近い値を選ぶことや、ノイズを実際に
即したものにするのがコツ。

とは言っても、それが判らないから、こういう計算をしているわけで
結局は色々入れて収束するのを見る事になります。

状態そのものも、ツジツマ合わせの要領で、初期化してやることもあります。

どうしていいか判らなかったら、ノイズの類は大きな値を入れてみて
係数類はゼロにしておくと、旨く行くことが多いようです。

例えばARは、状態ノイズはあっても、観測ノイズは無い話なのですが、
知っていれば最初から観測ノイズの係数を0に出来るわけです。

まぁ、あれこれ考えて動くまで、あちこちを弄り倒すと言うのが実際の
初期化と言う事になると思います。

全然、筋道の無い話になりましたが、実際にやってみれば、それとなく
出来るようになる話だと思います。

まぁ、これでは不親切すぎるので、次回からは幾つかの実例を付けて
みますね。
では、トレンド方程式を書いてみる事にします。

tn = tn-1 + wt
yn = tn + vt

トレンドって何か?と言われれば、大まかな勾配のような話。

じゃ今トレンドは幾らよ?と聞かれても、推定量なので
このくらいなのかも?と言うのは見当がついても、これです!
とは言えない値。こういうのを不観測値と言います。

上の式は、トレンドは一個前のトレンドにノイズwtが載ったものと
言う定義。下は価格はトレンドにノイズvtが載っているという話。

これで、マス埋めを開始するわけです。

まずFは、トレンドは前のトレンドと同じと言う事なので1を入れておけば、
最初から、よほど急な勾配を持つトレンドで無ければ良さそう。

F = 1

次にGですが、ノイズが載っているよと、言う事なので1とすればこれも
良さそう。

G = 1

最後にHですが、トレンドが価格だよと言う事なのでこれも1で良さそう。

H = 1

ここまでを纏めると

F=G=H=1

と言う事になりそう。

また状態ノイズがあると言う事なので

Q=1

観測ノイズもあるので

R=1

これで、設定は終わりなのでレヴィさんに書いて頂いたソースを

F<-1;
G<-1;
H<-1;
Q<-1;
R<-1;

と言うのが、一次のトレンド方程式です。
またN2は1x1型なので1にして下さい。

よっしゃこれでOKか?と言えば、初期化に細工が必要で、一番最初の
状態が無い時と、次ではいきなり値が入って、この段差?が厳しいようです。

これをクリアする為に、一番最初の状態を0とするのではなく、一番最初の
データの値そのものを入れてやるとOKです。

x<-zeros(N2,1);

これの後に

x[1,1] <-yobs[1,1];

とでもすれば、最初のF(つまり1)が、大きく見当はずれに成らない為です。

#たぶん檜木さんの無香料カルマンも同様では無いかと思います。

以上で、カルマンによるトレンド予測が完成するわけです。

トレンドが発生する時系列であれば、このFの値が少しづつ変化して行き
情況に適応していくわけです。

トレンド方程式は、株価のような非定常(どこに最終的に行くか不明)な
データを扱う場合には非常に有効です。

どうしてかと言えば、カルマンはノイズが平均ゼロの正規分布型である
必要があるのですが、非定常なデータは、そのままでは平均がどこに
あるかは、時と場合によるわけで定まりません。

けれど、トレンド方程式を使うことで、株価がトレンドの周りを回るので
トレンドと株価の誤差の分布は、トレンドを中心に(これをゼロと見て)
変化するわけです。

従って、定常なカルマンと言っても、トレンドで見てやれば、非定常な
データを扱えるようになるわけです。
AR(2)は、先ほど説明しましたが、レヴィさんのソースでの説明が
なされていないので、ここだけやります。

F<-matrix(c(a[,1],1,a[,2],0),2,2);
G<-matrix(c(1,0),2,1);
H<-matrix(c(1,1),1,2);
Q<-1;
R<-0;

これがAR(2)なのですが、Rの行列定義は2x2の場合
こういう順番です。

|1 3|
|2 4|

添え字は

matrix(c(1,3,2,4),2,2);

とある場合、),2,2); この部分の最初が行の数で後ろが列の数です。

Rが0になっていますが、これを1にしても収束はします。
a1やa2は情況により色々代えて初期化する必要があります。
実際の相場は、

1)トレンドが発生する
2)循環成分もある

のだとします。

トレンド方程式を作り、トレンド予測をし、ARで循環成分を予測し
最後に値を足し合わせても、トレンドと循環を考慮した予測になり
そうな気もします。

けれど、ここでトレンドと循環成分が、どういう風に影響しあって
いるか判らないと、単純に足しただけではダメかも知れないわけです。

どうすればこの問題が解決できるかと言えば、別々に予測しないで
このふたつを一気にカルマンに入れてやることで、カルマンが
両方を合わせてノイズを減らす為に、トレンドと循環を旨く
ブレンドして、予測するようになります。

つまり、これと

Yt = a1 x Yt-1+ a2 x Yt-2 +εt

これを

tn = tn-1 + wt

一度に計算するように、マス埋めの調整をするわけです。

どうするのかと言えばAR(2)は2x2ですがT(1)は1x1のFのカタチを
しているわけですが、3x3のワクを用意すれば一度にこれが入る
わけです。Fを以下のように細工します。

|T,0,0 |
|0,a1,a2|
|0,1,0 |

3x3の1の1部分にT(つまり1)、2x2〜3x3までに、AR(2)を入れて
いるわけで、これで状態を次の状態にすれば、トレンドと
循環成分を一度に計算することになります。

次にGですがトレンドと循環が各々ノイズを持つため

|1|
|1|
|0|

としてやれば、各々が別々のノイズに接続される。

最後にHですが

|1,1,0|

とすれば、最初の1がトレンド、次の1が循環を観測方程式に
接続してくれるわけ。

あとはQとRを1として、ノイズが状態側にも、観測側にも、あるんですよ
と書けば終わり。

その他の注意点としては初期状態をトレンド方程式でやったのと同じ事を
してあるだけです。

N2<-3;

a <-matrix(c(0,0),1,2);
F<-matrix(c(1,0,0,0,a[,1],1,0,a[,2],0),3,3);
G<-matrix(c(1,1,0),3,1);
H<-matrix(c(1,1,0),1,3);
Q<-1;
R<-1;

x[1,1] <-yobs[1,1];

と言う事です。

状態を決め、マスを埋め、初期値を旨く設定すると言うのが流れで
後はしたいものを、どんどんマスに入れていけば良いと言う話
だったわけですが、如何でしたか?



すみません、確認したい点があるのですが、

1.
状態方程式
Yt = a1 x Yt-1+ a2 x Yt-2 +εt (AR成分)
tn = tn-1 + wt (トレンド成分)
と定義した場合、
観測方程式は循環成分ノイズとトレンド成分ノイズそして観測ノイズを
ブレンドして、予測してくれるので、

観測方程式は
YYt=tn-1 + wt + a1 x Yt-1+ a2 x Yt-2 +εt + Vt
つまり
YYt=tn-1 + a1 x Yt-1+ a2 x Yt-2 + Vt'
となるという理解で正しいでしょうか。

2. 状態方程式と観測方程式の定義ですが、
使用したい説明変数を全部とりあえず状態方程式として
定義し、あとから観測方程式に全部詰めればOKという
(全部加算する)理解でよろしいでしょうか。

すみませんがよろしくお願いします。
1について

> Yt = a1 x Yt-1+ a2 x Yt-2 +εt (AR成分)
> tn = tn-1 + wt (トレンド成分)

まずここですけど、ARは、定常を相手にするので
時系列が一回で定常で、合成したいなら

Yt - Yt-1 = a1*(Yt-1 - Yt-2)+a2*(Yt-2 - Yt-3)+ εt

となる筈。

で、。最終的には

YYt=tn-1 + a1 x(Yt-1 - Yt-2)+ a2 x(Yt-2 - Yt-3) + Vt'

となると。こんな感じだと思います。

2について

まずは、状態変数Xtを、どう決めるか。
要するに、動的に捕らえたいものをXtにする。

次に状態変化が、どう起きるのかをFに書く。

次にFに見合ったノイズがG側から供給されるように
Gを書く

最後に最終出力に見合うようにHを書く。

こんな感じでしょうか?
1ですが、元々の時系列が定常なのであれば、書かれている通りで
構いません。I(0)な場合。

さっきの(6番)は、和分一回で定常I(1)な場合です。
>さっきの(6番)は、和分一回で定常I(1)な場合です。

温泉先生、ご回答ありがとうございました。
対象時系列が定常か非定常かによって(4番)か(6番)のように定義するのですね。

>F<-matrix(c(a[,1],1,a[,2],0),2,2);
>G<-matrix(c(1,0),2,1);
>H<-matrix(c(1,1),1,2);
>Q<-1;
>R<-0;

>これがAR(2)なのですが、Rが0になっていますが、これを1にしても収束はします。
>a1やa2は情況により色々代えて初期化する必要があります。

>しかしこれ0にしても動いているわけだけど、そもそもRの値は更新が
>どこにも無い物なので、まぁ好きに観測雑音を定義しろと言う事で
>ホントにツジツマ合わせな計算なんだなと改めて知りました。

>ついでにQの成分も、色々弄って遊んでいる所。
>こっちは完全に0にするとダメだけど、ほぼ0近くまでは出来る話。
>予測値と誤差を見ながら詰めてやると、これが中々面白い。

R、Qの定義がまだ理解できていないのですが、察するところでは
”Qには状態ノイズの分散(正規分布なら1)を、Rは0でも1でもよい”
というように思いますが、実際にコードを見ますと、

Q <- matrix(c(1,0, 0,1), 2,2);
R <- matrix(c(1),1,1);

Q<-matrix(c(1,0,0,1),2,2);
R<-matrix(c(0),1,1);

Q <- matrix(c(0,0,0,0),2,2);
R <- matrix(c(1),1,1);

Q<-1
R<-1

と時と場面によっていろいろバリエーションがあるようで
どのように定義して、使い分けたらよいかアドバイスを
いただけませんでしょうか。

>Fs <- 1000;N <-150; time<-1:N; N2<-4;
>...
>#initial value
>x <- matrix(0,N2,1); # x(0|0)
>P <- diag(N2); # P(0|0)
>ypre <- matrix(numeric(N),1);
>Spre <- matrix(numeric(N),1);
>K <- matrix(0,N2,1);

xなどの初期化では深く考えずに、これをオマジナイ
として、毎回使用でしていますが(N,N2などは変えて)、
やはり、微調整した方がよいでしょうか。

よろしくお願いします。
>”Qには状態ノイズの分散(正規分布なら1)を、Rは0でも1でもよい”

うーんと、カルマンフィルタは、いい加減にノイズ設定しても、動作するの
ですが、いい加減でいい場合と、そうで無い場合があると思います。

と言うか、本来はノイズ設定こそが、最も微妙な話なのですが、どうしてかと
言えば、カルマンフィルタは、こういうノイズがある時に、適応化してくれ!と
して使うものだからです。

つまり動作するかどうかは、いい加減でもいいかも知れないけれど、こんな
ノイズがあるのが実際の話に即していると思うと言うのであれば、それに
忠実に設定するものです。

また初期値ですが、これは比較的ずさんでも、そのうち追従を始めるように
設定してあれば、結局はどうでもいい事のようにも思います。

一般に実値に近い値か、ノイズ初期値(P)なんかは無限に大きくしてやれば
割は悪くても、まぁ結局は収束して来ると思います。

最終的に、尤度が問題になるのであれば、そうなるようにノイズが最適な系に
してやる必要があります。

またARでRがゼロなのは、これは原理的に退化してるものです。

と言うわけで、何をしたいかによって、最終的に調整方法が異なるわけです。

>こんな ノイズがあるのが実際の話に即していると思うと言うのであれば、それに
>忠実に設定するものです。

>また初期値ですが、これは比較的ずさんでも、そのうち追従を始めるように
>設定してあれば、結局はどうでもいい事のようにも思います。

ノイズの設定はカルマン予測の精度に影響を与えるので正確に、
初期値は収束期間に影響するが、いずれ収束するので大まかで良しということですね。

ありがとうございました。
疑問点がまだ山のように。。。

>Spre[t]<-sqrt(H%*%P%*%t(H) + R);

sqrtは教科書的定義にはないのですが、これは計算の便宜上のためでしょうか。

>左図、右図

ypreと共にSpreを予測していますが、Spreに収束して欲しいのが本音だと思いますが、
もし、収束しなければ、xなどの初期値かノイズやその他の何かの定義が
良くなかったということでしょうか。(収束するSpreがあったり、サインカーブのようなSpreもあったり)

また、ARpreの推移も図に出力している場合があって、この用途というか目的が
あると思いますが、その点よく理解できていません。
sqrtが付いているのは、元々拾ってきた時点で、そうだったからなのですが
もし、私が初めからやるにしてもsqrtにします。

これは予測分散をsqrtしてるわけで、つまり予測値とその標準偏差を比較
するほうが、結局は把握しやすいと思うのですよね。

予測値が10円で、標準偏差が10円だと、直感的にpnorm(10/10)なので
8割以上は勝てるんだな?とか判るわけですが、これが分散だと2乗して
あるので比較しにくいわけです。

相場で使う場合、予測勝率?と言うか、平たく言えば、自信の程はどうですか?
と言うのを求めるような話だと思います。

つうわけで

>preと共にSpreを予測していますが、Spreに収束して欲しい

別にSpreに収束して欲しいわけでは無いんです。

>平たく言えば、自信の程はどうですか? と言うのを求めるような話だと思います。
>別にSpreに収束して欲しいわけでは無いんです。

なるほど、カルマンで勝率が予想できるのはこのためですね。
目からうろこです。温泉先生、ありがとうございます。

>ARpreの推移も図に出力している

言い方が良くなかったですね。ar係数の推移図ですね。
ar係数がちゃんと更新されているんだよっていうのを
確認したいために表示していると勝手に解釈しています。

>F
>|1,-1,1|
|>1, 0,0|
|>0,0, A|

>Aは1として

>H
>|1,0,0|
>にします。

他の人が書いたソースコードに含まれるF、H等の定義を見て状態行列xに含まれる
変数が分かる場合もあれば、分からない場合もあって(特に変数が多い時)、分からなければ
そのシステム系が何を記述しようとしているのかの説明をどこかで見つけて理解して推測する
しかないように思えます。(この点が結構苦手です。)

>Aが1なので結局トレンドを取り出すわけですが、先ほどの打消しが効いているので、
>ループはこのまま計算を回しておいて、x[3]を本当のトレンドとすると、これはトレンドの
>持つランダム成分の抜けたトレンドが取り出せます。

>更に速度項も付け足す事も出来るので、なかなか、おしゃれなトレンド推定になります。

>トレンドの日変動(ランダム成分)が無いトレンド抽出法と言う事です。

上の例で、"トレンドが打ち消し"、"速度項も付け足す事も出来る"とあるので

x=t(Tn,Tn-1,?Tn)

という風に解釈しました。自信がないな(汗

よろしくお願いします。
>x=t(Tn,Tn-1,?Tn)

はい、あっていると思いますけど??
返事遅れて申し訳ございません。

先生のコメントなどがなかったら、F,Hの定義だけではきっと
トレンド打ち消しモデルと気づくのはかなり困難だったんだろうと思います。
(カルマンコードは自分で書いて使うことを考えれば
そんなことを心配する必要がないですが...)

>これは強制的にランダムウオークを仮定しているので0に
>しているわけですが、実際の時系列がランダムウオークに
>近くなる場合、Tt - Tt-1は0に近くなると言う事でもある
>わけ。

>つまり、トレンドそのものを打ち消しあう関係。

>この値が、どちらかに振られると言う事は、時系列は
>打ち消ししても、更に勾配を持つと考えたほうが妥当
>だよと言う事ですが、和分次数が不足気味なのでは?
>と言う事。

>トレンドとは、ランダムノイズの乗った、だいたいの値の
>事である。と定義しているわけです。

F
|1,-1|
|1, 0|

>とすれば、トレンドの打ち消しになります。
>早い話が、トレンドの持つランダムノイズを打ち消すモデルです。

トレンドにはランダムノイズが乗っているので

Tn-1 -Tn-2

はトレンド自身とトレンドが持つランダムノイズを打ち消し、勾配だけが
残るということだと理解していますが、トレンド打ち消しモデルなのに
ランダムノイズも消しちゃうの?というしっくりこない感覚がありました。

H = |1 0|

とすると、Yt は速度だけによって決まるということですが、
トレンドはあるけど、ランダムノイズもあるけど、それを排除して、
速度だけを売買シグナルにしたい人向きってことですよね?
>それを排除して、速度だけを売買シグナルにしたい人向きってことですよね?

はいそうです。

まぁ、そんな感じで、あれこれ、思ったような事が出来るのでは
無いでしょうか?

思ったようにマスが埋まり、ノイズ調整できれば、動的な表現が
出来るようになると言う事です。

環境がどんどん変化していくような時系列では、動的な表現が
出来るのと、出来ないのでは安心感がまるで違うと思いますよ。
カルマンフィルターにいろいろな理論を入れて動的制御できるのは、
半世紀前の発明とはいえ、面白いですね。

テクニカル信者に、”動的移動平均線、ポリンジャーバンドを開発したぜ”って
冗談が言えるかもしれません。あせあせ

>予測値が10円で、標準偏差が10円だと、直感的にpnorm(10/10)なので
>8割以上は勝てるんだな?とか判るわけですが、これが分散だと2乗して
>あるので比較しにくいわけです。

例として、ypre予測値が-0.01 〜 0.01の範囲だとして、Spreが10で収束している
場合って、pnorm(0.01/10)は改善されないので、そもそも初期値設定やノイズ
設定がまずかったというように解釈するべきでしょうか?それとも、使用した
時系列ではその程度の予測しかできないっていうことでしょうか。

また、逆にypre予測値が大きすぎて、Spreが相対的に小さすぎると常時
勝率100%なんていうこともあって困惑しています。

Spreが収束してしまうと、勝率は予測値しだいってことになりますね。
>設定がまずかったというように解釈するべきでしょうか?

基本的には、あるべきノイズの状態での話なので、そういう意味では
あるべきノイズにしないのが悪いと言うことではあるんですが。。

けど、まぁ、現実問題あるべきノイズって、幾らなのか?は、本当は
判らないわけです。

ただし、たとえば尤度が最大に推定されるノイズとか、そういう都合の
良い限定は可能なわけで、この問題であれば、勝率が現実に合致する
ノイズと言うことだろうと思います。

単にカルマンが追従すれば良いと言うのではなく、何か目的によって
合わせ込みたい場合は、それに合わせたノイズの最尤推定が必要に
なります。

まぁけど、これがoptimを使うと、涙が出るくらいトロくて、ムカつくんですが。。(ぼそ
>単にカルマンが追従すれば良いと言うのではなく、何か目的によって
>合わせ込みたい場合は、それに合わせたノイズの最尤推定が必要に
>なります。

Rの値を大きくすると、Spreは大きくなり仕方ないのですが、
過去推定?したような、平坦化?したような予測結果に
なっていて、これをKalman_smootherとでも呼んでもいい
のかなって思います。

平坦化カルマンではないはずなのに、それに近い?結果になっているような。。。
>これをKalman_smootherとでも呼んでもいいのかなって思います。

いえダメです。

>平坦化カルマンではないはずなのに

これをスムーサーと呼びます。

>Rの値を大きくすると、Spreは大きくなり

Rは、例えばARMAであれば、ARMAそのものが、
どのくらいノイジーかと言うことです。

つまりRが大きいと言うことは、それだけ相対的に
ARMAで作られるバイアス項が小さい事を
意味するわけですが、これは結局は、鈍感な
動きになります。

どうして鈍感になるかは、カルマンゲインの計算式を
見れば、直感的に、わかるのでは無いでしょうか?
温泉先生、一連の質問に対するご回答ありがとうございました。

徐々にカルマンフィルターについて組み立てられるように
なってきたかな?と思います。今後も分からない点が
出てくると思いますが、ちょくちょく質問を書いていきますので、
ご指導の程よろしくお願いします。
檜木さん、optimを使用しないQ,R最適化コードは本当に勉強になります。
まだ、完全に理解していない点もあって、現在いろいろ試しているところです。

>「Sがなんで一定になっちゃうんだろう、 おかしくない?」

こういう使い方が正しいのかは分からないですが、
Spreをポリンジャーバンドのように使って、動的に動いて
くれたら、面白いかなって思ってたら、Spreが収束して、
古典的なテクニカルとそれほど変わらなかった。。。

実践ペアトレーディングのどこか後ろの章にそんな感じ
の例があったような、ないような。

カルマンをはじめ、他のSSA, KSVMやHMMなどもそうですが、
自分で作ったものの結果が正しいかどうか、が分からなくて
不安になります。それっぽい結果がでても確信が持てない
のが自分の悩みです。あせあせ(飛び散る汗)
つか本来はQもRも時変なのが、実際の話の筈ですよね?

QとRが一定であれば、カルマンゲインも一定に収束するわけで
そうなれば、状態空間表現とは言っても、結局は普通のと
大差ない話になるわけで。。

現実問題のRは、ボラティリティに依存するんだとするとしても、
Qは何に依存するかって結局は、尤度にしか依存しないわけで。

尤度が時期によって変化していくところをQに与えると言うのは
状態推定誤差がQに依存するような話にするしかないんでしょう。

まぁ、粒子やシグマポイントが、結局そういう事をしてるわけですよね?

XtとXt-1の差を、garchしてやれば良いような気もするんだけど、
厳密には、どこかおかしいような気がするんです。

確かにこれで、状態変化のノイズではあるんだけど、ではこれが
尤度を考えても実際にそういうノイズか?と言われればたまたま
状態変化が、そういうノイズ過程を持ったと言うだけで、それが
尤度が上がる根拠は無いわけで。

では、このノイズに係数を掛ければ、なんとかなるか?と言われれば
確かに、この係数を調整すれば尤度は調整されるんだとは思うけれど
それで、本当の状態ノイズなの?と言われれば、いくぶんマシにには
なる事もあるかもしれないけど、根拠の無いのは同じでしょう?

たとえばARであれば、R=0なわけで、ではボラティリティはと言うと
結局はQに吸収されている筈。

だとしたら、Xtのgarchを作り、これを係数掛けてQにしてやれば
本当にそれで、性能アップするんだろうか?

こうすれば調整項は、係数だけになるので、調整するにしても話は
早いわけで。

どうなんだろうね?

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Rで経済時系列 更新情報

Rで経済時系列のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング

mixiチケット決済