これからの「お金」の話をしよう

(旧 システムトレードのススメ)

使いこなせなかった技法

f:id:uki-profit:20170814220040j:plain

「カルマンフィルタ」というものがあります。

元々はロボットアームなどの制御において、刻々と変化する各部の状態(アームの節の位置や角度など)を推定するために作られたものです。カルマンフィルタの用途は3種類あり、過去から現在までの軌跡を推定する「平滑化」、現在の状態を推定する「フィルタリング」、そして一期先の状態を推定する「予測」となります。過去のコラムの「システムの定義」で触れた「オブザーバ」の役割を担うものです。

we.love-profit.com

ここまででお察しの通り、この手法を「時系列分析」に応用する手法が存在します。DLM(Dynamic Linear Model):動的線形モデルという手法です。系の状態を文字通りダイナミック(動的)に推定するもので、エクスポージャーβの時系列遷移を推定することができます。

 

ここで一般線形モデル、ダイナミックモデル、カルマンフィルタについてそれぞれ説明しておきます。基本的な式は以下であり、それぞれのモデルで異なるのはαとβの計算期間と計算方法です。

 R=α+β×f (α:スペシフィックリターン、β:ファクターエクスポージャー)

(1)一般線形モデル

αとβの計算期間が固定されている(特定の日時から特定の日時までの)モデルです。例えば計算期間は2001年~2015年であり、得られたαとβで2016年以降トレードするモデルです。αとβの求め方は最小二乗法に依ります。

(2)ダイナミックモデル(ローリングウィンドウモデル)

このモデルではαとβの計算期間の幅を一定とし、直近の値で更新しながら計算します。12ヶ月ローリングの場合、直近12ヶ月のデータでαとβを計算し翌1ヶ月をトレードするようなモデルです。この場合、モデルの更新頻度は月1回であることが多いです。一般線形モデルと同じく、αとβの求め方は最小二乗法に依ります。

(3)カルマンフィルタ

計算期間は手持ちのデータの始めから直近のデータ(デイトレであれば前日のデータ)まで全て使用します。カルマンフィルタは逐次計算であり、一期前での予測誤差を修正するようにフィードバックが掛かります。当然ながら初期値により計算結果が変動し、推定値が真値に近づくまである程度の時間が掛かります。

 

以下は、各モデルで計算(推定)したエクスポージャーβの遷移の様子を表すグラフです。 

161202-1.png

まず(1)一般線形モデルでは、期間を通してエクスポージャーβは一定の値となります。続いて(2)ダイナミックモデルでは、期間中にβが変動します。かなり大きな触れ幅を持っており、各年代でときには符号が逆転することが分かります。しかしその平均値は(1)と概ね一致することになります。またローリング期間は5年ということが読み取れます(パッと見ると分かる人には分かります)。最後に(3)カルマンフィルタでは、図のように滑らかにエクスポージャーが変化しています。最も注目すべきは、(2)に対して(3)のほうが先行して変化していることです。

これは平滑化によってこのような特性が表れていると考えられますが、「カルマンフィルタではエクスポージャーの変化をいち早く検出できるのではないか?」などと期待させてくれるグラフとなっています。

 

さて結論から言うと、私の検証ではカルマンフィルタによる予測力の向上は得られませんでした。カルマンゲインの調整やタイムフレームの検証などまだまだ検討の余地はあったのですが、中途半端な状態で早々と切り上げ、他の検討へ移ってしまいました。結局のところ、私には分不相応な技法であった気がします。

そもそもトレーディングエッジ(要するにアノマリ)の取り方として2通りしかなく、長期間で穏やかな傾向が現れるロバストな指標を採用するか、もしくは直近で具現化した特徴が顕著な指標をアップデートしながら採用するかしかありません。

「後者にはカルマンフィルタしかない!」と意気揚々と取り組みましたがこの有様です。どなたか詳しい方、知見を共有していただけると助かります。