某大学生の機械学習日記

趣味はでぃーぷらーにんぐ

【R】仮想通貨の時系列解析(2)

導入

 Bitcoinの価格データ(2011/8/27-2018/2/22)を元に解析をした。仮想通貨を含む証券データは様々な要因から変動しているが、価格データ単体からどれほど情報を抜き取れるか興味があったのでこれを題材とした。
 仮想通貨の時系列解析(1)~でデータの記述を、(2)で状態空間モデルでのモデリングをする。時系列解析については過去の記事(時系列解析をゆるっと解説(1),(2))を参考にしてもらいたい。

目的

ビットコインの価格変動のトレンドを得ることを目的とする。

状態空間モデル

モデルの選定理由

金融データは非定常であり、所々でトレンドが変化している。その変化に柔軟に取り組めるよう、またデータに傾きを持たせたままモデリングを行いたかったため状態空間モデルで分析をすることにした。状態空間モデルとは観測された値とは別に状態変数を定義して、時系列を状態変数の遷移とみなすことで、前記事にちょっと詳しく説明されているので参照してほしい。様々な状態空間モデルをfittingしてそれぞれをAICで評価することにする。また、仮想通貨の時系列解析(1)で前処理はすませてあり、可視化がわかりやすいように2000以降のデータを扱っている。


トレンドモデル

$$ y_n = t_n + w_n $$ 観測値y_nがトレンド成分t_nと白色雑音のw_nで以上の式であらわせるとしたモデル。統計数理研究所のWebDecompを用いて推定した。
f:id:knto-h:20180731222059p:plain:w150
これよりトレンドモデルにおいては次数が1のときに一番良いAICをとる。このときのトレンド曲線は以下のよう(赤線)になった。この曲線からわかるようにトレンドモデルを当てはめたら価格がちょっと激しく変動したのにつられて曲線も多少連動しているのがわかる。また、ビットコインの価格データの上下変動が激しいため、トレンド成分だけでそれに対応しようとするとその分激しいトレンドが推定されてしまった。
f:id:knto-h:20180731223646p:plain

トレンドモデル+定常ARモデル

$$ y_n = t_n + p_n + w_n $$ 上で挙げた問題点を解決するためトレンドモデルにAR成分p_nを取り入れた。トレンド成分周りの変動を推定するモデルを組み込むことでより滑らかなトレンドを推定できるようにした。トレンド次数を1に固定したままAR次数を変えて適切なモデルを探った。
f:id:knto-h:20180731230648p:plain:w150
結果からAR次数は2が最適であることがわかった。これを前回のグラフに青線でプロットした。滑らかな曲線になったのがわかる。
f:id:knto-h:20180731232509p:plain

考察

金融データを今回取り扱ったわけだが、要因がはっきりしておらずノイズが多く含まれるデータには単一のトレンドモデルよりもトレンドモデル+ARモデルでノイズ成分も推定した方が結果が良かった。ちなみに、元データに対して対数変換をかましたものとそうでないものに状態空間モデルを当てはめたところAICが1000以上変わった。つまり前の記事で施した前処理は少なからず効果があったようだ。

参考サイト: Stanで推定するローカルレベルモデル | Logics of Blue