SHOTAI · 第4部 · 第15章 機械的バックテスト入門と罠 過去に100点を取る方法は、過去を見ながらカンニングすることだ。
機械的バックテストは「過去に勝てたか」を測る道具ではない。自分が自分を騙していないかを測る道具だ。 過去データにルールを回すと、ほぼ必ず「光る数字」が出る。だがその光の大半は、過去への合わせ込み・先読み・ 試行回数のごまかし——3つの錯覚で出来ている。そしてコストを引いた瞬間、その光は消える。
この記事のサマリ
| 区分 | 内容 |
|---|---|
| 🎯 学べること |
① 機械的バックテストの正しい手順=仮説→ルール化→過去データ→コスト込み評価 ② 3つの罠=オーバーフィット(過学習)・先読み(look-ahead)・データスヌーピングの正体と見分け方 ③ IS/OOS分割(イン・サンプル/アウト・オブ・サンプル)がなぜ最低限の防壁なのか ④ gross(コスト前)の優位はほぼ嘘=主役は常に「コスト後に残ったもの」 ⑤ 当デスクの1,360セル横断検証の作法(フィデリティ照合・no-lookahead・実コスト+2倍感応・full-period net棄却) |
| 🛠 実技で体験 |
① 単純な移動平均クロスを1本だけ過去データで回し、gross→コスト込みで優位性がほぼ消えることを自分の目で確認する ② 同じ戦略をIS/OOSに割り、ISで良くてもOOSで崩れる(または逆)を体験する |
| ✅ 持ち帰り |
① 覚える式は1本:net期待値 = gross期待値 − コスト/合否は net+OOS でのみ判定 ② 裁量が効かない時の保険(予備)として、体系的検証の型(IS/OOS分割・コスト控除)を手に持つ ③「目視で良さそう」「ISで光った」は仮説であって証拠でないを体に入れる |
この章を一言で
機械的バックテストは「過去に勝てたか」を測る道具ではない。「自分が自分を騙していないか」を測る道具だ。 過去データにルールを回すと、ほぼ必ず「光る数字」が出てくる。だがその光の大半は、(1) 過去に合わせ込んだだけ (オーバーフィット)、(2) 未来の情報を覗いていた(先読み)、(3) たくさん試して当たりを拾っただけ (データスヌーピング)——という3つの錯覚で出来ている。そしてコストを引いた瞬間、その光は消える。
本シリーズの本線は裁量マクロ(圧力差レジームを読む)だ。だがその裁量が効かない局面に備え、 システマティックな検証作法を「予備(保険)」として持っておくのがこの章の目的。 この章で覚えるのは、たった一個の式だ。
net期待値 = gross期待値 − コスト(スプレッド+スワップ+スリッページ)
そして検証の「合否」は、次の2点を両方満たした時だけ:
① net(コスト後)でプラスが残る
② OOS(見ていない期間)でも残る
── どちらか欠けたら、それは「過去への合わせ込み」
gross(コスト前)の派手な数字は、検証の主役ではない。主役はコスト後に、見ていない期間でも残ったもの。 順に解剖する。
01なぜ裁量主体のデスクが「機械検証」を予備に持つのか
第13章(予測日記)・第14章(意思決定ログ)で見たとおり、本線は裁量マクロだ。圧力差レジームを読み、 織り込みとのズレに賭ける。これは機械では検証しきれない(だから意思決定の質を採点する)。ではなぜ、わざわざ 機械的バックテストを学ぶのか。理由は3つ。
| 立場 | 機械検証の使い方 |
|---|---|
| 本線(裁量マクロ) | 主役は意思決定ログ。機械検証は補助・反証ツール |
| 予備(システマティック) | 裁量が止まった時の「床」候補。ただしコスト後OOSで残れば、の話 |
| 防御(リテラシー) | 他人の「勝率90%!」を、罠の3点で即座に疑える |
02正しい手順 ― 仮説→ルール化→過去データ→コスト込み評価
機械的バックテストには「順番」がある。順番を守らないと、後述の罠に必ず落ちる。
| 手順 | やること | やってはいけないこと(=罠への扉) |
|---|---|---|
| ① 仮説 | 「効く理由」を先に文章化 | 先に数字を探し、後から理由をでっち上げる |
| ② ルール化 | 完全に機械化(再現可能に) | 「ここは裁量で」と曖昧さを残す |
| ③ 過去データ | IS/OOSに分け、OOSを封印 | 全期間でパラメータを最適化する |
| ④ コスト | 実コストを控除+2倍感応 | gross(コスト前)のまま判定する |
| ⑤ 判定 | net+OOSで合否 | ISのgrossだけ見て「勝てる」と結論 |
ポイントは、①仮説を先に書くこと。理由のないパターン探しは、次節「データスヌーピング」そのものになる。 「効く理由」を先に固定すれば、試行回数が爆発せず、後付けの言い訳もできなくなる。
033つの罠 ― オーバーフィット・先読み・データスヌーピング
バックテストの数字が嘘をつく経路は、突き詰めると3つに集約される。
3つの罠は、それぞれ違う「自己欺瞞」だ。
| 罠 | 一言でいうと | 主な対策 |
|---|---|---|
| ① オーバーフィット | 過去に合わせすぎ | OOSで検証/パラメータを増やしすぎない/単純さを保つ |
| ② 先読み | 未来を覗いている | no-lookahead処理(後述)/確定足のみ使用 |
| ③ データスヌーピング | 試行回数のごまかし | 仮説を先に固定/試行回数を記録/多重検定の補正 |
罠②をもう一段:先読みは「気づかないうちに」起きる
先読みは悪意がなくても混入する。代表的なのが——
当日の確定前データを使う:まだ確定していない当日の高値/安値/終値を、その日のシグナルに使ってしまう。 未来の確定値で過去を塗る:上位足(HTF)の値を、その足が確定する前のタイミングで参照してしまう。 生存バイアス:途中で消えた通貨・銘柄・期間を除外し、生き残ったものだけで検証する。
対策はシンプルで強力——「その瞬間に本当に手に入った情報だけ」を使う。当デスクの実装(§06)では、 ピボットは前足の確定値、上位足は確定後にのみ参照する。これを「no-lookahead処理」と呼ぶ。
04IS/OOS分割 ― 最低限の防壁
オーバーフィットを潰す最初の一手が、期間を2つに割ることだ。
手順:
1. ISだけでルール/パラメータを決める
2. OOSは“一度も見ずに”取っておく
3. 最後にOOSへ一回だけ適用 → net で残るか判定
4. OOSを見て調整し直したら、それはもうOOSではない(汚染)
なぜこれが効くのか。ISで作ったルールは、定義上ISに最適化されている(過去に合っているのは当たり前)。 本当に知りたいのは「見ていない期間でも通用するか」。それを測るのがOOSだ。
| 比較 | IS(イン・サンプル) | OOS(アウト・オブ・サンプル) |
|---|---|---|
| 役割 | ルール・パラメータを作る | 作ったルールを“初見”で試す |
| 数字の信頼度 | 低い(出来すぎて当然) | 高い(騙しにくい) |
| よくある誤用 | ここの好成績を実力と誤認 | OOSを見て微調整=汚染 |
| 当デスクの扱い | 参考値 | こちらが本番の判定 |
第19章(フォワード検証)でさらに踏み込むが、OOSの究極形が「まだ起きていない未来=フォワード」だ。 過去のOOSすら騙される余地があるので、低頻度のスイングは結局「前向きに貯める」しかない(第18章)。
05コスト込み評価 ― gross は嘘をつく
ここが第1章「マイナスサム」と直結する、本章の心臓部だ。gross(コスト前)でプラスでも、コストを引くと 消える戦略がほとんど。
| 評価方法 | 出てくる数字 | 信用してよいか |
|---|---|---|
| gross・IS・全期間最適 | 派手(PF2超もザラ) | ❌ ほぼ嘘。罠の合成物 |
| net(実コスト控除)・IS | 大幅に縮む | △ まだIS。参考 |
| net・OOS | さらに縮む/消える | ✅ ここで残れば本物候補 |
| net・OOS・2倍コストでも残る | 最も保守的 | ✅✅ 堅牢性が高い |
最後の「2倍コスト感応」が、当デスクの作法の肝だ。スプレッドやスリッページは将来広がり得る (指標時・流動性枯渇時)。だから「実コストの2倍を払っても、まだプラスか?」を試す。ここで消える戦略は、 現実の悪条件で確実に死ぬ。
体験 ― 今すぐ手を動かす
ここから手を動かす。世界一有名な機械戦略「移動平均クロス」を1本だけ回し、gross→コスト込みで 優位性がほぼ消えることを、自分の目で確かめる。
① 戦略の定義(完全機械化)
戦略: 移動平均(MA)ゴールデン/デッドクロス
・短期MA(例:25) が 長期MA(例:75) を上抜け → 翌足始値で買い
・短期MA が 長期MA を下抜け → 翌足始値で決済&ドテン売り
・シグナルは「確定足」のみ(no-lookahead)
・対象: ドル円 日足、期間は IS:OOS = 7:3 に分割
② 結果イメージ表(あなた自身の数字で埋める)
下表は「典型的にこうなる」という形。実際の数字は自分の口座コスト・期間で必ず変わるので、空欄を自分で埋める。
| 指標 | gross(コスト前) | net(コスト後) | net・OOS |
|---|---|---|---|
| 取引回数 | ____ | ____ | ____ |
| 勝率(%) | ____ | ____ | ____ |
| 平均損益(pip) | ____ | ____ | ____ |
| PF(総益÷総損) | ____(しばしば1超) | ____(1付近へ低下) | ____(1割れも多い) |
| 期待値(pip/回) | ____ | ____ | ____ |
多くの場合、grossでは「ちょっと勝てそう」に見え、コストを引いてOOSに出すと、優位性はほぼ消える。 これがMAクロス単体の現実。「単純な機械ルールで楽に勝てる」が幻想である理由を、ここで体で知る。
③ 記入式:自分で確かめるチェックリスト
| 確認項目 | あなたの記録 |
|---|---|
| 仮説を先に書いたか(後付けでないか) | ____ |
| シグナルは確定足のみか(先読みしていないか) | ____ |
| OOSを見て微調整していないか(汚染チェック) | ____ |
| コストは実額で控除したか | ____ |
| 2倍コストでも残るか | ____ |
| パラメータを何通り試したか(試行回数の記録) | ____ |
試行回数を記録するのが地味に重要。「25/75が良かった」の裏で、何十通り試したかを書けば、 それがデータスヌーピング(罠③)かどうか、自分で判定できる。
06ここでしか ― 当デスクの1,360セル横断検証の作法
「正しい検証はこう組む」を、当デスクの実例で見せる。本線は裁量だが、その裁量を支える特徴量・サインを、 システマティックに1,360通り(セル)横断検証している。その時の作法が、本章の手順をそのまま体現している。
| 作法 | 潰す罠 | 中身 |
|---|---|---|
| フィデリティ照合 | ②先読み等の計算バグ | TradingViewと結果を照合し、自前計算のズレを検出 |
| no-lookahead | ②先読み | ピボット=前足、HTF=確定後のみ参照 |
| 実コスト+2倍感応 | (gross水増し全般) | 実OANDAコスト控除、さらに2倍でも残るか |
| full-period net棄却 | ③データスヌーピング | 「全期間で一番良いセル」は選択バイアスとして採らない |
そしてこの作法を通した結論が、誠実さの核だ——
これが「イン・サンプルは嘘をつく」の実教材だ。派手な数字(gross PF2超)を主役にせず、 コスト後に残った僅かなものを主役にする。商業的な手法紹介がこれを書けないのは、買い手を持ち上げないと 売れないから。中立・無料のデスクだからこそ、自己否定(「FXのほとんどは残らなかった」)を出せる。
| 段階 | 見える数字 | 当デスクの扱い |
|---|---|---|
| gross・IS | PF2超のセルが複数 | 「嘘の候補」として疑う |
| +実コスト | 大半が1付近へ縮む | FXの多くがここで脱落 |
| +OOS | さらに脱落 | 生存セルが激減 |
| +2倍コスト | 金・指数トレンドのみ生存 | これだけを「残った」と認める |
アクション ― 次の一歩
① MAクロスを「1本だけ」自分で回す。対象=ドル円 日足、最低でも5〜10年分 (出典:Twelve Data/各ブローカーのヒストリカル)。IS:OOS=7:3に分割し、体験節の結果イメージ表を 自分の数字で埋める。
| 設定項目 | あなたの値 |
|---|---|
| 対象ペア・足 | ____(例:ドル円 日足) |
| データ期間(何年分) | ____ |
| IS / OOS の分割点 | ____ |
| 短期MA / 長期MA | ____ / ____ |
| 控除した実コスト(pip往復) | ____ |
② コストを「実額」と「2倍」の2通りで控除し、OOSでの net 期待値を比べる。優位性が消えたら、 それは「MAクロス単体では床にならない」という、あなた自身が出した一次結論だ。
③ デスクの作法を1つだけ自分の検証に移植する。まずは「OOSを見て微調整しない(凍結)」 だけでよい。これが第16章「独立検証→合議の規律」への橋になる。当デスクの1,360セル検証が、 本章の4作法が実際に回っている現場だ。
net期待値 = gross − コスト/合否は net+OOS でのみ判定。そして「ISのgrossで光った数字は、 罠の合成物かもしれない」。これだけ持って次へ。
この章の4作法(フィデリティ照合・no-lookahead・実コスト+2倍感応・full-period net棄却)が実際に回っている現場が、 当デスクのリサーチだ。1,360セルを横断検証し、gross/イン・サンプルの派手な数字でなく 「コスト後に残った僅かなもの」を主役にしている。派手な数字に騙されない目を、ここで養ってほしい。
→ リサーチ(1,360セル検証)を見る