バックテスト基礎

「過剰最適化」を疑うための具体的なチェックリスト

EAのバックテスト結果が良すぎる場合、過剰最適化(カーブフィッティング)の罠に落ちている可能性が高い。未来の相場では機能しない「過去の答え合わせEA」を見抜くためのチェック項目を整理する。

バックテストのグラフが、美しい右肩上がりを描いている。
PFは2.5。最大ドローダウンはわずか5%。月単位で見ても全戦全勝でマイナスの月がない。

「ついに聖杯(完璧なEA)が完成した」

初心者の頃、私はこのグラフを見て小躍りし、すぐにリアル口座に資金を入れた。
結果は言うまでもない。稼働初日から連敗し、美しいグラフは一度も再現されることなく、口座はマイナスになった。

なぜ、バックテストとリアルでこれほど成績が違うのか。
それは私が「未来でも勝てるEA」を作ったのではなく、「過去のデータに完璧に一致させただけのEA」を作ってしまったからだ。

これを「過剰最適化(カーブフィッティング)」と呼ぶ。
EA開発者が一生かけて戦い続ける、最も恐ろしい罠だ。

バックテストが良すぎることへの恐怖

EA開発に慣れてくると、バックテストの成績が「良すぎる」ことに恐怖を感じるようになる。

相場にはノイズがある。理不尽な急騰や急落がある。
それなのに全勝できるということは、「その理不尽な動きを回避するための条件(フィルター)」が、後出しジャンケンでガチガチに組み込まれている証拠だからだ。

過去の理不尽な動きを回避できたとしても、明日起きる「新しい理不尽な動き」は回避できない。条件がガチガチすぎるEAは、少しでも過去と違う動きをすると、途端に機能しなくなる。

だから、過剰最適化を疑う「目」を持たなければならない。

過剰最適化を見抜く7つのチェックリスト

私が新しいEAを評価するとき、必ず以下の項目をチェックしている。

1. PF(プロフィットファクター)が2.0を超えていないか

スキャルピング等の一部例外を除き、PFが2.0を超えるEAは過剰最適化を疑う。1.3〜1.5程度が、未知の相場にも耐えうる「自然な優位性」のラインであることが多い。

2. パラメータの数は5つ以下か

「RSIの期間」「MAの期間」「ボリバンの偏差」「ADXの閾値」「トレーリングストップの幅」……。最適化できる数字(パラメータ)が多いほど、カーブフィッティングは容易になる。パラメータは極力減らすのが鉄則だ。

3. 取引回数は十分にあるか

「フィルターを足しすぎて、月間取引回数が2〜3回になっている」のは過剰最適化の典型。統計が機能する最低でも200回、できれば500回以上の取引履歴があるか。

4. 全月プラス(マイナスの月がない)ではないか

数年間のバックテストで「マイナスの月が一度もない」のは不自然だ。相場環境が変われば必ず負ける月は発生する。適度に負けている月がある方が、逆にリアルだ。

5. アウトオブサンプル(未学習データ)でのテストをしたか

たとえば2018年〜2022年の5年間でパラメータを最適化した場合、その最適化されたパラメータのまま「2023年〜2024年の2年間(EAが知らないデータ)」でテストする。ここでPFが大きく劣化する(1.0を割るなど)なら、それはカーブフィッティングだ。

6. パラメータ感度(ロバスト性)は高いか

損切り幅を30pipsから35pipsにズラしただけで、PFが1.5から0.8に急落するなら、それは「たまたま30pipsが過去のデータに合っていただけ」だ。パラメータを前後10%ほどズラしても、成績が大きく崩れない(ロバスト性が高い)ことを確認する。

7. 他の通貨ペアでも通用するか

ユーロドル専用のEAだとしても、ポンドドルや豪ドル米ドルで回した時に「爆損」しないか(微益やトントンになるか)確認する。ロジックの普遍性を確かめるためだ。

この記事のメモ

「最適化」はEAの性能を引き出すために必要だ。
しかし「過剰」になった瞬間、そのEAは実用性を失う。

カーブフィッティングされたEAを買ってしまったり、自分で作ってしまったりするのは、別に頭が悪いからではない。
「損をしたくない」「綺麗な右肩上がりのグラフを見たい」という人間の心理が、無意識にそうさせてしまうのだ。

だからこそ、客観的なチェックリストで自分にブレーキをかける必要がある。
「このEA、成績良すぎるな。何かやってしまったか?」
そう疑えるようになったら、EA運用者として一つ上のステージに上がった証拠だと思う。

FAQ

Q: アウトオブサンプルテストの期間の割合はどうすればいいですか?
よくあるのは「最適化期間70%:未学習期間30%」などの分割です。たとえば7年間のデータがあるなら、最初の5年で最適化し、残りの2年でテストします。

Q: 最適化機能(オプティマイゼーション)自体を使わない方がいいですか?
使っても構いませんが、「一番成績が良かったパラメータ」を選ぶのは危険です。「その周辺のパラメータでも安定して成績が良いゾーン」の中から選ぶのが基本です。

免責

本記事は個人の検証メモであり、投資助言ではありません。過剰最適化の判断基準は開発者によって異なります。