AIで作ったEAが、フォワードテストで落ちる理由――一番だまされるのは作った本人
はじめに:一番だまされるのは、作った本人
AIに頼めば、EAは数十分でできるようになりました。バックテストを回すと、右肩上がりの資産曲線が出る。ところが、実際の相場で動かすフォワードテストに出すと、勝てない。こういうケースが増えているそうです。
原因は、AIの腕が悪いことではありません。バックテストという道具には、「作った人が自分の作品を良く見せてしまう」という癖があります。AIはその癖を、人間よりずっと速く、何度でも繰り返せてしまうのです。
この記事では、AIで作ったEAがフォワードで落ちる理由を4つに分けて説明し、フォワードに出す前に自分で確かめられる5つの点検を紹介します。
理由1:AIは、頼まれたとおりにバックテストを良くする
EAをAIと作るとき、よくある会話はこうです。
- 「バックテストの結果がこれです。もっと良くして」
- 「この時間帯は負けが多いので、外す条件を足して」
- 「損切りと利確の幅を、一番成績が良くなる値にして」
AIはこの頼みに忠実に応えます。そして、結果は必ず良くなります。負けた取引を見てから、その負けを除く条件を足しているのですから、当然です。
問題は、その条件が「過去のこの期間」にだけ合わせたものだったときです。未来の相場は、ちがう日にちがう負け方をします。過去に合わせるほど、バックテストは良くなり、フォワードとの差は広がります。これを「過剰最適化(カーブフィッティング)」と呼びます。
AIが悪いのではなく、「バックテストを良くして」という頼み方そのものが、過剰最適化の指示になっているのです。
理由2:何回試したかが、見えない
サイコロを5回振って全5回が6の目になるのは、めったに起きません。でも、1万人が同じことをすれば、何人かは必ずそうなります。その何人かだけを連れてきて「この人はサイコロの名人だ」と言うのが、多くのバックテストで起きていることです。
AIとの会話では、この「試した回数」があっという間に増えます。インジケーターを変えてみる、時間足を変えてみる、通貨ペアを変えてみる。一つひとつは軽い試しでも、合計すると何百通りになっていることがあります。
ところが、最後に残るのは「一番良かった1つの結果」だけです。何百通りの試しがあったことは、バックテストのレポートのどこにも書かれていません。だから、作った本人も、それが偶然の当たりかどうかを見分けられなくなります。
私自身、ある探索で129回の検定を回し、5本が採用条件を通りました。ところが中身を調べると、5本はどれも同じ一つの現象を、少しずつ違う条件で拾っていただけでした。この話は「合格5本、正体は1つ」の記事に書きました。
対策は単純です。試した回数をメモしておき、試した数が多いほど、「偶然ではない」と言うための基準を厳しくします。
理由3:数件の大勝ちに支えられている
実例で見てみます。MT5に最初から付いているサンプルEA「Moving Average」を、EURUSDの1時間足、2026年1月から9月でバックテストしました。誰でも同じ結果を出せます。
結果は、取引193件、合計+958.87ドル、プロフィットファクター(PF)1.55。資産曲線も右肩上がりです。普通に見れば「なかなか良いEA」です。
では、利益の大きい順に取引を1件ずつ除いていくと、どうなるでしょうか。
| 除いた大勝ち | 残りの件数 | 合計損益(ドル) |
|---|---|---|
| 0件 | 193 | +958.87 |
| 1件 | 192 | +686.40 |
| 2件 | 191 | +443.18 |
| 3件 | 190 | +279.05 |
| 4件 | 189 | +119.85 |
| 5件 | 188 | −34.27 |
193件のうちの5件、全体の約2.6%を除くだけで、合計がマイナスになりました。取引ごとの損益の中央値は−1.40ドルで、ふだんの1件は小さな負けです。
この形そのものが悪いわけではありません。ただ、フォワードの数か月でその「数件の大勝ち」が来なければ、成績はマイナスです。フォワードで落ちたとき、EAが壊れたのではなく、もともとそういう成績だった、ということがよくあります。
ちなみにこのEAは、平均損益の95%信頼区間が−1.50〜+11.80ドルで、ゼロをまたいでいます。統計の言い方をすれば「優位性がないEAでも、このくらいの成績は偶然に出うる」範囲です。
理由4:コストと期間の前提が甘い
同じサンプルEAのレポートをよく見ると、手数料の合計が0でした。MT5のテスターは、設定しなければ手数料を入れずに計算します。実際の口座には手数料もあり、スプレッドもテスターより広がることがあります。
取引の回数が多く、1回あたりの利益が小さいEAほど、この差で利益が消えます。私自身、検証の前提にしていた手数料が業者の公式表記と違っていて、実質コストが約64%上がったことがあります。
もう一つは期間です。このサンプルEAを前半と後半に分けると、次のようになります。
| 期間 | 取引数 | 合計損益(ドル) | 1件あたりの平均 | PF |
|---|---|---|---|---|
| 前半 | 96 | +846.16 | +8.81 | 1.84 |
| 後半 | 97 | +112.71 | +1.16 | 1.15 |
利益のほとんどは前半にあり、後半の平均は前半の約13%しかありません。合計だけ見ると「9か月でプラス」ですが、実際は「前半の相場にたまたま合っていた」可能性を否定できません。フォワードは、この「後半」の続きから始まるのです。
フォワードに出す前の5つの確認
どれも、バックテストのレポートと表計算ソフトがあれば確かめられます。
- 大きい勝ちを上から3〜5件除いて、合計がマイナスにならないか。 なるなら、その数件がフォワードでも来るとは限りません。
- 取引ごとの損益の中央値と、取引数。 取引が30件に満たないなら、判断するには少なすぎます。
- 前半と後半に分けて、どちらもプラスか。 片方だけで稼いでいるなら、その期間の相場に合っていただけかもしれません。
- 実際の口座の手数料とスプレッドを入れても、利益が残るか。 テスターの手数料が0のままになっていないかも確かめます。
- 何通り試して、この設定を選んだか。 AIとのやりとりで試した条件も数えます。数が多いほど、1〜4の結果は厳しめに読みます。
AIに頼むなら、「バックテストを良くして」ではなく「このバックテストが偶然でないか、上の5つで疑って」と頼んでください。同じAIが、今度は悪いところを探す役に回ります。
まとめ
- AIは「バックテストを良くして」という頼みに忠実に応える。それがそのまま過剰最適化になる
- 何通り試したかはレポートに残らない。自分で数えておく
- 大きい勝ちを数件除いても、前半と後半に分けても、実際のコストを入れても、利益が残るかを確かめる
フォワードテストは、バックテストが偶然だったかどうかを、時間をかけて確かめる場です。その前に自分で疑っておけば、落ちることが分かっているEAを出して数か月待つ、という遠回りを減らせます。
続きは、第2回「プロフィットファクターより先に見る数字」に書きました。5つの確認をまとめた第3回「EAを出品する前のチェックリスト」もあわせてどうぞ。
おまけ:この確認をまとめて行うには
この記事の数字は、自作の点検ツール「EA頑健性チェック」で出したものです。MT5のバックテストレポートを渡すと、上の5つをまとめて調べ、判定と気をつけるべき点を文章で出します。判定の基準は固定で、結果を見てから緩めることはできません。表計算で手を動かすのが面倒な方は、のぞいてみてください。
自分では疑いにくい、という方向けに、点検を受けられるサービスも用意しています。EAバックテストの頑健性を第三者が点検します ¥14,800(Skijan)。MT5のレポート最大3本をお預かりし、所見書(PDF)にまとめて3営業日以内にお返しします。判定の基準は固定で、結果が良くなかった場合に結果を変えることはできません。
※本記事は筆者自身の検証の進め方を紹介するもので、特定の銘柄・手法・EAの売買を勧めるものではありません。過去の検証結果は将来の成績を保証するものではありません。