バックテスト(過去データでルールを機械的に再現し、損益を計算する検証)で右肩上がりの資産曲線が出たのに、実運用に移した途端に横ばい、あるいは緩やかな右肩下がりになる。これは個人・機関を問わず繰り返し報告されてきた現象です。原因を「相場が変わったから」で片づけてしまうと、次の検証でも同じことが起きます。
この記事では、検証結果と実運用の乖離を「相場の変化」と「検証手続きの欠陥」に切り分け、後者のうち最も頻度が高い過剰最適化(オーバーフィッティング、カーブフィッティング)——過去データのノイズにまでパラメータを合わせ込んでしまう状態——を見分けるための3つの確認を整理します。売買を勧めるものでも、将来の値動きを示すものでもありません。
乖離の原因を4つに分解する
「バックテストが当たらなかった」と一言で言っても、原因の層が違えば対処も違います。まず分解します。
| 層 | 内容 | 実運用での現れ方 | 検証段階で潰せるか |
|---|---|---|---|
| 1. 実装バイアス | 未来データの混入(ルックアヘッド)、生存バイアス、終値約定の仮定 | 初日から成績が合わない | 潰せる(コードと約定仮定の監査) |
| 2. コスト過小評価 | スプレッド、スリッページ、スワップ、約定拒否 | 勝率は近いが期待値が削れる | ほぼ潰せる(保守的な前提に置き換える) |
| 3. 過剰最適化 | 探索回数に対してデータが足りず、ノイズに適合 | 開始直後から成績が半減〜消失 | 部分的に潰せる(本記事の主題) |
| 4. レジーム変化 | ボラティリティ水準、金利差、市場構造の変化 | 一定期間は機能し、ある時点から崩れる | 潰せない(想定と撤退基準で管理) |
重要なのは、3と4は現れ方が違うという点です。運用開始直後から期待値が出ないなら過剰最適化を疑い、しばらく機能してから崩れたならレジーム変化を疑う。この切り分けを先に決めておくと、感情的な「ルール変更」を減らせます。
確認1:パラメータ近傍が「高原」か「尖塔」か
最も手早く、かつ効果が大きい確認です。最適化で選んだパラメータの周辺をずらして成績を並べ、地形を見ます。
- 高原型:パラメータを±20〜30%動かしても成績の符号と水準が大きく変わらない。パラメータが指しているのは、ある程度の幅を持った市場の性質である可能性が残る。
- 尖塔型:ある1点だけ突出し、隣の値では期待値が消える、あるいは負に転じる。この場合、その1点はノイズの偶然である疑いが濃い。
たとえば次のような場面です。移動平均の期間を20に設定したときだけプロフィットファクター(総利益÷総損失)が良好で、18や22では1を割り込む。この「20」を採用する理由を、相場の構造から説明できるでしょうか。説明できないなら、採用根拠は「過去データでそうだった」以上のものではありません。
実務的には、2つ以上のパラメータを動かしてヒートマップ(格子状の成績表)にすると地形が見えます。見るべきは最大値ではなく良好な領域の面積と連続性です。最大値のセルを選ぶ行為そのものが、過剰最適化の入り口になります。
注意点
高原型であっても安全ではありません。探索したパラメータ範囲全体が、たまたまその期間に有利だった場合(例:検証期間がほぼ一方向のトレンドだった)、領域全体が偽陽性になり得ます。確認2と併用する必要があります。
確認2:期間を分けたときに「同じ理由で」勝っているか
イン・サンプル(最適化に使う期間)とアウト・オブ・サンプル(最適化に使わず、検証だけに使う期間)を分ける手法は広く知られています。発展形がウォークフォワード分析——学習期間と検証期間をスライドさせながら、逐次的に再最適化と検証を繰り返す方法です。
ただし、ここには広く見落とされる落とし穴があります。
- アウト・オブ・サンプルを何度も見てしまう:結果が悪かったのでルールを修正し、同じ期間で再検証する。この時点でその期間はイン・サンプルに変質しており、「アウト・オブ・サンプル」という呼称だけが残ります。
- 分割点が1つだけ:前半/後半の1回の分割は、たまたまの結果に左右されます。分割点をずらした複数の分割で傾向を見るほうが情報量があります。
- 損益しか見ていない:期間ごとに損益が似ていても、取引回数、平均保有時間、勝率と損益比のバランスが大きく違うなら、同じメカニズムで勝っているとは限りません。
確認すべきは「各期間で勝ったか」ではなく、勝ち方の内訳が安定しているかです。たとえば仮の例として、前半はトレード数300・平均保有2時間・勝率55%、後半はトレード数40・平均保有30時間・勝率30%で損益比が大きい、という構成だったとします。合計損益が同程度でも、これは別の現象を拾っている可能性が高く、「同じ戦略が両期間で機能した」とは読めません。
確認3:自分が何回試したかを記録しているか
3つの中で最も軽視され、最も効きます。試行回数(検証した組み合わせの総数)を記録することです。
統計の世界では、多数の仮説を同時に検定すると偶然の「有意」が混入する問題が知られており、多重比較問題と呼ばれます。バックテストでも同じことが起きます。100通りのパラメータを試せば、真に有効なものが1つもなくても、最良の1つはそれらしい成績を示します。これはデータスヌーピング(データの覗き見)バイアスと呼ばれる問題です。
この問題に対処するための枠組みとして、金融計量の分野では以下のような手法名が知られています。使うかどうかは別として、名称だけでも押さえておくと文献を追いやすくなります。
| 名称 | 考え方の方向 |
|---|---|
| White’s Reality Check | 多数の戦略の中から最良を選んだことを織り込んで有意性を評価する |
| Hansen’s SPA test | 上記を改良し、明らかに劣る戦略の影響を抑える |
| Deflated Sharpe Ratio | 試行回数やリターン分布の歪みを考慮してシャープレシオを割り引く |
| Probability of Backtest Overfitting(CSCV等) | データを組み合わせ分割し、イン・サンプル最良がアウト・オブ・サンプルで中央値を下回る確率を推定する |
個人の環境でこれらを厳密に実装するのは負担が大きいかもしれません。それでも「試行回数のログを残す」だけでも判断は変わります。5通り試して見つけた結果と、3000通り試して見つけた結果を、同じ目で見てはいけない。この区別がつくだけで、採用の閾値を自分で上げられます。
記録しておく最小限の項目
- 検証対象(銘柄・通貨ペア、時間足、期間)
- 試したパラメータの範囲と総組み合わせ数
- ルール自体を変更した回数(パラメータ変更とは別に数える)
- コスト前提(スプレッド、スリッページの仮定値)
- 採用/不採用の判断理由
この3つでも見抜けないもの
3つの確認は万能ではありません。機能しない条件を明示しておきます。
- サンプルそのものが足りない場合:トレード数が数十件しかない戦略では、どの確認も統計的な説得力を持ちません。分割すればさらに減ります。
- 検証期間に特定のレジームしか含まれない場合:低ボラティリティ局面だけ、あるいは特定の金利環境だけを含むデータでは、高原型でも期間分割を通過しても、未経験の環境での挙動は不明のままです。
- 構造変化そのもの:市場制度、取引時間、参加者構成、注文板の性質が変われば、過去データとの連続性は断たれます。これは検証では潰せず、撤退基準を事前に決めるという形でしか扱えません。
- 低頻度・長期保有の戦略:年数回の取引では、有意性の評価に必要なサンプルが集まるまでに何年もかかります。
また、検証と実運用の間には心理的な差もあります。想定ドローダウン(資産の落ち込み幅)を数値では受け入れていても、実際に資金が減る過程でルールを守れるかは別の問題です。これも「バックテストが崩れた」ように見える原因の一つになります。
まとめ
バックテストが実運用で崩れる理由は、必ずしも「未来が過去と違うから」ではありません。多くは検証手続きの中で、すでに答えを知っているデータに合わせ込んでしまったことに起因します。
- 確認1:パラメータ近傍が高原型か尖塔型か。最大値ではなく良好領域の広さを見る。
- 確認2:期間を分けたとき、損益だけでなく取引回数・保有時間・勝率の内訳が安定しているか。アウト・オブ・サンプルを繰り返し覗いていないか。
- 確認3:試行回数を記録しているか。多重比較の問題を自覚した上で、採用の閾値を調整しているか。
そして、これらを通過しても将来の成績を保証するものではありません。確認作業の目的は「勝てる戦略を見つけること」ではなく、「明らかに勝てない戦略を運用前に落とすこと」です。期待値の確認ができていない状態での取引は、資金を失う可能性があります。レバレッジを用いる取引では、損失が預託した証拠金を超える場合もあります。
なお、国内でのトレード手法や成績の発信については、金融商品取引法および日本証券業協会・一般社団法人金融先物取引業協会の自主規制規則で、広告表示や投資助言に該当する行為に規制が設けられています。検証結果を他者に共有する場合は、前提条件の明示と、助言に当たらない形での記述を意識してください。本記事も特定の手法や業者を推奨するものではなく、最終的な判断と結果の負担はご自身に帰属します。