同じアイデア、2つのバックテスト
まず、このコースに登場する2人を紹介します。2人とも、ドル円(USDJPY)の実際の15分足データ(2004〜2026年)を使って戦略を作りました。数字はすべて実際に計算した結果です。
AさんとBさんは、同じアイデアから出発しました。「ドル円は、東京時間につけた高値や安値を、欧州(ロンドン)の参加者が入ってくる時間帯に抜けると、その方向へトレンドが伸びやすい」というブレイクアウトの狙いです。 データは3つに分けてあります。ルールを作るための探索期間(2005〜2016年の12年間)、途中で確認するための検証期間(2017〜2022年の6年間)、そして最後に1回だけ確かめる最終テスト期間(2023年1月〜2026年7月の3年半余り)です。
- Aさん(過剰最適化の例):東京レンジの時間帯・ブレイクの判定窓・価格バッファ・売買方向・損切り幅・利確幅・手仕舞い時刻など、8項目の組み合わせ57,600通りを探索期間で総当たりしました。その中で総pipsが最大になった最良案(レンジ08:00〜14:00、シグナル窓15:00〜17:00、バッファ10pips、両方向ブレイク、レンジ反対端損切り、リスク1.5倍利確、翌02:00手仕舞い)を選び出しました。
- Bさん(事前登録の例):データを見る前に、市場の構造(東京時間の高値安値をロンドン開始の足で抜ける)から、ルールを1通りだけ書いて固定しました(事前登録)。取引コスト(往復0.4pips)を最初から織り込み、約定はシグナルが出た次の足の始値に設定しています。
Aさんがバックテスト(テスター)上で確認した探索期間の成績は、843回の取引で総利益+2,128.6pips、1取引あたり平均+2.53pips、勝率50.4%、PF(プロフィットファクター)1.15でした(シグナル足の終値約定・コスト0)。現実的な約定条件(次の足の始値約定・往復コスト0.4pips)で見直しても、総利益+1,805.6pips、平均+2.14pipsと十分なプラスです。
一方、Bさんの探索期間の成績は1,893回の取引で、合計−273.8pips、平均−0.14pipsでした。ほぼ横ばいで、バックテストの見た目としては地味でパッとしません。
では、この2つのルールを、探索期間では一度も見ていない「未知の相場(2017〜2026年7月)」にそのまま投入するとどうなったでしょうか。
グラフを見てのとおり、結果は残酷なほど正反対に分かれました。
- Aさんの大崩壊(未知の相場で大敗):探索期間にあれほど右肩上がりだったAさんの損益曲線は、検証期間(2017〜2022年)に入ると伸びが鈍化し、最終テスト期間(2023〜2026年7月)には317取引で−1,416.0pips(1回あたり平均−4.47pips)と急降下しました。未知の相場通算(2017〜2026年7月)では643取引で合計−1,027.7pips(平均−1.60pips)と大赤字に転落しています。
- Bさんの逆転(未知の相場で完勝):探索期間ではマイナスだったBさんは、検証期間で+1,438.9pips(平均+1.57pips)と浮上し、最終テスト期間には561取引で+2,481.1pips(平均+4.42pips)と4年連続プラスを記録。未知の相場通算では1,475取引で合計+3,920.0pips(平均+2.66pips)と堅牢に利益を積み上げました。
探索期間のバックテストで+2,129pipsを叩き出したAさんが大敗し、−274pipsと冴えなかったBさんが+3,920pipsで完勝したのです。 なぜこんな逆転が起きてしまうのでしょうか。
なお、バックテストにはもう一つ「スプレッド0・終値約定でテストしてしまい、リアル口座で手数料負けする」という罠もあります。5分足スキャルピングEAなどで典型的に起きるこの問題については、単発記事「テスターで勝てるスキャルEAが口座で崩れる理由:終値約定とスプレッド0の罠」で詳しく解説しています。
信号とノイズ:過去問の丸暗記と同じ
相場の値動きには、2種類のものが混ざっていると考えてください。
- 信号:理由があって繰り返し起きる動き。たとえば「ロンドン市場の開始時は参加者が急増し、東京レンジを抜けた方向に注文が集中しやすい」のように、市場の仕組みや人間の行動特性で説明できるもの。未来にも続く見込みがあります。
- ノイズ:たまたまその期間にだけ起きた動き。「探索期間の12年間は、10pipsのバッファを取って翌02:00まで引っ張るとたまたま一番利益が出た」のように、市場の合理的な理由がなく、未来には続きません。
過去のチャートでは、この2つが区別できない形で重なり合っています。そして過去データは「すでに答えが分かっている問題集」なので、パラメータを細かく調整すれば、いくらでも後から合わせ込めてしまいます。 過剰最適化(過学習、カーブフィッティングとも呼びます)とは、ルールを調整していくうちに、信号ではなく過去のノイズに合わせ込んでしまうことです。
これは、試験勉強で過去問の答えを1問残らず丸暗記した状態に似ています。過去問なら満点が取れますが、身についたのは「解き方」ではなく「特定の過去問の答えそのもの」なので、本番の試験で新しい問題が出ると手も足も出なくなります。 上の図の左側の直線は「本質的な解き方」を捉えた状態で、過去データでは多少のズレが出ますが、未知の未来データにも安定して対応できます。右側のクネクネと曲がった曲線は、答えを丸暗記して過去のノイズに完璧にフィットさせた状態です。
Aさんがやった57,600通りのグリッド探索は、まさにこの「右側の曲線」をパソコンの計算力で作り出してしまった作業でした。 過去の12年間では完璧に機能するように見えたパラメータも、その時代固有のノイズを記憶しただけだったため、新しい相場環境に入った瞬間に機能不全を起こし、−1,416pipsもの大赤字を垂れ流すことになったのです。
なぜ気づけないのか:失敗が好成績の形で現れる
多くの失敗は、やればすぐに分かります。プログラムのバグならエラーで止まりますし、間違った注文なら即座に損失が出ます。 ところが過剰最適化の本当に恐ろしいところは、「検証に大失敗しているときほど、画面上には奇跡的な好成績が現れる」という、極めて厄介な性質を持っている点です。
トレードシステム検証の専門家 Timothy Masters は、インタビューでこの点を次のように説明しています(Better System Trader のインタビュー動画、18:06〜23:20)。 相場はノイズが極めて大きく、本物の規則性はその中にわずかに埋もれているにすぎません。ルールが弱すぎると本物の規則まで見逃し、強すぎるとノイズまで規則だと思い込みます。 弱すぎる失敗は、成績が悪く出るのですぐに分かります。問題は強すぎる失敗のほうで、過去データの上ではほとんど奇跡のような右肩上がりの成績が出るため、それが本物の優位性なのか、ノイズを覚えただけなのかを、テスト結果の数字だけからは区別できません。
この非対称性のせいで、トレーダーの心理も真逆の方向に誘導されます。成績が悪ければ「何がダメなんだろう」と原因を探しますが、成績が良ければ大喜びして疑うのをやめてしまうのです。 そして試行回数を増やせば増やすほど、成績の良いものは必ず見つかります。当たる確率が極めて低いくじ引きでも、何千回・何万回と引き続ければ、必ず当たりを引いてしまうのと同じです。
57,600通りも試せば、ルール自体の実力とは無関係に、偶然だけで綺麗な右肩上がりになるパラメータが絶対に存在します。Aさんはその「偶然の当たりくじ」を拾い上げ、「ついに聖杯(必勝法)を見つけた!」と信じ込んでしまったのです。
数字で見る:バックテストの成績は将来をほとんど説明しない
「バックテストの成績の良さは、将来の成績をほとんど説明しない」というのは、経験の浅い人には信じがたいかもしれません。 しかし、これは学術研究でも、大規模な実データ分析でも繰り返し証明されている事実です。
たとえば、探索期間で総当たりした候補の中から、探索期間の1取引あたり平均利益の順にランキングを作り、上位の案が最終テストでどうなったかを調べた結果を見てみましょう。
探索期間で堂々の「第1位」だった案は、未知の最終テスト期間では1取引あたり−1.01pipsに沈み、全候補の中で下から1.6%という惨憺たる順位に転落しました。上位10案の平均も−0.65pipsとマイナスです。 一方で、上位1,000案をまとめて見ると平均+4.11pipsとプラスを維持しています。
ここから導き出される重要な教訓は次の2つです。
- 広い塊には意味がある:東京レンジを抜けた方向に順張りするというアイデアそのものには、未知の期間でも通用する優位性がありました。
- 頂上の1点を選ぼうとするほど偶然をつかむ:1位や上位数件の案は、優位性に加えて「探索期間特有の偶然の幸運」を最も極端に取り込んだ案です。幸運は未来に続かないため、本番では最下位近くまで急降下します。
さらに、米国のアルゴリズム取引プラットフォーム Quantopian の研究チームが、ユーザーが作成した888の戦略を分析した論文(Wiecki et al., 2016, "All That Glitters Is Not Gold")でも、衝撃的な結果が示されています。
- バックテストの Sharpe は将来をほぼ説明しない:バックテストのシャープレシオで説明できた未知期間のシャープレシオのばらつきは、わずか2.5%未満でした。残りの97.5%以上はバックテストの成績とは全く無関係に決まっていたのです。
- 試行回数が多い戦略ほど悲惨:バックテストを多く繰り返して調整された戦略ほど、バックテストと本番運用の成績の乖離(悪化幅)が大きくなっていました。
- 機能した指標は「リスクの形」:最大ドローダウンやボラティリティなど、リスク特性を表す指標には将来の予測力が確認されました。
「バックテストで勝てているから安心」は完全に間違いです。何通り試したか、市場の構造に基づいているか、未知データでどう振る舞うかを総合的に評価しなければ、検証は何の意味も持ちません。
このコースの地図:決める → 数える → 壊す → 1回だけ確かめる
過剰最適化という怪物は、何かひとつの魔法の指標で防げるものではありません。 このコースでは、体系的な対策を4つの柱に整理し、全19回で実践していきます。
4つの柱は、コースの4部構成と次のように対応しています。
| 部 | 回 | 答える問い | AさんとBさんの実例 |
|---|---|---|---|
| 第1部 仕組みを知る | 01〜05 | 何が起きていて、なぜ気づけないのか。自分の検証はどの型に当たるか | 規則のない相場でも「聖杯」が見つかる罠(第2回)、隠れた試行の数え方(第3回) |
| 第2部 データを見る前に決める(①決める・②数える) | 06〜09 | 何を、なぜ、どうなったら失敗とするか。データをどう分け、Nをどう数えるか。コストをいつ入れるか | Bさんの事前登録(第6回)。データ予算の管理(第7回)。コストを入れ忘れる破壊力(第9回) |
| 第3部 手元のデータで壊す(③壊す・②数える) | 10〜14 | ルールがなくても儲かったのではないか。最良点の周りはどうか。この数字はどれくらいぶれるか | 帰無仮説ベンチマーク(第10回)、パラメータ感応度(第11回)、試行数による成績割引DSR(第14回) |
| 第4部 未知のデータで確かめる(④確かめる) | 15〜18 | 再最適化のやり方は通用するか。最終テストをどう開け、運用中にどこで止めるか | ウォークフォワード検証(第15回)、最終テストの開封(第17回)、フォワード監視(第18回) |
検証を「勝てる手法を見つける宝探し」と考えていると、どうしてもたくさん試して一番見栄えの良いものを選びたくなり、過剰最適化の罠にまっすぐ落ちていきます。 このコースが一貫して伝えるのは、検証の本当の価値は、勝てない戦略を早く安く見捨てられることにあるという姿勢です。 Bさんのように、探索期間で地味でも市場の構造に賭け、事前に決めたテスト手順を守り抜くことこそが、相場で長く生き残る唯一の道です。
よくある間違い
「バックテストの成績が良ければ良い手法だ」
過去成績の良さは、本物の優位性の証拠にもなれば、ノイズへの合わせ込みの証拠にもなります。数字の大きさだけを見ても、どちらなのかは絶対に分かりません。 Aさんは探索期間で+2,129pipsを出しましたが未知相場で−1,416pipsと崩壊し、888戦略の研究でも将来のばらつきの97.5%以上はバックテストと無関係でした。 成績の数字は、必ず「何通り試したか」「市場の合理的な理由があるか」「未知のデータでどうだったか」と一緒に評価してください。
「条件を増やせば精度が上がる」
インジケーターやフィルタ条件を足すと、過去データの成績は確実に上がります。しかし、それは精度の向上ではなく、単に過去のノイズに形状を合わせる自由度(パラメータ)が増えただけのことが大半です。 条件を1つ足すごとに、「なぜその条件が必要なのか」を相場の仕組みとして説明できるか自問してください。説明できない条件は、例外なく過去の答え合わせにすぎません(第6回)。
「プログラムで自動売買(EA)をする人だけの話だ」
裁量トレーダーも全く同じ過ちを犯します。「このチャートパターンは勝てる」という感覚の多くは、過去チャートをパラパラと眺める中で、無意識のうちに「きれいに勝っている場面」ばかりを記憶に焼き付けた結果です。 頭の中で何百通りものチャートを見比べて都合のいい形を選び出しているため、やっていることはAさんの総当たり探索と同じです。 裁量トレードでも、検証ログをつけて負けパターンも含めた全試行を記録することが不可欠です(第5回)。
実戦課題:自分のバックテストを点検する
読んで終わりにしないための課題です。現在使っている、または過去に作ったルールを1つ選び、次の4項目を点検してください。
- 試行回数(N)を正直に数える:自動最適化の回数だけでなく、「移動平均の期間をいくつか変えてみた」「時間足を変えてみた」「直近で負けた曜日を外してみた」など、手作業で試した回数もすべて数えます。1桁で終わることはまずありません。
- 約定条件とコストを確認する:スプレッド0や、シグナル足の終値ちょうどの約定を前提にしていないか。スプレッドやスリッページを引いた後でも、十分な優位性が残るか確認します。
- 利益の理由を市場の仕組みで書く:そのルールが勝てている理由は何か。「欧州勢の参入によるブレイク」「資金需要による仲値の偏り」のように、相場の構造で1文で説明できるか考えます。説明できなければ、それは単なるノイズです。
- 一度も見ていない未使用データが残っているか:パラメータを決定した後に、一度も結果を見ていない相場期間が残っているか。手元のデータをすべて見て調整してしまったなら、現在のバックテストはただの「過去問の丸暗記」です。
やるべきこと/やるべきでないこと
| やるべきこと | やるべきでないこと |
|---|---|
| 良い成績が出たら、まず「何通り試したか」を数える | 成績が良いことを、そのまま実力の証拠とみなす |
| 理由と反証条件を、結果を見る前に書く | よく伸びたチャートを集めてから後付けでルールを作る |
| 探索・検証・最終テストを最初に分け、最終テストは1回だけ開ける | 後半を「確認用」と呼びながら、見ては直すことを繰り返す |
| 次の足の始値で約定し、コストを1回目の検証から入れる | スプレッド0・シグナル足の終値での約定で最適化する |
| 市場の仕組みに基づくシンプルなルールを基本にする | 成績を上げるために理由のないフィルタを次々と足す |
| 上位の広い塊が安定しているかを見る | 探索期間のランキング1位を1つだけ選ぶ |
| 合格ラインに届かなければ「保留」や「棄却」とする | 結果を見てから合格ラインを緩める |
チェックリスト
次の回に進む前に、以下を自分の言葉で説明できるか確認してください。
- 過剰最適化とは何か(信号とノイズ、過去問の丸暗記のたとえ)
- Aさん(57,600通り探索)とBさん(事前登録1通り)が、それぞれ何をして、未知相場でどうなったか
- Aさんが探索期間で+2,129pipsと好成績だったのに、未知の相場で−1,028pipsと崩壊した理由
- 弱すぎる失敗と強すぎる失敗の違いと、強すぎる失敗が本質的に気づきにくい理由
- 探索期間の1位が最終テストで下から1.6%に落ちたことの意味(頂上を1つ選ぶほど偶然をつかむ)
- Quantopian 888戦略の調査が示したこと(バックテストの Sharpe では将来のばらつきの2.5%未満しか説明できない)
- コースの4つの柱(決める・数える・壊す・1回だけ確かめる)と、それぞれを扱う部
ミニテスト
最後に4問だけ確認です。不正解なら別の選択肢を選び直せます。正解すると解説が表示されます。
Q1. 過剰最適化の説明として最も適切なのは?
過去問の答えを丸暗記した状態と同じで、過去の成績は上がりますが、偶然の部分は未来に続きません。パラメータの調整だけでなく、負けた日を後から除外するフィルタを追加することも過剰最適化の一種です。
Q2. 過剰最適化に本人が気づきにくい理由は?
Masters が説明するとおり、弱すぎるルールの失敗は悪い成績としてすぐ見えますが、強すぎるルールの失敗は良い成績として見えます。好成績が出たときほど、それが実力か偶然かを疑う必要があります。
Q3. Quantopian の888戦略の調査から言えることは?
バックテストの成績の良さは、それ単体では将来の証拠になりません。多く試すほど偶然に合った成績が混じるので、将来との乖離も大きくなります。Aさんの探索期間1位が最終テストで下から1.6%に落ちたのも同じ現象です。
Q4. このコースの4つの柱の順番として正しいのは?
決めることと数えることは、結果を見る前にしかできません。手元のデータで壊す検査を生き残ったものだけを、合格ラインを書いたうえで未使用のデータで1回だけ確かめます。