GENESISの開発初期、バックテスト期間を1年に設定して検証していた時期があります。
結果は良好でした。PFも出ている。DDも許容範囲内。「これはいける」と思いました。
しかしその後、期間を3年・5年・10年と伸ばしていくと、結果が大きく変わりました。
1年では見えなかったドローダウン期間が出てきた。PFも思ったより低かった。1年の結果が、たまたま相場環境に恵まれていただけだったとわかりました。
この経験があるので、バックテスト期間については強い意見を持っています。
短期のバックテストは、見た目の結果が良くなりやすいです。しかしそれはEAの実力ではなく、「その期間だけ相場が合っていた」だけの可能性があります。
この記事では、バックテスト期間をどれだけ取るべきか、短期検証がなぜ危険なのかを解説します。
バックテスト期間が短いと何が起きるか
バックテスト期間が短いと、大きく2つの問題が起きます。
問題①|相場環境の偏りを拾えない
FX相場には様々な局面があります。
- 強いトレンドが出る時期
- レンジが長く続く時期
- ボラティリティが急上昇する時期
- 長期的に方向感がない時期
1〜2年のバックテストでは、これらすべての相場環境を網羅できません。
たまたまトレンドが多い時期だけを検証してしまった場合、トレンドフォロー型EAは異常に高いPFを出します。しかし実際の運用では、レンジ相場も必ずやってきます。
短期のバックテストは、相場環境の「いいとこ取り」になりやすいのです。
問題②|過剰最適化(カーブフィッティング)に気づけない
短期間のデータに対してパラメータを最適化すると、その期間だけ完璧に動くEAが完成します。
見た目の結果は非常に良くなります。PF3.0、勝率80%、DDほぼゼロ、といった数字が出ることもあります。
しかしそれは「過去のその期間だけに最適化されたEA」です。
期間が短いほど最適化の影響を受けやすく、フォワードに出た瞬間に崩れます。
過剰最適化の問題については、こちらも参考になります。
EAで破産する人の共通点について書いた記事です。過剰最適化のリスクにも触れています。
では何年分のバックテストが必要か
結論から言います。
最低5年、できれば10年です。
理由は、FX相場の大きなサイクルをカバーするためです。
相場には数年単位で性質が変わる局面があります。リーマンショック後の混乱期、長期的な円安トレンド、コロナショックによる急変動など、10年スパンで見ると相場の顔は大きく変わります。
5年あれば複数の相場環境をカバーできます。10年あれば、より様々な局面での検証ができます。
EA-Labの3つのEAは、すべて10年バックテストを基準にしています。
- GENESIS:10年・取引数1,223回
- 凜:10年・取引数451回
- AXIS:10年・取引数1,186回
10年というのはひとつの基準であって、絶対ではありません。ただし5年未満のバックテストで「これは使える」と判断するのは、EA開発者の立場からするとリスクが高いと感じます。
期間と同じくらい重要な「取引回数」
バックテスト期間の話をするとき、取引回数も必ずセットで確認が必要です。
たとえ10年のバックテストでも、取引回数が50回しかなければ統計的な信頼性は低くなります。
サンプル数が少ないということは、たまたま良い結果が出ただけの可能性が高くなるからです。
目安として、最低でも200〜300回以上の取引数があることが信頼性の条件のひとつです。
取引回数が少ないEAは
- 月に数回しかエントリーしない
- ロジックの条件が厳しすぎる
- 長期で見たときのサンプルが不足する
といった問題を抱えていることがあります。
凜のような低頻度EAの場合、10年で451回というのは決して多くはありません。だからこそ、フォワードで再現性を確認することを重視しています。取引回数が少ないEAほど、バックテストだけで判断してはいけません。
PFや勝率の正しい見方についてはこちらで詳しく解説しています。
短期バックテストを「使っていい」場面
ここまで短期バックテストの危険性を書いてきましたが、すべての場面でNGというわけではありません。
短期バックテストが有効な場面もあります。
ロジックの動作確認
「コードが正しく動いているか」を確認する目的であれば、短期で十分です。1〜3ヶ月のバックテストでエントリー・決済・SL・TPが想定通り動いているかをチェックする、という使い方です。
パラメータ変更後の挙動確認
パラメータを少し変えた後、大きく挙動が変わっていないかを素早く確認したいとき。全体評価ではなく「変化の有無」を見るための使い方です。
ポイントは「評価のためではなく確認のために使う」ということです。
短期バックテストで「このEAは使える」という判断をしてはいけない。しかし「動作確認・挙動確認」の用途であれば、有効なツールです。
バックテストとフォワードの役割分担
バックテストの期間について話してきましたが、そもそもバックテストだけでEAの実力を判断することには限界があります。
バックテストはあくまで過去データの再現です。
- スプレッドの再現精度
- 約定ズレ
- 流動性の変化
こういった要素は、バックテストでは完全に再現できません。
だからこそ、長期バックテストで基本的な実力を確認したあとは、フォワードテストで実際の相場での動きを検証するという流れが必要になります。
バックテストとフォワードの役割分担はこうなります。
バックテスト → ロジックの方向性を確認する・長期的な傾向を見る
フォワードテスト → 実際の相場で機能するかを確認する・最終的な判断をする
フォワードテストについてはこちらで詳しく解説しています。
バックテストで見るべき3つの数字
最後に、バックテストで確認すべき基本指標をまとめます。
①プロフィットファクター(PF)
総利益 ÷ 総損失で計算される指標です。
EA-LabではPF1.2前後を現実的な基準としています。
PF2.0を超えてくると、過剰最適化の疑いが出てきます。「高ければ良い」ではなく、現実的な範囲に収まっているかが重要です。
②最大ドローダウン
運用中に経験する最大の資金減少幅です。
EA-LabではDD10%以内を基準にしています。バックテストで10%以内に収まっていても、フォワードではそれ以上になる可能性があることを念頭に置いてください。
最大DDの許容基準についてはこちらをどうぞ。
③取引回数
先ほど書いた通り、統計的な信頼性に直結します。期間が長くても取引回数が少ない場合は、判断の根拠として弱くなります。
まとめ
バックテスト期間は最低5年、理想は10年です。
短期バックテストが危険な理由は2つ。
- 相場環境の偏りを拾えない
- 過剰最適化に気づけない
そして期間と同じくらい取引回数も重要です。長い期間・多い取引数のバックテストで基本的な実力を確認してから、フォワードで最終検証する。
この流れがEA検証の正しい手順です。
EA-LabのGENESIS・凜・AXISも、すべて10年バックテストを基準にしています。開発初期に1年バックテストで「いける」と思いかけた経験があるからこそ、期間の重要性は身をもって知っています。
バックテスト結果を見るときは、まず「何年分のデータか」「取引回数は何回か」を確認することから始めてみてください。