【FX, AI】単純なディープラーニングで為替を予想する

今回な単純なディープラーニング(ニューラルネットワーク)で為替の予想してみます。

もうちょっと具体的には、直近のデータを入力したら次の時刻の予想値を出力するモデル(ニューラルネットワーク)を作ってみます。

前提

為替データ取得用のAPI(OANDA API)

基本的に為替のデータはOANDA APIから取得しています。

OANDA APIを使うためにはOANDA Japanで口座を作る必要があります。

本番口座でもデモ口座でも構いませんが、最終的に自動取引を実現したい方は本番口座を作っておいてしまっても良いかもれません。

口座を作り終わったら、以下の手順に従って、APIへのアクセストークンを取得してください。

その他ニューラルネットワーク用ライブラリ等のインストール

今回はニューラルネットワークライブラリとしてKerasを用います。

そのため、Kerasを使えるようにしておきます。
手順は単純でpipでインストールするだけです。

実装

さぁ実装に入っていきましょう。

今回はPython3を使って実装していきます。

まず先に全ソースコードを示します。

必要なライブラリがインストールしてあれば、以下のコードをコピペするだけで実行できます。

各コードについて解説していきます。

ライブラリのインポート

まず必要なライブラリをインポートします。

Kerasやoanda関連のライブラリです。

データの取得とデータの加工

為替データの取得を行います。

今回はUSD/JPYの5分足のデータを用います。95行目のget_prices() メソッドでデータの取得を行っています。

以下の99行目から100行目で、取得したデータを標準化しておきます。つまり、すべてのデータを0〜1の間の値に変化しています。
(標準化することで学習効率が上がるため)

次に103行目のcreate_training_data()メソッドで、ニューラルネットワークに読み込めるようにデータ(X,Y)を生成します。
各データはX[0]=[t1, t2, …, tn], Y[0]=tn+1となるようになります。

106行目〜110行目でデータを学習用と評価用に分けます。

ニューラルネットワークモデルの作成と学習

では、Kerasを使ってモデルを作っていきます。

モデルは112行目のbuild_model()関数の中で定義しています。

KerasではSequentialモデルを使うことで、層を積み上げる形でモデルを構成できます。

今回は数値を予測する回帰問題として扱うので、 出力層の素子数は1になります。

学習も簡単です。116行目のmodel.fit(X_train,Y_train)で学習しています。

評価と予測

学習し終えたモデルを評価してみます。
評価には先程作成したテスト用のデータを使います。

model.evaluate(X_test, Y_test)を使うことで評価できます。

以下のように出力します。

今回は左の要素(loss)だけ見れば良いです。左の要素はテストデータに対する二乗誤差です。

誤差を小さくできていることがわかります。

では、どのように予測しているか実際にプロットして確認します。

単純なニューラルネットワークによる予想

単純なNNでもある程度うまく予測できているように見えます。

RNNじゃなくてもまぁまぁうまくいっているようですね。RNNと比較してみたいです。

終わりに

今回は単純なNNを使って為替の値動きを予測するモデルを作成して評価しました。
ある程度うまくいっているように見えます。

次回はRNNとの性能比較を行っていきたいです。

タイトルとURLをコピーしました