バックテストのやり方 — 正しく検証する方法は?
「私の戦略は勝率95パーセントでした」と読者から聞いた瞬間、私はその話の結末が良くないことをほぼ確信します。バックテストは神託でも将来の利益の約束でもありません。それは自分のアイデアを反証するための道具であり、ルールがさまざまな相場局面を乗り越えたのか、それともある幸運な一場面を描写しただけなのかを見極めるためのものです。本記事では、テストを誠実に行う方法、最悪の罠がどこにあるのか、そしてよく作られたバックテストでさえ実弾口座の利益を保証しない理由を見ていきます。
そもそも、なぜ戦略を過去データで検証するのか
実際のお金を危険にさらす前に、自分のルールが過去数年間で利益を生んでいたかどうかを確認します。混合した相場環境の5年間にわたってプラスの期待値を出していたなら、そのルールにはおそらく何らかのエッジ(優位性)があります。脆いものではあります — 市場は進化し、中央銀行は政策を転換し、流動性は移動します — それでもこれが私たちに使える最善の手段です。バックテストは機能しないアイデアをふるい落とし、デモテストに値するもの、さらにはその先の小さな実弾ポジションに値するものだけを通過させます。それ以上のものではありません。トレード手法の体系的な検証は、実践とワークショップの出発点になります。
ルールは一義的でなければ、検証しているのは作り話だ
最初のステップで多くの初心者がつまずきます。戦略は、ルールを読んだ赤の他人がまったく同じトレードを行えるように書かれていなければなりません。「トレンドが見えたら買う」というエントリーは戦略ではなく、感覚にすぎません。検証可能な形はこうです — 「日足の終値で、50期間EMAが200期間EMAより上にあり、14期間RSIが70未満で、価格が20期間の平均線に上から触れたら買う。ストップはエントリーの1.5×ATR(14)下、目標は2.5×ATR上、1トレードあたりのリスクは資金の1パーセント」。このようなルールだけが、誠実に検証できます。
関連するテーマが戦略そのもの、つまりトレードのエッジの見つけ方です。自分のエッジを知らなければ、バックテストは残酷かつ素早くそれを突きつけてきます。テストを日々のトレード業務のなかでどう位置づけるかという広い文脈については、ForexMechanics.com のトレーダーズ・ワークショップが参考になります。
過去データはどこで入手し、サンプルはどれだけ必要か
データは2つ目の大きな誤差の源です。あるFX会社のティック履歴は、別の会社のものと1ティックも一致することはありません — 約定モデルが異なり、流動性の供給源が異なるからです。ストップが狭い戦略では、その差が結果を左右します。日中のトレードにはCME先物のデータを使うとよいでしょう — 集中市場で監査可能です。日足のスイングであれば、FX会社の履歴で通常は十分です。ツールの選択も重要で、専用アプリケーションがプラットフォーム付属のシミュレータより優位になる場面についてはリスク管理の観点からも検討する価値があります。
2つ目の論点はサンプル数です。古くからのルールでは最低100トレードとされ、それを下回ると結果は容易に偶然の贈り物になります。半年で素晴らしい30トレードという数字は、何も教えてくれません。100は統計的有意性のしきい値であり、プロは300以上を狙います。日足(D1)のスイングは5年、デイトレードは2年、スキャルピングは1年分のティック履歴が必要です。
5年にはもう1つの利点があります — 複数の相場局面を含むことです。直近の10年は、トレンド(DXY 2014〜2017年)、ボラティリティ・ショック(2020年3月)、引き締めサイクル(2022〜2023年)、そして2024年を通じた持ち合いを私たちに与えてくれました。1つの局面でしか機能しない戦略は戦略ではなく、ある時代に当てはめただけの幻想です。
スプレッド・手数料・スリッページ — それらを欠けばバックテストは嘘をつく
最もよくある「奇跡」のバックテストは、コストを差し引くのを忘れています。目標200pipのH4スイングなら、0.8pipのスプレッドはほとんど目立ちません。しかし目標5pipで1日30トレードを回すスキャルパーにとっては、同じスプレッドがエッジの大半を食い尽くします。現実的なバックテストには、FX会社のスプレッド、1ロットあたりの手数料、そして約定に敏感な戦略についてはスリッページ — クリックした瞬間に見えていた価格と、実際に約定する価格との差 — を含めなければなりません。
私の基準はこうです。1トレードあたりの平均利益が平均コスト(スプレッド・手数料・想定スリッページの合計)の2倍未満なら、その戦略には安全余裕がありません。厳しいですが、何か月もの自己欺瞞から救ってくれます。注意すべき別の罠もあります。過去の値を描き替える(リペイントする)指標は、どんなバックテストでも完璧に見えますが、リアルタイムのトレードではまったく違う挙動を示します。
過去に当てはめた曲線は戦略ではなく、博物館の陳列だ
独学のトレーダーが最も陥りやすい罠が過剰最適化(オーバーフィッティング)です。あるパラメータの30通りの値をテストし、最良の結果を選び、システムは年利40パーセントを生むと宣言する — 実際にやったのは、シグナルではなくノイズに最適化することです。最適化が触れるパラメータが多いほど、結果が偶然である確率は高まります。システム評価に関する古典の著者ロバート・パルドは、こう率直に述べています。
「アウト・オブ・サンプルのテストこそが、戦略の質を測る唯一の誠実な尺度である。最適化中に見ていないデータでシステムがエッジを保てないなら、そのシステムは市場にではなく過去に当てはめられたのだ。」 — Robert Pardo, 2008
だからこそ、イン・サンプルでの調整とアウト・オブ・サンプルでの確認に分けるのです。比率は通常70/30です。アウト・オブ・サンプルが明らかに劣るなら、それは過剰最適化であり、その戦略は実弾口座には適していません。より厳密な手法がウォークフォワード分析で、最適化の窓と検証の窓を交互に並べ、履歴のうえを少しずつ滑らせていきます。バックテストへの誤った自信に対する、私たちが持つ最良の防御策です。
仮想の例 — 数字を誠実に読む方法
EUR/USDのD1で、2019〜2024年にわたってテストしたスイング戦略を想像してください。例示的な結果はこうです — 147トレード、勝率54パーセント、平均リスクリワード比2.3対1、profit factor 1.78、ドローダウン14.5パーセント、5年間の純リターンはプラス87パーセント(複利換算で約13.3パーセント)。地味ですが現実的です — これは雛形であって、実在の口座ではありません。有用な次の一歩はモンテカルロ・シミュレーションで、トレードの順序を並べ替え、異なる順番のもとで資産がどう推移しえたかを示してくれます。
今日からできること
バックテストの知識は、実際に1回やってみて、その出力を自分のトレード記録と照らし合わせて初めて働き始めます。以下の5つのステップは数回の午後で終わり、成長途上のトレーダーが犯しがちな最もよくある誤りから救ってくれます。
- 戦略を1つのテキストファイルに、機械的に書き出してください。あらゆるエントリー、エグジット、損切り(ストップロス)、フィルターは、ルールを読んだ別の人がまったく同じトレードを置けるように書かれていなければなりません。どこかに「状況次第」と書き足したくなったら、ルールを締め直してください — バックテストは行間を読んでくれません。
- スイングなら5年分、デイトレードなら2年分のデータを集め、あらかじめ分割してください。最初の70パーセントを調整用に確保し、最後の30パーセントは戦略を凍結するまでロックします。そのうえで初めて、確保した部分でテストを実行します — これがあなたの本当の試験です。
- すべてのシミュレーションに現実的なコストを注入してください。FX会社のスプレッド、1ロットあたりの手数料、想定スリッページを加え、静かな時間帯と主要指標発表前後のセッションとで別々の値を用います。コストを含めて戦略が利益の20パーセント超を失うなら、答えは明白です — 安全余裕はありません。
- 100トレードという固い下限を設けてください。その窓で得られるトレードがそれより少ないなら、履歴を延ばすか、同じ系統の銘柄を追加するか、あるいは結果は証拠ではなく仮説だと受け入れてください。トレード数、平均ドローダウン、勝率を記録します — この3つの数字は、見出しのリターンより多くを語ります。
- バックテストに成功したら、実弾に移る前に最低3か月はデモで運用してください。デモとバックテストを比較し、デモが著しく劣るなら、過剰最適化、コストの過小評価、あるいはコーディングの誤りを疑います。実弾口座で良くなるという希望ではなく、ルールに立ち戻ってください。良いバックテストは良いライブ結果を決して保証しません — それは挑戦する権利を得たにすぎないのです。
出典・参考文献
-
MetaQuotes Strategy Testing in MetaTrader 5 · oficjalna dokumentacja testera strategii (testowanie i optymalizacja na danych historycznych) www.metatrader5.com ↗
-
MQL5 Reference Testing Trading Strategies · dokumentacja deweloperska MQL5: tryby generowania tików, symulacja spreadu, testy wielowalutowe www.mql5.com ↗
-
Bank for International Settlements OTC foreign exchange turnover in April 2022 · Triennial Central Bank Survey — dane o strukturze rynku FX (kontekst dla backtestu instrumentów detalicznych) www.bis.org ↗
よくある質問
戦略の過剰最適化とは何ですか?
過剰最適化(カーブフィッティング)とは、戦略のパラメータが過去の値動きに密着しすぎるよう調整された結果、新しいデータに対応できなくなった状態です。典型的な症状は、バックテストでは勝率95パーセント、実弾口座では30パーセントというものです。理由は単純で、勝率95パーセントはforexで長期的に維持できません — 現実の戦略は50〜60パーセントの範囲に収まります。あなたのバックテストが70パーセントを超える勝ちトレードを示すなら、それを警告と受け止め、反証されるまで過剰最適化を疑ってください。
バックテストにはどのソフトウェアを使うべきですか?
初心者にとって最も有力な選択肢は、MetaTrader 5に内蔵されたStrategy Testerです。無料で、複数通貨のテスト、実ティックデータ、遺伝的アルゴリズムによる最適化に対応しています。MetaTrader 4も今なお使われますが、1つの銘柄・1つの時間軸に限られます。Forex Tester 5は約300ドルで、ローソク足を1本ずつ手動で確認できます — ルールを自動化する前に視覚的な感覚を身につけたいトレーダーに向く良いツールです。TradingViewのPine Scriptは、単一銘柄の単純なテストには十分です。実務では、本格的なテストの大半はMT5、またはバックテスト専用ライブラリを備えたPythonのスクリプト環境で行うのが適切です。
誠実なテストにはどれだけの過去データが必要ですか?
スイングおよびポジション戦略では最低5年分のデータ、デイトレードでは2年、スキャルピングでは1年分の本物のティック履歴が目安です。これらの期間はカレンダー上の魔法の数字から来るのではなく、トレンド・レンジ・高ボラティリティといった異なる相場局面を網羅する必要から決まります。さらに、時間軸とは独立して統計的な条件があります — テストには最低100トレード、これは結果が運の産物にならないためです。プロは300以上を狙います。あなたの履歴がそれより少ないトレードしか生まないなら、期間を延ばすか、同じ系統の銘柄を追加してください — さもなければ、検証しているのは戦略ではなく仮説です。
良いバックテストの現実的な結果はどのようなものですか?
現実的な数字は、勝率50〜60パーセント、平均リスクリワード比が少なくとも2対1、profit factorが1.5〜3.0の範囲、最大ドローダウンが20パーセント未満です — 最低100トレード、かつアウト・オブ・サンプルの窓で確認された結果という前提付きです。Sharpeレシオが1を超えれば、ボラティリティに対して妥当なリターンを示します。レッドフラグは、勝率80パーセント超、profit factor 5超、ドローダウン5パーセント未満です — この組み合わせは、ほぼ常にエッジではなく過剰最適化を示しています。