- バックテストのメカニズム
- バックテストを活用したEAの評価方法
- EA初心者の方
- バックテストを取った事がない方、経験が少ない方
FXの自動売買ツールであるエキスパートアドバイザー(EA)は、個人の感情に影響されることなくシステマティックに利益を生み出す事ができ、更に時間効率も大幅に向上させることができるため、多くのトレーダーの関心を集めています。
MT4に組み込まれているバックテスト機能は、ソフトウェアの開発や他者が作成したEAを評価する際に活用されています。
MT4内にある「ストラテジーテスター」を利用した過去チャートテストのこと。
「ctrl+r」で開きます。
過去の市場データでパフォーマンスがふるわなかったEAは将来も同様に機能しない可能性が高いため、バックテストはEAの開発や使用の際に不可欠な工程です。
バックテストの仕組み
バックテストは、MT4に組み込まれた機能で、EAが過去の市場データ(ヒストリカルデータ)を基に取引を行った場合の成績を検証することができます。
各通貨ペアの以下の項目が含まれます。
- 始値:時間足の開始価格
- 終値:時間足の終了価格
- 高値:時間足の最も高い価格
- 安値:時間足の最も安い価格
- 取引量(価格変動の回数)
バックテストのプロセスでは、これら5つのデータを使用して、特定のアルゴリズムに従って過去の価格変動を模擬的に再現し、EAの内蔵ロジックに基づいて仮想取引を行い、その結果のパフォーマンスを評価します。
バックテストはなぜ必要か
バックテストは、EAの戦略の有効性を確認するために必須のプロセスです。
ただし、過去のデータに基づく高パフォーマンスが将来的な成功を保証するものではないことを理解することが重要です。
バックテストは過去検証に過ぎず、その成果が将来にも適用可能かどうかは別の問題です。
しかし、バックテストで低パフォーマンスの戦略は、将来的に高い成果を期待することはできません。
バックテストでの成功は、取引戦略の有効性を示す必要条件ではありますが、十分条件ではないのです。
さらに、バックテストを行うもう一つの理由は、EAの取引ルールに基づく最大ドローダウン(最高残高からの最大減少額)や期待値(取引あたりの平均的な利益)など、リアルトレードにおける運用設定を決定するための基本情報を収集することです。
特に、最大ドローダウンの理解は重要で、実際の取引でこの値を超えるドローダウンが発生した場合、EAの運用を続行するか否かの判断基準となります。
また、自分が許容できるドローダウンの範囲を把握することで、取引のサイズ(ロット数)を決定することが可能になります。
バックテストの実施方法
バックテストの準備
ヒストリカルデータのオプション設定
冒頭で触れた通り、バックテストはヒストリカルデータを用いて行われますので、その準備としてまずヒストリカルデータの導入がスタートラインになります。
最初にMT4で扱うヒストリカルデータの量を最大限に設定することが必要です。
MT4メニューバーより
➡︎「ツール」
➡︎「オプション」
チャートタブを開く
➡︎「ヒストリー最大バー数」と「チャートの最大バー数」
➡︎可能な限り「9」を入力
ヒストリカルデータのダウンロード
次のステップは、ヒストリカルデータのダウンロードです。
多くの場合、これはMT4をサポートする海外のFX業者から行います。
ここでは、FXDDという業者からデータをダウンロードするプロセスを説明します。
まず、FXDDの公式ウェブサイトにアクセスします。
FXDDのウェブページにアクセスしたら、サポートタブから「MT4 1分足データ」を選択して下さい。
所望の通貨ペアのヒストリカルデータをPCにダウンロードしてください。
ヒストリカルデータのインポート(1分足のみ)
ダウンロードしたヒストリカルデータをMT4にインポートするには、以下の手順に従ってください。
MT4メニューバーより
➡︎「ツール」
➡︎「ヒストリーセンター」
これにより、利用可能な通貨ペアのリストが表示される新しいウィンドウが開きます。
このリストから、バックテストに使用したい特定の通貨ペアを選び、次のステップに進んでください。
リストからバックテストに使用する通貨ペアを見つける
➡︎リストから「1分足」(M1)をダブルクリック
➡︎右側に通貨ペアの1分足データの詳細が表示されます
➡︎「インポート」クリック後、ダイアログボックスを表示
➡︎ダウンロードしたファイルを探して「開く」をクリック
➡︎正しく選択されればインポート開始
➡︎MT4への組み込み完了
これで、ダウンロードしたヒストリカルデータがMT4プラットフォームに正しくインポートされ、バックテストに使用する準備が整いました。
うまくインポートできていない場合は、MT4を再起動するとうまくいく場合があります。
これまでの作業で1分足のチャートがインポートされました。
1分足を使うEAであればこのままテスト可能です。
各時間足のヒストリカルデータをインポート
他の時間足を使う場合は、この1分足のデータから他の時間足のデータを作成する必要があります。
MT4メニューバーより
➡︎「ファイル」
➡︎「オフラインチャート」
現在インストールされている通貨ペアと時間足が表示されます。
異なる時間足のチャートを作成するプロセスを完了させるためには、以下の手順に従います。
「ナビゲーター」を表示(表示されていない場合「ctrl+n」で表示させる)
➡︎「スクリプト」フォルダを展開
➡︎「Period Converter」スクリプトを選択
➡︎使用したいチャートにドラッグアンドドロップ
➡︎スクリプト設定ウィンドウ表示
➡︎作成したい時間足のチャートに対応する値を入力
※チャートに対応する値は右の表を参考にしてください。
➡︎必要な時間足の値を入力した後、「OK」をクリックして設定を確定
「ナビゲーター」を表示(表示されていない場合「ctrl+n」で表示させる)
➡︎「スクリプト」フォルダを展開
➡︎「Period Converter」スクリプトを選択
➡︎使用したいチャートにドラッグアンドドロップ
➡︎スクリプト設定ウィンドウ表示
➡︎作成したい時間足のチャートに対応する値を入力
※チャートに対応する値は下の表を参考にしてください。
➡︎必要な時間足の値を入力した後、「OK」をクリックして設定を確定
時間足 | チャートに対応する値 |
---|---|
5分足 | 5 |
15分足 | 15 |
30分足 | 30 |
1時間足 | 60 |
4時間足 | 240 |
日足 | 1440 |
これにより、元の1分足データから必要な時間足のチャートが生成され、EAのバックテストに利用する準備が整いました。
バックテスト実施
バックテストの条件設定
バックテストの条件設定を行います。
MT4メニューバーより
➡︎「表示」
➡︎「ストラテジーテスター」
※「ctrl+r」でも表示可能
ストラテジーテスター設定
下図のようなウィンドウが立ち上がります。①から⑦まで設定 していきます。
番号 | 項目名 | 内容 |
---|---|---|
① | エキスパートアドバイザ | テストしたいEAを選択します。 |
② | 通貨ペア | テストを行いたい通貨ペアを選択します。 |
③ | モデル | テストの精度を選択します。 「全ティック」が最も高精度ですが時間がかかります。「コントロールポイント」は中間の精度と時間を要します。「始値のみ」は最も速いですが、精度は低下します。要求されるテスト精度やEAの性質に応じて、これらのオプションから選ぶことが必要です。 |
④ | 期間指定 | バックテストを行う期間を指定します。 長期間のデータを使用すると信頼性が高まりますが、テスト時間が長くなります。トレード数が2000回未満の場合は、使用可能なヒストリカルデータの全期間を使用することをお勧めします。 |
⑤ | 時間足 | EAが特定の時間足で動作するよう設計されている場合、その時間足を設定します。 |
⑥ | スプレッド | スプレッドは取引コストを意味し、EAのパフォーマンスに影響を与えます。 使用するFX業者や通貨ペアの平均スプレッドを調べ、少し余裕を持たせて設定することをお勧めします(例: 平均スプレッド+0.5 pips)。 |
⑦ | エキスパート設定 | 「テスト設定」タブで、初期証拠金、ポジション方向(ロングとショート、または片方のみ)など、さらなる詳細設定を行うことができます。 「パラメータの入力」タブでは、EAのパラメータの設定ができます。 |
番号 | 項目名 | 内容 |
---|---|---|
① | エキスパート アドバイザ | テストしたいEAを選択します。 |
② | 通貨ペア | テストを行いたい通貨ペアを選択します。 |
③ | モデル | テストの精度を選択します。 「全ティック」が最も高精度ですが時間がかかります。 「コントロールポイント」は中間の精度と時間を要します。 「始値のみ」は最も速いですが、精度は低下します。 要求されるテスト精度やEAの性質に応じて、これらのオプションから選ぶことが必要です。 |
④ | 期間指定 | バックテストを行う期間を指定します。 長期間のデータを使用すると信頼性が高まりますが、テスト時間が長くなります。 トレード数が2000回未満の場合は、使用可能なヒストリカルデータの全期間を使用することをお勧めします。 |
⑤ | 時間足 | EAが特定の時間足で動作するよう設計されている場合、その時間足を設定します。 |
⑥ | スプレッド | スプレッドは取引コストを意味し、EAのパフォーマンスに影響を与えます。 使用するFX業者や通貨ペアの平均スプレッドを調べ、少し余裕を持たせて設定することをお勧めします。 (例: 平均スプレッド+0.5 pips) |
⑦ | エキスパート 設定 | 「テスト設定」タブで、初期証拠金、ポジション方向(ロングとショート、または片方のみ)など、さらなる詳細設定を行うことができます。 「パラメータの入力」タブでは、EAのパラメータの設定ができます。 |
各EAによって異なりますので、EAに付属されている解説をよく確認して設定して下さい。パラメータ設定の画面に直接説明が記載されている場合もあります。
バックテストの実施と結果の確認方法
設定が完了したら、ストラテジーテスターの画面右下にある「スタート」ボタンをクリックしてバックテストを開始します。
テストが完了すると、進行状況を示すバーが緑色に変わり、バックテストの結果を確認できる新しいタブが表示されます。
これらのタブは
- 結果
- グラフ
- レポート
のセクションに分かれており、それぞれがバックテストの成果を異なる形で示します。
バックテスト中に行われた各トレードの詳細を確認できます。
エントリーとエグジットの価格、トレードの利益や損失、取引日時など、トレードごとの具体的な情報がリスト形式で表示されます。
バックテスト期間中の口座残高の変動をグラフィカルに表示します。
このグラフを見ることで、EAのパフォーマンスが時間経過とともにどのように変化していったかを視覚的に把握することができます。
EAの総合的なパフォーマンス指標がまとめられています。
総利益、総損失、最大ドローダウン、利益率、期待値など、EAのパフォーマンスとリスクを評価するのに役立つさまざまな統計が表示されます。
これらの結果を詳しく分析することで、EAの戦略に優位性があるか、リスク管理が適切かどうかなどを総合的に評価することができます。
バックテスト結果の解析において、特に重要な指標として「純益」と「プロフィットファクター」が挙げられます。また、このレポートタブの中には出てきませんが、「リカバリーファクター(RF)」も重要な指標として取り扱われます。
期待利得も非常に重要ですが、後の章で出てきますので、この章では割愛します。
項目 | 計算式 | 内容 | 目安 |
---|---|---|---|
純益 | 総利益−総損失 | 純益はバックテスト期間中にEAが生み出した総損益金額です。 この指標はEAの絶対的な収益性を示し、プラスの値であれば利益が得られていることを意味します。 | 個人的な基準としては、1ロットあたり年間$10,000の純益を目安にしています。 この値を下回る場合は、取引数が少ないか、期待値が小さく、実際に運用するのは難しい可能性があります。 ※ただし、ポートフォリオの一部として多様性を持たせるために使用する場合はこの限りではありません。 |
プロフィットファクター (PF) | 総利益/総損失 | 総利益を総損失で割った値で、収益性とリスクのバランスを示します。 PF= この値が1以上であれば、総利益が総損失を上回っていることを意味します。 | 1.5以上であることが望ましいとされています。 PFが低い場合、利益が出ても損失が大きいため、ロット数を増やすことが難しく、レバレッジを効かせるのが困難になります。 |
リカバリーファクター (RF) | 純利益/最大ドローダウン | 純利益を最大ドローダウンで割った値で、投資に対するリスク調整後のリターンを示します。 RF= この値が高いほど、少ないドローダウンで高い利益を得られていることを意味し、EAの効率性が高いと評価できます。 最大ドローダウンを基にロット数の調整を行う場合、この値が大きいほど、より大きな収益を期待できると言えます。 | 個人的な目安としては最低5以上は欲しいところです。 ただし、それ以下でも問題はありません。 特にフォワードがバックテストを忠実に再現できているようなEAにおいては10よりも低くなる可能性があります。そういったEAの場合には2以上を目安としましょう。 |
項目 | 計算式 | 内容 | 目安 |
---|---|---|---|
純益 | 総利益−総損失 | 純益はバックテスト期間中に EAが生み出した総損益金額です。 この指標はEAの絶対的な収益性を示し、 プラスの値であれば 利益が得られていることを意味します。 | 個人的な基準としては、 1ロットあたり年間 $10,000の純益を目安にしています。 この値を下回る場合は、 取引数が少ないか、期待値が小さく、 実際に運用するのは難しい可能性があります。 ※ただし、ポートフォリオの一部として 多様性を持たせるために使用する場合は この限りではありません。 |
プロフィット ファクター (PF) | 総利益/総損失 | 総利益を総損失で割った値で、 収益性とリスクのバランスを示します。 この値が1以上であれば、 総利益が総損失を上回っていることを意味します。 | 1.5以上であることが望ましいとされています。 PFが低い場合、利益が出ても損失が大きいため、 ロット数を増やすことが難しく、 レバレッジを効かせるのが困難になります。 |
リカバリーファクター (RF) | 純利益/最大ドローダウン | 純利益を最大ドローダウンで割った値で、 投資に対するリスク調整後のリターンを示します。 この値が高いほど、少ないドローダウンで 高い利益を得られていることを意味し、 EAの効率性が高いと評価できます。 最大ドローダウンを基にロット数の調整を行う場合、 この値が大きいほど、より大きな収益を期待できると言えます。 | 個人的な目安としては最低5以上は欲しいところです。 ただし、それ以下でも問題はありません。 特にフォワードがバックテストを忠実に再現できているようなEAにおいては10よりも低くなる可能性があります。そういったEAの場合には2以上を目安としましょう。 |
これらの指標を総合的に考慮することで、EAのパフォーマンスを多角的に評価し、将来の取引戦略やリスク管理の方針を策定するための有用な情報を得ることができます。
バックテスト結果を理解し活用することで、より安定した収益を目指すトレーディング戦略を構築することが可能になります。
更なる高みを目指すために
バックテストの精度向上させる
バックテストは可能な限り精度を向上させる必要があります。これはリアルトレードで再現性を高めるための行為に他なりません。
バックテストの精度を評価するにはいくつか重要なポイントがありますので、以下でそれらを解説します。
スプレッド設定の適正値
スプレッド設定はバックテストの結果に大きな影響を与えます。
リアルトレードではスプレッドが変動するため、バックテスト時は実際のスプレッドよりも若干大きめに設定することが推奨されます(例: 実際のスプレッド+0.5 pips)。
これにより、リアルトレード時の不確実性を少し織り込んでバックテストする事が可能になります。
モデリング品質の確認
モデリング品質はバックテストの信頼性を示す重要な指標で、レポートタブの一番右上に出てきます。
90%以上のモデリング品質を目指すことが一般的ですが、チャートの時間足に不整合があると品質が下がる場合があります。
また、「コントロールポイント」や「始値のみ」でテストを行うとモデリング品質はn/aとなります。
「コントロールポイント」や「始値のみ」はローソク足の価格の一部のみを使ってテストする方法です。そのため、これらでテストを行った場合には、モデリング品質が悪すぎてn/a(Not applied:非適用)となってしまうのです。
ただし、コントロールポイントや始値のみでテストしても問題ないEAも存在します。
例えば、ローソク足(バー)の始値のみで取引するようなタイプのEAです。
そういったタイプのEAかどうかは、「結果」タブの取引結果を見ると分かります。
例えば、5分足で動作するEAのエントリーやクローズが5の倍数の分でしか実施されていないような場合にはそれが当てはまります。
「全ティック」でテストを始めて直ぐに停止し、結果タブを見てそれが当てはまっていたら、一度テストを止めて「始値のみ」でテストをやり直すのが良いでしょう。時間を大幅に短縮できます。
モデリング品質は、99.9%までの精度を実現する事が可能です。
これを達成するには、Tick Data Suiteなどのサービスを利用してリアルティックデータを取得する方法があります。これにより、市場のティック毎の動きを正確に再現し、バックテストの精度を向上させることができます。
ただし、これを利用するにはそれなりのコストがかかりますので、初心者の方は導入することを躊躇うかもしれません。
FXである程度利益を手にしてから検討しても遅くはないでしょう。
TDSについてはこちらの記事がとても参考になります。
フォワードデータと比較する
バックテストの結果が信頼できるかどうかを確認するためには、フォワードデータ(リアルトレードの取引データ)との比較を実施し、バックテスト結果との差異を確認することが最も重要です。
モデリング品質が低い場合や、バックテストの結果に不確実性がある場合は、特にフォワードデータとの比較を行い、バックテストの妥当性を確認することをお勧めします。
これらのポイントを考慮してバックテストを実施し、結果の分析を行うことで、EAのリアルトレードでのパフォーマンスの信頼性をより正確に評価することができます。
バックテストデータとフォワードデータを比較する場合には、私が開発したツールが非常に簡単で便利なのでお勧めです。
ツールの詳細についてはこちらの記事で紹介しています。
期待利得の重要性を理解する
期待利得はバックテストの結果を評価する際の非常に重要な指標の一つであり、トレードごとの平均利益を示します。
期待利得が高い戦略は、一貫して利益を生み出す可能性が高いことを意味しますが、
期待利得が低い戦略は、リアルトレードでは利益を上げることが困難になる可能性があります。
最も重要なことは、リアルトレードでは、スプレッド、スワップ、スリッページなどの取引コストが期待利得に影響を与え、バックテストの結果よりも低下させます。
その影響の積み重ねで期待利得が段々下がってきてマイナスに転じると、その戦略は利益を出すどころか、マイナスを積み上げる戦略へと変わってしまうのです。
逆に言うと、バックテストで期待利得が高いEAはリアルトレードでも利益を生む期待度がかなり高まります。(後述する過剰最適化されている場合を除く)
そのため、期待利得は十分な余裕度が必要であり、1トレードあたり5pips以上が望ましいです。
しかしながら、そこまで高い期待利得を持つ戦略はそう多くありません。実際には2.5pips以上の期待利得を持つEAを目指すのが現実的です。
- バックテストでは、実際よりも厳しいスプレッド条件を設定し、戦略に十分なロバスト性(余裕度)をがあるかをチェックしましょう。
- スワップがマイナスの場合は、その影響を考慮しましょう。
おおよそどれくらい期待利得が下がるかを予測するだけでも結構ですが、取引結果をスプレッドシートに吐き出して計算する方がより正確です。
なお、TDSではスワップを反映したバックテストができますので、より簡単にスワップ金利の影響を考慮したバックテストが可能です。
過剰最適化に気をつける
過剰最適化とは、特定の過去のデータに適合するようにロジックやパラメータを調整することです。
これをしてしまうと、バックテストでは非常に良いパフォーマンスを示すのに、リアルトレードではうまく機能しないといったことが起こりえるのです。
EA開発者の中には、過剰最適化を利用してバックテストを良く見せて誇大にEAの宣伝を行う人もいるため、過剰最適化を見破ることができるようになれば強力な武器となります。
以下に注意点を記載しますので、参考にしてください。
- 取引数が多い戦略を選ぶ
-
取引数が少ないEAは過剰最適化されやすいです。
目安としては2000回以上の取引データを確認したいところです。
ただし、複数ポジションを持つEAや複数の戦略を詰め込んだEAは取引データが多くなるので、その場合には更に多くの取引データを確認する必要があります。
- アウト・オブ・サンプル検証を行う
-
EAの性能を評価する際には、最適化に使用したデータセットとは別のデータセット(アウト・オブ・サンプル)でテストを行うことが効果てきです。
これにより、戦略が過去の特定のデータに過剰に適合しているかどうかを確認できます。
EAの開発が完了した時期を調べ、それ以降のバックテストのパフォーマンスを確認してみましょう。右図のような資産曲線になっていたら要注意です。
EAの開発が完了した時期を調べ、それ以降のバックテストのパフォーマンスを確認してみましょう。下図のような資産曲線になっていたら要注意です。
- 特定期間のみ取引が極端に減っていなっていないかを確認する
-
バックテストの成績を良く見せようと、成績の悪い特定の期間だけフィルターを入れたり、ロジックやパラメータを変更している場合があります。
資産曲線のグラフからは分からないので、取引結果をエクセルなどのスプレッドシートに貼り付け、極端に取引数が減っている期間がないか確認してみましょう。
終わりに
この記事を通じて、バックテストの重要性と実施方法についての理解を深めていただけたかと思います。
バックテストは、トレーディング戦略の有効性を確認する上で不可欠なツールですが、成功を保証するものではないことも重要な視点です。
この記事で紹介した内容はバックテストの初歩という位置付けです。
バックテストは非常に奥が深いので、スキルを高め続ける事を怠らず、より正確なバックテストの実施、及び評価ができるようになって下さい。
そうする事で、あなたのトレードライフはきっと快適なものとなるでしょう。