DEVELOPER’s BLOG
技術ブログ
機械学習で為替予測(FX)をしてみる
こんにちは。
皆さんはFXでお金を稼ぎたいと思ったことはあるでしょうか?もしFXでこれまでの生活を一変させるような額のお金を稼ぐことができたら夢のようですよね?
今回はそんな夢を目指して、為替の値動きを機械学習で予測してみたというお話をしたいと思います。
目次
- 概要
- 手順
- 結果
- 今後の課題
1 概要
使用したデータセット:OANDA APIを用いて取得
https://www.oanda.jp/fxproduct/api
(デモ口座を開設することにより、無料でAPIを利用することができます)使用したモデル:LSTM
データセット
米ドル円の2016年9月22日から2020年7月20日までの1000個の日足データを取得し利用します。
今回は、open(始値)、close(終値)、high(高値)、low(安値)、volume(取引量)という基本的な特徴量を用います。
LSTMとは?
LSTMは時系列予測をするためのライブラリです。
LSTM(Long short-term memory)は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データに対するモデル、または構造の1種です。その名前は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。
ニューラルネットワークは過去の出来事を考慮することができず、RNNは長い記憶に対応できないという欠点があります。そこで長い過去の記憶を考慮できるように、LSTMが開発されました。
今回は5日分のデータを1セットとしてLSTMで予測をしました。
つまり、5日間の為替レートのデータを1セットとして、それを何セットも学習することで、新しい5日間のデータからその次の為替レートを予測していきます。
2 手順
今回為替予測をするにあたって行った手順について簡単に説明します。
データセットの準備
OANDA APIを用いて取得するデータの加工
・データセットの「time」の部分が特殊な形(「ISO 8601」)を日本時間に直す
・データを学習データと訓練データに分割する
・LSTM用にデータを変換する
絶対的な為替価格ではなく、どのように為替価格が変化し、どの程度価格が変動するかを見る変化率に直す
・PandasのデータフレームからNumpy配列へ変換するLSTMのモデル構築と学習・予測
・機械学習ライブラリのKerasを利用してモデル構築を行う
(Kerasについてはこちらをご覧くださいhttps://keras.io/ja/)
・モデルの訓練を行う
・作成したモデルを用いて、予測をする
3 結果
2のところで紹介した手順で為替の予測を行ってみました。結果をチャートにしたものがこちらです。
青のラインが実際の為替の値動き、赤が今回予測した為替の値動きです。
どうでしょうか。それっぽいものができていると思いますが、チャートをみてみると最初の方で大きく外しているほか、気になるのが、実際の値動きの後に遅れて予測したものが動いている点です。実際にレートが動いてから予測結果が出るため、エントリーのタイミングを逃してしまう可能性があり、各個人での判断が必要となってしまいます。
4 今後の課題
今回は一日の為替価格のみのデータで分析をしました。為替の値動きは、様々な経済指標やトランプ大統領の発言、1日の中の時間帯によっても変わっていくので、そのようなニュースの情報やTwitterなどの情報も取り入れたらさらに精度の高いものが出来上がるのではないかと思います。
FXトレーダーは、自分なりにチャートを分析し、何らかの基準を持ってトレードをしています。彼らのノウハウや経験をうまく機械学習に落とし込めれば、同等、またはそれ以上の精度で予測できるのではないかと個人的には思います。
引き続き機械学習を用いた為替予測を頑張っていきたいです!