【fx、python】Backtesting.pyでバックテストしてみる

Backtesting.pyという簡単にバックテストを行うことができるライブラリを用いて
バックテストをしてみます。
OANDA API から取得したデータを使ってバックテストを実行してみます。

最低限のpythonの操作はできることを想定しています。

バックテストとは

バックテストは、過去のデータを用いて、売買ルールの性能を検証することを言います。

自分の売買アルゴリズムを検証したい時にはバックテストをしてから、実際の環境に適用していきます。

OANDAとは

今回はOANDA APIを使って取得したデータを使ってバックテストを行います。
OANDA Japanはアメリカのfx会社です。

pythonから使えるapiを提供しているので、
pythonでfx関連のことをしようとする人はよく使うと思います。
今回はoandaからデータを取得して、ローソク足チャートをプロットするので
oandaの口座を持っている人前提の記事になります。

apiを使うためにはoandaで口座を作る必要があります。
口座を作るだけなら無料できます。

Backtesting.pyとは

Backtesting.pyとはpythonで簡単にバックテストを行うことが出来るライブラリです。

Backtesting.py

Backtesting.pyは非常に軽く、スムーズに動作してくれます。
簡単に実装できるので、バックテスト初心者の自分のような人にとってはとてもありがたいライブラリです。

ちなみにBacktesting.pyはpythonの3系で動きます。

Backtesting.pyは以下のコマンドでインストール出来ます。

OANDA APIとBacktesting.pyを使ってバックテストをしてみる(実装)

公式のサンプルコードを元に実装していきます。

まずは必要なライブラリ等をインストールします。

バックテスト用のデータ(OANDA APIからデータの取得)

バックテストに用いる為替のデータをOANDA APIから取得します。

your_access_tokenは自分用に変更してください。
get_historyについては以下の記事を参考にしてください。

【oandapy,fx】oandapyで為替データを取得する方法
OANDAのAPIがV20となりました!V20用の記事は以下になります。OANDA API V20とPythonを...

backtesting.pyで用いるデータはpandasのDataFrameでなければいけないので、
取得したデータをDataFrameに変換します。

時間はdatetime型に変更します。

次にbacktesting.pyで使用できるデータ形式に変換します。

戦略(Strategy)

取引の戦略を実装していきます。

戦略を実装するときにはbacktestingのStrategyクラスを継承して実装していきます。

公式のサンプルコードを用います。

init関数はこの戦略の初期化。ここでは移動平均線の初期化を行っています。

next関数は定期的に呼ばれ、売買の判断を行います。
ここでは2つの移動平均のクロスオーバーで売買の判定を行っています。

バックテストの実行

ではバックテスト実行してみます。

Backtestクラスを用いて、btインスタンスを生成し、
bt.run()を実行することで実行できます。

Backtestの各引数は、

  • data:チャートデータ(pandsのDataFrame)
  • strategy:戦略(先程実装したクラス)
  • cash: 資金(恐らくドル?)
  • commission: 手数料

上記のコードを実行すると、以下のようなバックテストの結果の出力と、

ブラウザに以下のようなグラフがプロットされます。

上記のグラフからどこで売買したかなどがわかります。

ソースコードの全体像

最後にソースコードの全体像をあげておきます。

おわりに

今回はBacktesting.pyを使って、バックテストを試してみました。
比較的、簡単にバックテストを試すことができたので、これからも使っていこうと思います。

まだ、私も使い始めたばかりなので、Backtesting.pyについて、わからないことが多いので今後も調べていこうと思います。

参考文献

Backtesting.py - Backtest trading strategies in Python
Fast Python framework for backtesting trading and investment strategies on historical candlestick data.
関連記事
【FX】ローソク足チャートを表示する
OANDAのAPIがV20となりました!V20用の記事は以下になります。【FX,V20】Pythonでローソク足チ...


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