バックテスト結果を分析する
スポンサーリンク

バックテスト結果のビジュアル化

バックテスト結果はMT4/MT5上から見られますが、一歩踏み込んで分析したいと思った場合はどうしたらいいのでしょうか?

  • オプティマイズ結果のパラメータを一つずつバックテスト実行すれば結果は見えるが、時間がかかりすぎて手待ちが増える
  • なぜ利益が出たのか?(出ないのか?)  想定した波形できちんと勝てているか?
  • 各インジケータの値と、勝ち負けの相関は?

色々な切り口で分析してパラメータの与え方を調整したり、ロジックそのものの見直しを実施する。
それをどれだけアジャイルに実施できるかが、ソフトウェアの品質に大きく関わってきますので、
テストは重要なプロセスだと考えています。

今回は、Tableau というBIツールを使用して、バックテスト結果をビジュアル化してみた結果をご紹介します。

Tableau とは?

Tableau 

BIとは、Business Intelligence の略で、大量の業務データを収集、蓄積、分析、レポートするための手段を指し、
BIツールはその分析工程を強力にサポートしてくれるツールです。

Tableauは、BIツール群の中でもトップシェアを誇るツールで、特にデータアナリスト向けの深い分析に向いたツールです。
私はこのツールが大好きで、何よりもデータを見ながら考える(探索的分析)というプロセスをツール上で
見事に再現しているところに惹かれます。

有償ツールではありますが、EA開発の品質改善にも寄与するものだと確信しています。

スポンサーリンク

バックテスト(オプティマイズ)結果の可視化

画面左側に、オプティマイズ結果の一覧と、各指標(profit, pf, drawdown等)が並んでいます。
EAやそのバージョンでフィルタリングして、分析対象のバックテスト結果を絞り込んだり、
各指標の値で結果をソーティングしたりできます。

また、レコードをクリックすると、画面右側に該当レコードの売買結果を表示し、
またその際のEAに与えたパラメータ一覧も表示されます。

これは、オプティマイズ結果と、その個別バックテスト実行結果(これの自動化も可能)を
データベースへ蓄積しておき、2つのデータをキー情報で連携させておくことで、
画面上のクリック操作に併せて結果が閲覧できるようになっています。

これによって、実行結果の分析はTableau 上でまとめて短時間で全体像を把握できるようになります。

もし、まだ個別バックテストを実施していない場合は、選択レコードに紐づくパラメータをTableauレポート上から
読み取り、ファイル化出力し、自動バックテストの引数として渡す事もできます。
※現状では要RPA連携。参考までにUiPathを絡めて実現しています。
近々、Tableau Extensions APIがリリースされるとのことですので、RPAは不要になるかもしれません。

それらの操作が全てTableau上からできてしまうので、作業効率もなかなか良いです。

個別バックテスト分析

実際のレートの値動きの中で、該当EAはどこで勝ってどこで負けているのかをビジュアル化したものです。

上記の場合、緑が 価値トレードで、緑線の範囲がポジションを保有していた期間です。赤は負けトレード。グレーはポジションなし。
全体的にエントリーし過ぎ感がスゴイですが。。

これを見ると、レンジっぽいところのフィルタがうまく機能せずに負けトレードが発生しているようです。
また、窓が開いたタイミングでポジション持ちっぱなしで逆指値に達してしまっていることも分かります。

また、可変ロット対応ロジックのため、各ロットの規模感と、その際のprofitの大きさも視覚的に捉えることができます。

環境構築の手間もあるが・・・

この環境の動作には

  • バックテスト(オプティマイズ)自動化とデータ抽出
  • バックテスト(個別)自動化とデータ抽出
  • DBサーバー構築(AWS上ならサクッと)、スキーマ設計
  • バックテストデータのDB連携
  • レート情報取得の自動化
  • Tableauレポート用データソース構築
  • Tableauレポート作成

等、やることは色々ありましたが、自分の実口座で稼働させるEAの管理と思えば大した労力ではないかなと思います。

もしご興味があれば上記のような対応(部分的)について支援させて頂く事もできますので、
コメントやメール等頂けましたらご相談させて頂きます。

活用例

スポンサーリンク
おすすめの記事