FX予測の機械学習の開発とトレードの環境

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

こんばんは、新米データサイエンティスト(@algon_fx)です。初めての方へ」のページでも、私がなぜブログを運営しているのかを記載していますが、その理由の一つとして「トレーダー」や「機械学習エンジニア」の諸先輩がたとの交流があります。

非常に有難いことに、お問い合わせフォームやTwitterのダイレクトメールから、諸先輩からのご連絡を頂く事も増えてきました!本当に嬉しいのですが、、最初の10ターンくらいのやりとりが…毎回同じなんです。(笑)

決して、そのやりとりが面倒という訳ではないのですが、おそらく機械学習を使ってFX予測をしている人であれば、最初に気になるポイントは偏るのかなと。

という事で、まとめます。私よくが聞かれる「質問」や「機械学習の開発環境」と「トレードの環境」を(笑)

トレードで実際に利益は出ているのか?

出ていませんプロジェクト進捗表でも随時更新をしていますが、現在の段階は様々な特徴量を検証したり、訓練の時間軸を検証したりと、どちらかと言えば「勉強期間中」の状態です。原則として、今はOANDAのプロコースで100〜10,000通貨単位で試しています。

トレードの環境は?

OANDAのプロコースを今はメインに使っています。なんでOANDA使ってるの?と言われることが多いのですが、私がOANDAをこよなく愛している主な理由は以下の通りです。(参照:OANDAのプロコース

(その1)APIの使用条件が優しい
まぁ、一番の理由はこれですよね。そもそも日本国内でFXのAPIが使える業者は、私が知っている限りでOANDAと日産証券の2社しかありません。日産証券でAPIを使用するには300万円入金条件ですが、OANDAはたったの25万円でAPIを使わせてくれます。ちなみに初回入金は25万円以上で、口座残高が25万円を割ってしまうとAPIの使用できなくなります。YJFXもAPIを提供していると噂されていますが、こちらは…条件すらわかりません笑。

(その2)1通貨から取引ができる
これは実際にAPIで取引をしてから思ったのですが、1通貨から注文が流せるのは非常に嬉しいです。やはりお金を扱っているので、自分で書いたコードに取引をさせる時は、それなりの緊張感が漂います。どうしよう、いきなり大損したらって。なので、1通貨からAPIで注文流せるのは助かります。とりあえず小さい注文で試せます。

(その3)APIがすぐに使える
え?それ普通でしょ?って思うかも知れませんが、これも個人的にはポイントが高いです。口座開設はものの数日で完了して、API規約に同意したら、すぐにAPIトークンが取得できます。正直、早く触ってみたいとそわそわしていたので…このスピード対応は本当に嬉しかった。

当然、APIが使いやすいなんてのは、ここに明記をする必要がないかと。今の所、必要な昨日は全て揃っていますし、何よりドキュメントが豊富で助かってます。これからFX機械学習始めるなら、OANDAがオススメです。

OANDAはデモ口座?本番口座?

これもよく聞かれるのですが、私は「OANDA プロコース」というのを使っています。理由としては、APIの使用条件が25万円口座残高だからなのですが、それ以外にも一つ皆さんに訴えたいことが・・・。

海外ではFXCMや他の業者がFXのAPIを提供しており、選択肢があります。また、米OANDAも当然APIを提供しているのですが、日本では使えない最新バージョンのOANDA API v20を提供しています。

対して日本では…OANDAが快く提供をしているのみで…他の業者は法人向けや大口トレーダーのみで、気軽にAPIが使える環境ではありません。かなり以前の話ですが、クリック証券も以前はFX APIを提供していましたが、打ち切っています

なにが言いたいかというと、OANDAが日本口座向けのAPIを打ち切られると困る人がたくさんいるのです!(主に私です)

なので、APIの継続の為にも…本当に微力なのは承知ですが私はOANDAの本番口座を使っている訳です。また、嬉しいことに本番口座でも1通貨から取引ができるのも大きな理由です。検証をするコードは、正直、かなり怖いので、通貨を100通貨とかにしてリスクヘッジをかけています。

また、デモ口座だとメンタル的に所詮デモだしと思って、真剣にモデル構築に取り組まないというデメリットも。検証時の取引は通貨単位が小さいですが、それでも実際に動くのはお金。心情的にもしっかり検証をするものです。(ガラスのメンタルです、はい)

皆さんも、OANDAのAPIの継続のためにも、本番口座を開けましょう(笑)

機械学習はどのような環境構築していますか?

現在は作業に応じて異なりますが、3つの環境を主に使っています。

環境その1 – Mac Book Pro

一番使っている環境です。APIの動作確認や、データの処理のコーディングしたり、特徴量の処理を書いたりなどなど、基本的にコンピューティングパワーが必要ない作業はほとんどをローカルでやってます。CPUは Intel Core i5でRAMは8GBです。

環境その2 – Google Colab
Google Colab(グーグル・コラボ)という、Googleが提供しているオンラインでJupyter Notebookが使えるサービスもよく使います。操作方法が若干異なっていたり、少し思い処理を回すとエラーになったりと、不便な部分はあるのですが、ブラウザのみで実行できるのが嬉しいです。また、ノートブックはGoogleドライブ上に保存されるので、他のPCからでも同じ環境で作業が行えます。これが超絶便利です。また無料でGPUが使えると一時期話題になりましたが…正直、これは微妙です。GPUが活躍しような重い処理を投げると、エラーが起きてイラっとします(笑)

環境その3 – AWS


言わずと知れたAmazonのクラウドサービスです。複数のサーバーを立ててやっていますが、主な使い道としては①ローカルじゃ処理できない膨大なデータを計算するとき②OANDAのAPIを使って自動売買をするときです。特にここ最近は1分足や5分足などの短い足を使った予測モデルを検証していたので、そうなるとデータの数が余裕で100万、500万と膨大になります。ローカルではこんな重い処理できませんでの、AWSでインスタンス立ててやってます。(お金がかかる)

APIで自動売買する環境は?

こちらは現時点で検証中で、実は色々と試しています。まだ確定的には決まっていませんが、今検証しているのは下記の2つです。

その1 ローカルPC

  • 小規模なモデルであればローカルを使うのが早い
  • 余計なサーバー費用などもかからず経済的
  • Pythonを動かしてレートをストリーミング
  • 一定の条件でモデルへ投げて予測
  • 予測した結果に応じてイベント管理のコードからAPIへ接続
  • API経由でOANDAの本番口座へ注文を流す

その2 AWS

  • 試験的に今模索しながらやってます
  • LinuxにJupyter Labをインストール
  • 他、機械学習モデル構築に必要なパッケージもインストール済み
  • Jupyter LabのコンソールでPythonファイルを叩いている
  • まだ簡単なロジックしかないので作り込みが必要かも(?)

目指したい環境

  • 常時、サーバー上でAPI接続
  • 常時、最新の為替レートをAPIから取得
  • 常時、為替レートを一定の条件で処理する(テクニカル指標などを)
  • 常時、一定の条件で構築済みのモデルへ投げる
  • 常時、モデルの出力に応じてAPIへ注文
  • コードでポジション全体のポートフォリオを管理

まとめ

他にも使っているライブラリーやバージョンなどの質問も頂くことがありますので、これも後日更新します。また、検証中の環境も多いので、そちらはある程度固まってきたら、こちらの記事を随時更新していきます!

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

FX 機械学習

Posted by algon