機械学習で「勝てるFXトレード」ができるのを実践してみたいと思い、頭で考えるだけでは整理できなそうなのでメモしていきたいと思います。
※このメモの内容を元にFXトレードを実践した結果については、筆者は一切の責任を負いません。

・機械学習の方法については「この講座」「この書籍」で学んだ方法をアレンジしながら作っています。

※どのような技術を用いているのかは書いていきたいと思いますが、投資関連のプログラムは、不正な利用(公開されているプログラムの内容を利用して勝手に販売するなど)の可能性があるため、ソースコードは公開していません。

利用しているプログラム言語・フレームワークなど

プログラム言語は、データ分析用途で用いられることの多い「Python」を利用し、
機械学習フレームワークは「Tensorflow」を利用しています。
機械学習の手法は「リカレントニューラルネットワーク(RNN)」を利用し、為替データは、2010年3月中旬からの「終値」をベースとしているため、LSTM(Long Short Tem memory)を利用し長期時間依存性を考慮した予測を行っています。

日々の予測のワークフロー

  1. 為替相場は24時間変動しているため、利用している証券会社の終値(Bid)の値を元に学習データを作成。

  2. Tensorflowで次の日の終値が「上がる or 下がる」を予測

という非常にシンプルな手順です。

実際に試してみたところ、勝率が高いからといって、収益が必ずプラスになるとは限らないことがわかりました。

例えば、2017年の年末の相場を見てみると、

日付 終値 予測結果 収益(1万通貨を取引)
2017/12/29 112.682 ✖️ -3890
2017/12/28 112.867 1850
2017/12/27 113.332 4650
2017/12/26 113.22 1120
2017/12/25 113.29 700
2017/12/22 113.323 330
2017/12/21 113.31 ✖️ -130
2017/12/20 113.376 660
2017/12/19 112.884 ✖️ -4920
2017/12/18 112.538 ✖️ -3460

という予測結果と収支でしたが、12月18日〜29日の10日間の取引予想は、60%の正解でしたが、収益は -3090円 となっていました。

予想の正解率が高くてもポジションを立てるだけでは損失が発生してしまいます。

もし1000円の損切り決済注文を行なっていた場合は、

日付 終値 予測結果 収益(1万通貨を取引)
2017/12/29 112.682 ✖️ -1000(損切り)
2017/12/28 112.867 1850
2017/12/27 113.332 4650
2017/12/26 113.22 1120
2017/12/25 113.29 700
2017/12/22 113.323 330
2017/12/21 113.31 ✖️ -130
2017/12/20 113.376 660
2017/12/19 112.884 ✖️ -1000(損切り)
2017/12/18 112.538 ✖️ -1000(損切り)

となるため、収益は +12180円 となります。

機械学習で予測をした場合でも「損切り」は必ず入れておくことが収益増には必須と言えそうです。

日々の機械学習の予測結果は、

AI(人口知能)・システムFXトレード実践ブログ

で公開しています。

機械学習はPython一択と思いこんでいたのですが、案外そういうわけでも無さそうです。

「機械学習」ができるプログラミング言語とは?

また何か気づいたことがあればメモしていきたいと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.