日: 2018年4月8日

Keras(LSTM)による株価予測モデルはイマイチ

Keras(LSTM)による株価予測モデルはイマイチ

昨日日経平均株価の予測をやってみたので、今度は同じ手法で為替(ドル円)を予測できるかチャレンジしてみた。

こちらのサイトから1分足のデータがダウンロードできるので、これを使用。昨日と同じように、対数を取って、差分を取って、CLOSEの標準偏差が1になるように調整した。

データ量があまりに多く、MemoryErrorが多発するので、学習・テストデータを直近の10万件に絞った。(Azure Notebooksは4GBしかメモリがない)また、今回は前回と違って、CLOSEだけではなくHIGHとLOWも使った。

で、24時間分の1分足データを入力として、1分後のHIGHが0.5(標準偏差の半分)よりも高くなるかどうかを予測するモデルを作成した。

結果は失敗。なぜか常に高くなると予測するモデルになってしまった。

入力データの時間量を増やしたり、LSTMの次元を変えたり、データ量を増やしたりしたが、結果は変わらず。正解ラベルの数は低くなる方が多いので、常に低くなると予測するのであればまだわかるのだが・・・。どこかバグっているのかもしれない。

で、ふと昨日の結果もあやしいなと思って混合行列を作ってみたのが上の画像。予想通りおかしなことが起こっていることがよく分かる。モデルはほぼ常に「+1」を予測しているが、真実の値は他のクラスにも散らばっている。

どうもこのモデルは、わからない場合は「+1」を返すようになっていて、たまたま正解に「+1」が多かっただけのようだ。

世の中そう簡単に儲けられる話がある訳がない。