過剰最適化:高原と運の良い峰を見分ける方法
執筆 chwoo · 仮想通貨トレード7年。2026年春から自動売買ボットを運用。 · · 更新
不都合な事実があります。十分な数のパラメータの組み合わせを試せば、あなたは 必ず 見事なバックテストを1つ見つけます。隠れた宝石が存在するからではなく、ランダム性がそれを保証するからです。 期間・しきい値・決済の組み合わせが何百もあれば、そのうちどれかは過去データのすべての暴落を避け、すべての ラリーを捉えます。純粋な偶然で。
それが 過剰最適化(カーブフィッティング) です。過去のノイズの中のパターンを市場の性質だと 取り違えることです。厄介なのは、その設定が画面上で本物とまったく同じに見えることです。リターン+400%は、 優位性から来たものでも偶然から来たものでも、同じ+400%として表示されます。両者を見分ける方法はひとつだけ、隣を見ることです。
尖点と高原
良さそうな設定が見つかったら、その値を一段ずつ動かして再実行します。RSI期間が14なら12と16を、しきい値が30なら 25と35を確かめます。結果は次のどちらかです。
- 近くの設定も似た挙動なら 高原(plateau) です。市場の実際の性質を捉えている可能性があります。 本物の効果はカミソリのように薄くはないからです。
- 一段隣で成績が崩れたり符号が反転したりするなら 尖点(peak) です。偶然を見つけたのです。 市場は、あなたのRSI期間がちょうど13だったことなど気にしません。
主張ではなく、実際に走らせる
このサイトのエンジンでスイープを実行しました。対象は初心者が最初に学ぶルール、RSIが30を上抜けたらロング です。BTCの1時間足、利確3% / 損切り2%、片道の手数料0.06%と スリッページ0.02%を反映、レバレッジ1倍、建玉比率90%。データは2026年8月31日までのバイナンスのローソク足です。 まずRSI期間だけを変えました。
| RSI期間 | ROI | MDD | 取引数 | シャープ |
|---|---|---|---|---|
| 8 | -80.9% | 87.6% | 1,246 | -0.64 |
| 10 | -86.6% | 91.0% | 1,031 | -0.92 |
| 12 | -85.9% | 90.4% | 849 | -1.01 |
| 14 | -80.9% | 85.2% | 695 | -0.94 |
| 16 | -83.6% | 85.2% | 569 | -1.16 |
| 18 | -75.8% | 78.5% | 472 | -0.99 |
| 20 | -68.0% | 70.5% | 400 | -0.86 |
ここから得る教訓は「期間20が一番良い」ではありません。高原でも尖点でもなく、地形そのものが水面下にある ということです。どの値を選んでも資本の 3分の2以上を失います。この表から1つだけ選んで「RSI 20が最適」と発表したなら、それは最適化ではなく、 より悪くない損失を選んだだけです。
しきい値を変えても同じかを確かめました。今度は期間を14に固定し、しきい値だけを動かします。
| しきい値 | ROI | MDD | 取引数 | シャープ |
|---|---|---|---|---|
| 20 | -59.3% | 60.7% | 157 | -1.13 |
| 25 | -69.9% | 72.3% | 394 | -0.92 |
| 30 | -80.9% | 85.2% | 695 | -0.94 |
| 35 | -76.6% | 84.9% | 1,014 | -0.64 |
| 40 | -80.1% | 85.8% | 1,246 | -0.62 |
| 45 | -64.6% | 73.4% | 1,339 | -0.32 |
2つの表を合わせて13の設定を走らせ、利益が出たものは1つもありません。ここまで来たときのよくある反応は、 もっと細かい格子で探すことです。期間13、15、17を入れ、しきい値28、32を入れる。それを続ければ、いずれ どこかのマスがプラスで返ってきます。その瞬間が、まさに過剰最適化が起きるところです。
多重比較の罠
公正なコイン1,000枚をそれぞれ10回投げれば、そのうち何枚かは8回以上表が出ます。そのコインを指して 「このコインは表が出やすい」と言うのは誤りです。特別なコインを見つけたのではなく、コインが多かったのです。
パラメータ探索はまさにそれです。1つの設定を検証しているのではなく、何百を同時に検証して最良を残しています。 最良の設定の成績は定義上 実力+運 であり、試行回数が多いほど運の項が大きくなります。 だから何を何回試したかを記録することが重要です。40回目に見つけた+50%と、1回目に出た+50%は同じ数字では ありません。
パラメータではなく構造を変える
あの表が実際に教えているのは、より良い数字の選び方ではありません。このルールがなぜ負けるのかを問うことです。 RSIの30上抜けは下降トレンド中も発生し続け、そのたびに落ちるナイフをつかみます。ならばパラメータを揺らす 代わりに、条件を1つ足すべきです。200EMAより上でのみ買うようにしました。
| 設定 | ROI | MDD | 取引数 | 勝率 |
|---|---|---|---|---|
| フィルターなし | -80.9% | 85.2% | 695 | 38.0% |
| 200EMAより上 | -17.3% | 22.0% | 79 | 38.0% |
同じ指標、同じ値なのに結果はまったく違います。そして変わらなかったものに注目してください。勝率はどちらも38.0%です。 フィルターは勝つ確率を上げたのではなく、負けると決まっている取引をしないようにしたのです。取引は695件から 79件に減り、損失もそれに応じて減りました。パラメータ調整ではこの種の変化は生まれません。
ここで止まってはいけません。フィルター版も尖点かもしれないので、同じように隣を確認します。
| RSI期間 | ROI | MDD | 取引数 |
|---|---|---|---|
| 10 | -26.4% | 34.5% | 198 |
| 12 | -21.2% | 25.9% | 123 |
| 14 | -17.3% | 22.0% | 79 |
| 16 | -23.7% | 24.9% | 37 |
| 18 | -5.4% | 10.0% | 19 |
地形がなだらかになりました。-5%から-26%の間に収まり、一段隣で符号が反転したり崩れたりしません。依然としてすべて損失ですが、損失が一貫していること自体が情報です。 このルールは運が悪いのではなく、構造的にコストを超えられないという意味です。
サンプルが消えることに注意
最後の表で最も良く見えるのは期間18の-5.4%です。しかしそのマスは 19取引 に乗っています。 19取引から計算されたリターンは統計ではなく物語で、前後に数件違っていれば符号が変わり得ます。
条件を足すたびにエントリー機会は減ります。695件が79件になり、期間を延ばせば19件になります。フィルターは 無料ではありません。損失の縮小をサンプルで買っており、サンプルが薄くなると残った数字は偶然へ近づきます。 戦略の条件が4つを超えると、このツールの結果画面がそれを警告する理由です。
黄金の1期間では足りない
2021年だけで調整した戦略は、ひとつの教訓しか学びません。「下がったら買え」。その教訓は次の下落相場で死に ます。堅牢性とはレジームを越えて生き残ることです。上昇の年、下落の年、横ばいのもみ合い。このサイトが合計 だけでなく7年・5年・3年・2年・1年・6か月に分けて示す理由です。
上のフィルター版も、カバーされた8期間のうちプラスは1期間だけでした。通算の損失が-17%に縮んだからといって、 優位性が生まれたわけではありません。
つまみが少ないほど信頼できる
パラメータが2つの戦略は、6つの戦略より過剰最適化しにくいです。探索空間が小さいからです。同じ成績なら、 つまみが少ない方を選ぶのが良いです。そして なぜ その優位性が存在すべきかの説明を求めてください。取引の反対側に誰がいて、なぜ彼らはお金を渡し続けるのか。 それがなければ、残るのは曲線1本だけです。
実践チェックリスト
- パラメータの隣を確認する。尖点ではなく高原。
- 合計だけでなくすべての期間を確認する。大きさより一貫性。
- 取引数を確認する。30件未満では勝率と損益比は推定値としても使えません。
- 手数料とスリッページを入れた状態で確認する。コスト0でしか機能しない戦略は戦略ではありません。
- パラメータを揺らす前に構造を疑う。フィルター1つが値20個より大きく動かしました。
- テストしたものを記録に残す。未来のあなたは40の失敗を覚えていません。
参考資料
- Overfitting — The general statistical problem, of which curve-fitting a strategy is one case.
- Sample size determination