機械学習を使ったFX予想 2018年7月31日
こんばんは、新米データサイエンティスト(@algon_fx)です。7月は5層の基本的なニューラルネットワークでのFX予想に夢中になっていました。
先週末にニューラルネットワークと戯れた結果、テストデータで今まで見た事のないMAEを叩き出しました!今日は本業が忙しかったので、トレード出来ませんでしたが、明日から本番で少し運用してみます!
21時点の特徴量で本日22時ドル円終値の予想レートは「111.20345」です。
— 新米データサイエンティスト (@algon_fx) 2018年7月23日
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つを主題で進めていきたいと思います。
FX系のツイートを学習させてFX予測する論文を勉強しまくってるんですが・・これは面白い!!自然言語処理はあまり得意じゃないけど、次はこっちの方向性のモデルを挑戦してみようかと思います。#FX予想
— 新米データサイエンティスト (@algon_fx) 2018年7月28日
あと、これはまだ検討中ですが、定期的にブログで私のモデルが予測したレートを配信していこうと考えています。例えば「明日の主要通貨の終値・高値・安値」など。あと、私がトレードしている時は、余裕があれば随時予想レートを流してみようとも検討中です。(例:15分後のドル円の終値は〇〇〇など)
以上となります!ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!
【人気記事】
ディスカッション
コメント一覧
まだ、コメントがありません