機械学習を使ったFX予想 2018年7月31日

使っているFX会社はどこ?
テクニカル分析用(チャートが使いやすい) → DMM FX
Python API用(FX APIはここしかない) → OANDA ジャパン
デイトレ用(スプレッドがとにかく狭い) → SBI FXトレード

こんばんは、新米データサイエンティスト(@algon_fx)です。7月は5層の基本的なニューラルネットワークでのFX予想に夢中になっていました。

FX予想の精度指標はMAEを使っています。MAEはMean Absolute Errorの略で日本語では平均絶対誤差と言われます。とても簡単に言うと、実際のレートが110.150円で機械学習モデルが予測したレートが110.160円の場合、その誤差である「0.1円」を指標化した物です。

つまり予想と実際のレートが開けば開くほど「MAEは高い=予想はダメ」。逆に予測レートと実際のレートが近ければ近いほど「MAEが低い=うっひゃーー儲かる!」ってわけです。

7月は時間があればクラウドのサーバーでひたすらモデル訓練を行い、ひたすらMAEと向き合いました。今月に加えた改良としては下記の通りです。月半ばくらいから、実際に本番トレードで試してみようと思い、諸々調整も加えました。

訓練データを大幅に増やす

最初のうちは計算コストもしんどいので、数万のデータで学習をしてはテストデータで確認しながらチューニングをします。本番トレード用のモデルはAPIをガンガン回して学習させるデータを膨大に増やします。

特徴量を増やす

特徴量を大幅に増やしました。一般的なテクニカル指標は当然のこと、様々な期間での値動き幅など、役に立ちそうな特徴量を色々と考えて追加しました。ニューラルネットワークでは特徴量の重要度が解らないので、実際に役に立っているのかどうかは不明ですが、それなりにMAEも改善していきます。

様々な期間のレートを予測する

機械学習FXトレードにも少しづつ慣れてきて、一つ学んだことがあります。一つは機械学習の様々なアルゴリズムを実装して使い分けすること。(参考:以前はLSTMでFX予測が私の中で主流でした)そして二つ目は様々な期間のレートで予測することです。

つまり1分後の予測、2分後、5分後、10分後、1時間後、 6時間後、1日後と言った具合で色々なスパンの将来のレートを予測することで、実際のトレードで非常に役に立ちます。

ってことで、少し時間が取れたので今日の20時から21時半までの1時間半、トレードをしてみました。下記がその期間中にとったポジションです。トレードの口座はPythonのAPIが使えるのでOANDAのプロコースでやってます。

まだまだ試行錯誤の段階ですので、ドル円のみで短い期間でのトレードを10万通貨毎にやりました。結果から言うと、1時間半で10オーダー入れて、5勝5敗で6700円のプラスでした。

後ほど変更が必ず必要になるので今の段階ではAPI経由でレートをストリーミングしながら、手動で前処理(正規化やら特徴量の計算)を行なって、訓練済みモデル(7つ使っています)へ特徴量を投げて予測レートを取得しています。

それぞれのモデルにも癖があり、それらを考慮した上で新規注文と決済を裁量で判断してトレードをしました。

まだまだ改善の余地は腐る程ありますので、8月の目標としては・・・

(目標1)ニューラルネットワークを使ったトレードを洗練させる

(目標2)Twitterを使った自然言語処理のFX予想モデルを試してみる

の2つを主題で進めていきたいと思います。

あと、これはまだ検討中ですが、定期的にブログで私のモデルが予測したレートを配信していこうと考えています。例えば「明日の主要通貨の終値・高値・安値」など。あと、私がトレードしている時は、余裕があれば随時予想レートを流してみようとも検討中です。(例:15分後のドル円の終値は〇〇〇など)

以上となります!ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!

【人気記事】

私の機械学習の開発環境&トレード環境

FX予想

Posted by algon