AIとFXの奮闘記!FXの予想にはLSTMが最適だと思う(正解率88%を達成?)

こんにちはー。管理人のピヨ猫でーす。

記事の説明です

AIでFXの予想にチャレンジしてますー。AIでFXってちょっと興味あるなと思ったら読んで貰えると嬉しいです。
本日はFXの予想にLSTMを使ってみた話です。AI(機械学習)のツールにはSONY Neural Network Consoleを使用しました。

1.LSTMで予想した結果が脅威の88%?

LSTMでFX予想した結果が脅威の88%?

LSTMによるFXの予想結果です。検証回数は40回強です。
FX為替予想結果

なんと、正解率が88%です!!

驚き

19/5/22記 【重要】ここに記載の正解率は現状出ません。現時点で50%前後になり、ランダムに予想するよりは良い程度です。現在、学習モデルを見直し中ですm(. .)m
詳しくは後日記事にしようと思いますが、学習データの一部に未来の値が入ってしまっていました。
なお、本記事に記載のLSTMのやり方などは、これからAIやってみよう!!という方に参考になると思いますので、今のところこの記事は残したままにします。

どういう予想をしたか?

30日分の終値をLSTMで学習し翌日の終値が「上がる」か「下がる」か「変わらない」かを予想しました。
正確には、終値を使うとその日の値動きが分からないので、当日の変動幅=当日終値-前日終値 を30日分用意しました。

LSTMって何という方はこちらを参照ください。

こんにちはー。管理人のピヨ猫でーす。 機械学習を使って予測がしたくてSONY Neural Network Consoleでディープラーニン...

本当に88%の正解率なのか?

過去に当ブログでFXの正解率が80%達成したと記事にして実は違っていたということがありましたので、今回は結構疑って入念に検証しています(;^_^A

適合率や再現率も問題ないか?

正解率が良くても安心出来ません。例えば8割のデータが「変わらない」で2割のデータが「上がる」「下がる」の場合、全て「変わらない」と予想すれば正解率が80%になります。
なので、適合率や再現率も検証しました。
FX為替予想結果
「下がる」「上がる」の適合率は脅威の100%です。これは「下がる」「上がる」と予想した場合に100%正解しているということです。

適合率や再現率って何?という方はこちらを参照ください。

こんにちはー。管理人のピヨ猫でーす。 SONY Neural Network Consoleで機械学習をしてるんだけど、学習精度が良いかどう...

予想したい未来のデータを入力データに与えていないか?

機械学習(AI)の学習は過去基準日のデータを使います。
AIには基準日より前のデータを渡し、基準日より後の結果を予想させますが、もし訓練データに基準日より後のデータを渡していると、AIが未来を知っていることになりますので検証になりません。

↓↓↓ 過去にやっちゃいました(-_-;)

こんにちはー。管理人のピヨ猫でーす。 ※ 本記事のタイトルの的中率80%は検証方法不足でしたm(__)m。 詳しくは↓↓↓ なお、機械学...

今回は未来のデータは入っていません。用意したデータは以下の通りです。
FX為替予想結果

  • 入力データ(X) = (基準日, 変動幅)×30基準日
    変動幅 = 当日終値ー前日終値
    基準日 = 為替予想する前日の基準日 ~ 為替予想31日前の基準日
  • 出力データ(y) = 翌日終値ー当日終値
  • 上記入力データ(X)と出力データ(y)のセットを基準日を1日ずつ過去にずらして30セット用意した

検証回数は十分か?

検証回数は40回強です。もう少し検証回数を増やしたいところなので、ただいま絶賛追加検証中です(-_-;)

同じようなデータで検証していないか?

詳しくは後述しますが、40回強の検証は予想する基準日を30日間隔でずらしており似通ったデータで検証はしていません。

何故LSTMを使ったか?

結論から言って、1つ先の未来を予想するだけならLSTMは高い精度を出しそうだったからです。
https://syuuai.hatenablog.com/entry/2019/04/28/181203

ただ、LSTMは1つ先の未来を予想するには良いですが、2つ3つ先の未来を予想することが困難です。
https://syuuai.hatenablog.com/entry/2019/04/30/195049
なので、一度学習したら基準日を変えて学習済モデルを使いまわすということが出来ません。
例えば2018/1/1~2018/3/31の為替データが学習した学習済モデルは2018/4/1の為替レートを予想するのには有用ですが、2019/1/1の為替レートを予想するには有用ではありません。2019/1/1の為替レートを予想するには2018/10/1~2018/12/31の為替レートで再度学習を行い学習済モデルを作る必要があります。
なので、LSTMの有効性を検証するには何回も基準日を変えて学習を行う必要があり、割と手間なので学習を何回も繰り返さなくて済む方法を考えていましたが、どうにもうまくいかず、今回、自動で学習を繰り返す方法を構築しました。

2.LSTMでFX予想を行う具体的な方法

使用したツール

SONY Neural Network Consoleを使用しました。
SONY Neural Network Consoleについてはこちら↓↓↓

こんにちは。管理人のピヨ猫でーす。AIを作りたい。世に広めたい。応援よろ(^○^)今回は2017年頃に公開されたSONYのAI(機械学習)の...

LSTMによるFX予想の仕組みの全体構成

LSTMによるFX予想の仕組みの全体構成

発想はシンプルです。直近60日の為替データを30基準日に分割します。
1基準日のデータセットは以下の通りです。

  • 入力データ(X) = (基準日, 変動幅)×30基準日
    変動幅 = 当日終値ー前日終値
    基準日= 為替予想する前日の基準日 ~ 為替予想31日前の基準日
  • 出力データ(y) = 基準日 + 1日後の変動幅
  • 上記入力データ(X)と出力データ(y)のセットを基準日を1日ずつ過去にずらして30セット用意した

これをLSTMで学習します。

ネットワーク構成

LSTMによるFX予想のネットワーク構成

ネットワーク構成もシンプルです。入力データをLSTMユニットに食わせてAffineレイヤー(全結合レイヤー)で一つの値(翌日の為替変動幅)に変換しているだけです。

基準日を変えて学習を繰り返す仕組み

前述の通りLSTMで学習した学習済モデルは1基準日に対してしか有効ではありません。
他の基準日で為替予想をしたい場合は、再度、学習を行う必要があります。手動で何10回も学習を行うのは現実的ではないので、VBAでツール化しました。

詳しくはこちら↓↓↓

こんにちはー。管理人のピヨ猫でーす。 Neural Network Consoleで機械学習をしてみているんだけど、Neural Netwo...

3.今回の結果の評価と次回試したいこと

検証結果

検証回数は40回強と前述しましたが、実際には100回強の検証を行っています。40回強と申した理由は後述します。
以下が検証結果の詳細です。
※ 下表の変動幅は翌日終値-当日終値です。当日終値-前日終値は間違いです。後で画像直しますm(__)m
LSTMによるFX予想の検証結果

  • 学習精度 ・・・ 学習時のエラー率です。
  • 分析精度 ・・・ エラー率の大小で分類したものです。経験上、エラー率が0.01以上の場合はうまく学習できていないので、うまく学習出来てそうなモデルとそうでないモデルを分類しました。
  • 変動幅 ・・・ 値幅(翌日終値-当日終値)を正規化した値です。上がる/下がるだけでなく変動幅の予想させました。
  • 上がる/下がる ・・・ 変動幅を3分割したものです。下がる = 変動幅が~0.45、変わらない = 変動幅が0.45~0.55、上がる=変動幅が0.55~
    変動幅は正規化しているので0.5が値動きなしで0.5以下はマイナス、0.5以上がプラスです。
  • 参考(X日前の変動幅)・・・ 基準日のX日前の変動幅です。AIが1日前の変動幅を参照するだけで、たまたま1日前と当日の値動きが同じ場合に正解しているだけだったら困るなと思い、X日前の変動幅を確認できる様にしました。

エラー率が高いケースは除外した

実は正解率88%というのはエラー率が高いケースを除外したものです。

エラー率が高いということは正しく予想出来ないとAIが判断したものなので、その予想結果は検証対象から外しました。
実はAIが正しく予想出来ないと判断したものは全体の6割に及びます。

◆ エラー率が高いケースも含んだ学習精度
FX予想の学習精度
FX予想の学習精度

ごらんのとおり、エラー率が高い場合も含んだ正解率は61%しかいきませんでした。
ですが、FXの売買にあたっては予想出来ない場合はポジションを取らなければ良いので、正しく予想出来ないことがあることは問題ではないと思います。
問題は予想精度が高いのか低いのか分からない予想を使ってポジションをとってしまうことです。

エラー率が引く(AIが自信がある)場合の正解率は非常に高い

前述の通り、エラー率が高いケースが全体の6割ありますが、エラー率が低い4割のケースの正解率は非常に高く、本ブログのタイトルの通り88%を達成しました。

FX予想の学習精度

急激な値動きにも対応できている

単純に前日の値動きを参照しているのではなく、急激な値動きにも対応できている様でした。
FX予想の学習精度

まとめ

もっと検証回数を増やしてみないと余談を許しませんが、良い結果が出たと思います。
LSTMは1日先しか予想できないので他の方法を色々試していましたが、結局のところ連続データの予想にはLSTMが有効そうでした(;^_^A
注)1日以上先の値動きについては詳細な値動きは予想出来ないまでもトレンドを予想する程度は可能だと思います。

これから、検証回数を増やすとともに、終値の変動幅以外に高値や安値を混ぜたらどうなるのかも試してみたいと思います。
また、過去日ではなく実日で検証をしていきたいと思います。
実日で検証するには為替データを毎日自動で取り込んで、自動で学習する仕組みを作らないといけないんだよな・・・(;^_^A

宜しくお願いします!!

宜しくね


広告




スポンサーリンク
広告




広告




シェアする

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

フォローする

スポンサーリンク
広告