すべてのトレーダーは、頭の中で素晴らしく見える戦略を持っています。エントリーは理にかなっている。ロジックは健全に感じられる。しかし、実際のお金をそこに置くと、なぜ結果が予想と全く異なって見えるのか疑問に思います。ほぼ常に、欠けているステップはバックテストです。
バックテストとは、トレーディング戦略を過去の価格データに適用して、どのようなパフォーマンスを発揮したかを確認することを意味します。これはトレーダーが持つ最も実験室に近いものです。資本をリスクにさらして戦略が機能するかどうかを確認する代わりに、過去のデータは、1ドルもリスクに晒される前に、アイデアをテストし、パフォーマンスを測定し、弱点を特定するための制御された環境を提供します。
しかし、バックテストは、多くのトレーダーが自分たちをだます場所でもあります。不適切に行われた場合、紙の上では素晴らしく見えるが、ライブマーケットで崩壊する結果が生じます。適切にバックテストする方法、そしてより重要なことに、結果を正直に解釈する方法を理解することは、トレーダーが習得できる最も価値のあるスキルの1つです。
マニュアルバックテストと自動バックテスト
バックテストには2つの根本的なアプローチがあり、それぞれに異なるトレードオフがあります。
マニュアルバックテスト
マニュアルバックテストは、過去のチャートをバーごとにスクロールして、戦略ルールと一致するセットアップを特定し、エントリーと出口を記録し、手作業またはスプレッドシートで結果を計算することを含みます。遅いです。1つの市場で1つの戦略の徹底的なマニュアルバックテストは数日から数週間かかることがあります。
利点は理解の深さです。マニュアルでバックテストするトレーダーは、自動テスターが決してしない方法でプライスアクションを読むことを学びます。彼らは、セットアップが実際のリアルタイムでどのように見えるかについての直感を養います。これには、コード化された戦略がきれいなロジックで処理するが、ライブトレーダーは即座に解釈しなければならない乱雑で曖昧なシグナルも含まれます。
マニュアルバックテストは、裁量戦略、パターンベースのエントリー、およびセットアップを一貫して特定することを学んでいるトレーダーに最適です。
自動バックテスト
自動バックテストは、ソフトウェアを使用して、コード化された戦略を過去のデータに適用し、数秒で結果を生成します。一般的なプラットフォームには、MetaTraderのStrategy Tester、TradingViewのPine Script backtester、およびPython(BacktraderやZiplineなどのライブラリを使用)のカスタムスクリプトが含まれます。
利点はスピードとスケールです。自動バックテストは、移動平均クロスオーバー戦略を20年間のデータで50の商品にわたって数分で実行できます。有利なセットアップを恣意的に選択したり、無意識のうちに失敗トレードをスキップしたりする人間の傾向を排除します。すべてのシグナルが取られ、すべての結果が記録されます。
欠点は、戦略のコーディングが簡素化を強制することです。「トレンドが強く見える」または「ボリュームがおかしい」などのニュアンスをルールに変換することは困難です。また、自動テストのスピードにより、過度の最適化が非常に簡単になり、これは以下で詳しく説明する問題です。
マニュアルバックテスト対自動バックテスト
| 要因 | マニュアル | 自動 |
|---|---|---|
| スピード | 遅い(数日/数週間) | 速い(数分/数時間) |
| サンプルサイズ | 通常50~200トレード | 約数千トレード |
| 必要なスキル | チャート読み | コーディング/スクリプティング |
| 最適な用途 | 裁量戦略 | ルールベースシステム |
| チェリーピックリスク | 高い(人間バイアス) | なし(すべてのシグナルが採用) |
| 過度な最適化リスク | 低い | 約高い |
| 直感構築 | 強い | 弱い |
実際に重要な主要メトリクス
バックテストは多くの数字を生成します。それらすべてが同等の注意を払う価値があるわけではありません。これらは有用な結果をノイズから分離するメトリクスです。
純利益/総リターン。 最終的な結果。戦略はお金を稼いだのか?これは出発点ですが、分離されて見た場合、最も誤解を招くメトリクスでもあります。200%を返した戦略で70%のドローダウンがあった場合と、80%で15%のドローダウンで返した戦略は同じではありません。
勝率。 利益を上げたトレードの割合。多くの初心者が仮定するのとは異なり、勝率だけでは戦略の質についてほぼ何も言いません。40%の勝率を持つ戦略は、勝ちが敗者よりも有意に大きい場合、非常に利益を上げることができます。80%の勝率を持つ戦略は、敗者の20%が壊滅的である場合、災害である可能性があります。勝率はリスク・リワード比の文脈でのみ意味を持ちます。
利益ファクター。 総利益を総損失で割ったもの。1.0を超える利益ファクターは、戦略がお金を稼いだことを意味します。1.5を超えるのは一般的に堅実と見なされます。大規模なサンプルで3.0を超えるのは、祝うべきではなく、懐疑心を持つべきです。
最大ドローダウン。 エクイティカーブの最大ピークからトラフへの下落。これは、この戦略が回復する前にどれだけの苦痛を与えるのかという質問に答えるため、実世界の実行可能性にとっておそらく最も重要なメトリクスです。最大ドローダウンが50%の戦略は、損益分岐点に達するだけで100%のゲインが必要であり、ほとんどのトレーダーはその回復が起こる前にそれを放棄します。
シャープ比率。 リスク調整済みリターン。平均リターンをリターンの標準偏差で割ったもので計算されます。高いほど良い。シャープ比率が1.0を超えるのは許容可能で、2.0を超えるのは強いです。過度な変動性を通じてリターンを達成する戦略にペナルティを与えます。
トレード数(サンプルサイズ)。 これはほとんどのトレーダーが無視するメトリクスであり、他のメトリクスのいずれかが何かを意味するかどうかを決定するメトリクスです。
バックテストメトリクスクイックリファレンス
| メトリクス | 何を測定するか | 良好な範囲 | 警告信号 |
|---|---|---|---|
| 純利益 | 総P&L | ポジティブ | 長期間ネガティブ |
| 勝率 | 利益を上げたトレードの% | 40~65% | 約85%以上 |
| 利益ファクター | 総利益/総損失 | 1.3~2.5 | 約4.0以上 |
| 最大ドローダウン | 最悪のエクイティ低下 | 25%未満 | 約50%以上 |
| シャープ比率 | リスク調整済みリターン | 1.0以上 | 0.5未満 |
| トレード数 | サンプルサイズ | 200+ | 約30未満 |
サンプルサイズの問題
戦略が15トレードを生成し、そのうち12が勝者である場合、勝率は80%です。それは素晴らしく聞こえます。また、ほぼ何も意味しません。
15トレードで、ランダムチャンスは、実際のエッジのない戦略から80%の勝率を簡単に生成できます。公正なコインを15回フリップして、12以上のヘッドを取得する確率は約3%です。それは天文学的ではありません。30の異なる戦略を実行すると、その1つはおそらく純粋な運でそれらの数に当たります。
統計的有意性には量が必要です。大まかなガイドとして:
- 30トレード未満: 結果は本質的に無意味です。スキルとランダム性を区別するには小さすぎます。
- 30~100トレード: 方向指示のみ。戦略はエッジを持つかもしれませんが、自信は低いです。
- 100~200トレード: 結果は有益になり始めます。パフォーマンスのパターンが安定し始めます。
- 200+トレード: 適切な自信のための最小閾値。サンプルが大きいほど、メトリクスはより戦略の真のパフォーマンスに収束します。
これが、高周波数戦略が統計的に検証しやすい理由です。1日20トレードを生成するスケーピングシステムは、2ヶ月で1,000データポイントを蓄積できます。月に2~3トレードを取るスイングトレーディング戦略は、同じ信頼レベルに到達するのに数年のデータが必要です。
カーブフィッティング:すべてを捕らえるワナ
カーブフィッティング(過度適合とも呼ばれる)は、バックテストが実際のライブトレーディングに変換されない結果を生成する最も一般的な理由です。また、自分がそれに陥っているときに認識するのが最も難しいワナです。
カーブフィッティングは、バックテストが完璧に見えるまで、トレーダーがルール、フィルター、またはパラメータ調整を追加し続けるときに発生します。RSIエントリー閾値は30から27に微調整されます。ボラティリティフィルターは、パフォーマンスが最も悪い3ヶ月を排除します。時間帯の制限は、敗者セッションを削除します。各調整はバックテスト数を改善します。また、各調整は戦略をテストした過去のデータに特化させ、見たことのないデータで機能する可能性を低くします。
コアの問題は以下の通りです:過去のデータには、シグナル(実際の繰り返しマーケットパターン)とノイズ(ランダムな1回限りのイベント)の両方が含まれています。堅牢な戦略はシグナルをキャプチャします。過度に適合した戦略はノイズを暗記します。
過度に適合した戦略の警告兆候:
- 戦略は5~6以上のルールまたはフィルターを持っています
- パラメータは奇妙に具体的です(14:37でのエントリー、RSIは27.3、ストップは1.7 ATR)
- エクイティカーブは疑わしいほど滑らかで、ほぼドローダウンがありません
- 勝率80~85%以上
- パフォーマンスは、単一のパラメータが少しでも変更されると大幅に低下します
- 戦略は1つの商品または1つの時期にのみ機能します
有用な経験則:戦略が主要パラメータの10~20%の変更を生き残ることができない場合、それはおそらく過度に適合しています。堅牢な戦略はパラメータに鈍感です。48/198期間で機能するSMAクロスオーバーは、50/200および52/205でも合理的に機能する必要があります。1つの正確な組み合わせでのみ機能する場合、結果はデータのアーティファクトであり、実際のエッジの反映ではありません。
サンプル内テストとサンプル外テスト
カーブフィッティングに対する標準的な防御は、過去のデータを2つのセグメントに分割することです。
サンプル内データは、戦略を開発および最適化するために使用されます。これは、ルールがテストされ、パラメータが調整され、戦略が形成される砂場です。
サンプル外データは戻され、戦略が確定されるまで手つかずで保たれます。戦略がロックインされたら、このリザーブデータでテストされます。パフォーマンスが保持される場合、慎重な信頼の理由があります。それが崩壊する場合、戦略はサンプル内の期間に過度に適合している可能性があります。
一般的な分割は70/30です:データの70%で開発し、30%で検証します。一部のトレーダーはウォークフォワード分析を使用します。これは、ローリングのサンプル内ウィンドウで繰り返し最適化し、次のセグメントでテストします。これにより、異なる市場条件全体で複数のサンプル外の結果が得られます。
重要なルール:サンプル外データは1回だけ使用できます。トレーダーがサンプル外の結果を見て、戦略を微調整しに戻ると、そのデータはもはやサンプル外ではなくなります。それは汚染されています。これは微妙だが破滅的な間違いであり、常に発生しています。
結果を膨らませるデータバイアス
適切に構造化されたバックテストでも、基礎となるデータが欠陥のある場合、誤解を招く結果を生成できます。
生存者バイアス
ほとんどの株式データベースには、現在存在する企業のみが含まれています。破産した、上場廃止された、または火売り価格で買収された数百の企業は欠けています。「S&P 500株」の現在の構成要素を使用したバックテストは、S&P 500が歴史的に存在したようにテストしていません。勝者の厳選されたリストをテストしています。これはリターンを体系的に膨らませ、戦略がリアルタイムでのパフォーマンスをより良く見せます。
ルックアヘッドバイアス
ルックアヘッドバイアスは、バックテストがトレード時に利用できなかった情報を使用するときに発生します。例には、修正された経済データ(GDP数字は数ヶ月後に定期的に修正される)、完全なデータセットで計算されたインジケーターの適用、またはセッション終了時に終了した日の終値に基づくトレード開始が含まれます。その価格は、セッション終了まで不明でした。
自動バックテストでは、ルックアヘッドバイアスは多くの場合、コーディングエラーを通じて忍び込みます。バー Nからのデータを使用してシグナルを計算し、バー Nでトレードを開始(バー N+1ではなく)するスクリプトには、すべてのシグナルに組み込まれたルックアヘッドバイアスがあります。
スプレッドとコミッション軽視
驚くほど多くのバックテストは、ゼロの取引コストを想定しています。月に3~4回のトレードをするスイングトレーダーの場合、これはおそらく結果を大きく変えないでしょう。1日に20トレードをするスキャルパーの場合、トレードごとわずか1ピップのスプレッドでも、利益を上げるシステムを敗者に変える可能性があります。常に現実的なスプレッド、手数料、およびスリッページ推定を含めてください。疑わしい場合は、コストを過小評価するのではなく、過大評価してください。
フォワードテスト:ライブトレーディングへのブリッジ
バックテストとサンプル外検証に合格した戦略には、実際の資本に値する1つ以上のハードルがあります:フォワードテスト、別名ペーパートレーディング。
フォワードテストとは、デモアカウントまたはシミュレートされたフィルで、リアルタイムで戦略をトレードすることを意味します。バックテストとは異なり、フォワードテストは戦略が見たことのないデータで発生し、ライブで展開している市場条件で発生します。これは戦略ロジックだけでなく、実行の現実もテストします:トレーダーは実際にリアルタイムでシグナルを特定できますか?フィルは現実的ですか?戦略は、次に何が起こるかを前に進んでチラッと見る能力がない場合、まだ機能しますか?
最小フォワードテスト期間は戦略のタイムフレームに依存します。デイトレーディング戦略は、少なくとも1~2ヶ月間フォワードテストされるべきです。スイングトレーディング戦略には、十分なトレードを蓄積するのに3~6ヶ月必要です。目標は、バックテスト結果を正確に複製することではなく、戦略がポジションサイジングと実行の通常の変動を考慮して、バックテストされた期待の合理的な範囲内でパフォーマンスを確認することです。
戦略検証パイプライン
| ステージ | 目的 | 期間 | 何が通るのか |
|---|---|---|---|
| サンプル内バックテスト | ルール開発と最適化 | 過去(データの70%) | ポジティブな期待、合理的なメトリクス |
| サンプル外バックテスト | 未確認データに対する検証 | 過去(データの30%) | パフォーマンスはサンプル内の20~30%以内 |
| フォワードテスト(ペーパー) | ライブ条件で確認 | 1~6ヶ月のリアルタイム | バックテストと一致した結果 |
| ライブ(小規模) | 実行可能性を証明 | 1~3ヶ月の小資本 | 予期しないスリッページまたはフィルの問題なし |
| ライブ(フルサイズ) | 戦略を展開 | 継続中 | 約継続的な監視とレビュー |
現実的な結果はどのように見えるか
バックテストが教える最も有用なことの1つは、キャリブレーションです。バックテストをしたことがないトレーダーは、野生のように非現実的な期待を持つ傾向があります。広範にバックテストしたトレーダーは、実際のエッジが何であるかを知っており、それは通常謙虚です。
50~60%の勝率と1.3~2.0の間の利益ファクターを持つ戦略は、本当に堅実です。これは興奮しているように聞こえないかもしれませんが、規律あるリスク管理で数百のトレードで複合すると、意味のあるリターンを生成します。90%以上の勝率を持つ戦略は、ほぼ常に隠れたリスクを持っています:彼らは頻繁に少額を勝ち、その後、稀だが壊滅的な損失のすべてを返す(とそれ以上)。オプション売却戦略はこのパターンの古典的な例です。
良好なバックテストは、戦略が機能することを証明しません。それは戦略がさらにテストする価値があることを証明しています。目標は確実性ではなく、証拠に基づく情報に基づいた自信です。
一般的なバックテストの間違い
上記で説明した主な落とし穴を超えて、これらのエラーは定期的にバックテストの品質を損なわせます:
- 期間が短すぎる場合にテストしている。 強気市場でのみテストされた戦略はストレステストされていません。少なくとも1つの完全な市場サイクルが含まれるデータを使用してください:強気、弱気、および横向き条件。
- 完璧さへの最適化。 バックテストで最良のパラメータセットは、前に最良のパラメータセットであることはほぼありません。最適ではなく、堅牢を目指します。
- レジームの変化を無視。 トレンドフォローイング戦略は、トレンド市場中にバックテストされた場合、見事に見えます。問題は、レンジ条件中にどのようにパフォーマンスするのかです。異なる市場環境全体でテストします。
- 即座のフィルを想定。 ライブトレーディングでは、指値注文はミスして市場注文スリップです。リアルなフィル仮定を構築してください。特に不安定な期間中は。
- 仮説のないバックテスト。 何かが機能するまでインジケーターとパラメータの組み合わせをランダムにテストするのは、戦略開発ではなくデータマイニングです。戦略がなぜ機能すべきかについての論理的な論文から始めて、データがそれをサポートしているかどうかをテストしてください。
重要なポイント
バックテストは、利益を上げるトレーディングへのショートカットではありません。これは、さらなるテストに値する戦略を、破棄すべき戦略から分離するプロセスです。適切に行われた場合、トレーダーが精査に耐えられないアイデアに何ヶ月と重要な資本を浪費するのを防ぎます。
- マニュアルバックテストは直感を構築します;自動バックテストは統計的自信を構築します。ほとんどの真剣なトレーダーは両方を使用します。
- サンプルサイズがすべてです。30トレード未満の結果はノイズです。意味のあるデータのために200+トレードを目指します。
- カーブフィッティングは、チェックされていない最適化のデフォルト結果です。サンプル外テスト、パラメータ感度分析、および誠実な自己評価でそれと戦います。
- フォワードテストはオプションではありません。それは実際の資本をリスクする前の最終的な検証ステップです。
- 現実的なエッジは謙虚です。55%の勝率と1.5の利益ファクターがトレーディング価値のある戦略です。95%の勝率と5.0の利益ファクターは、ほぼ確実に真実です。
免責事項: このコンテンツは教育目的のみを目的としており、財政的なアドバイスを構成していません。トレーディングは実質的な損失リスクを伴います。過去のパフォーマンスは将来の結果を保証しません。