Signal Pilot
🟡 中級 • レッスン32/全82

backtestingと現実:その完璧な期待値はあなたに嘘をついている

読了16分 • 戦略の検証
Signal Pilot
プロ向けトレーディング教育
0%
順調に進んでいます。
読み進めるとこのレッスンが完了になります

あなたのbacktest:期待値8R。プロフィットファクター3.5。1万ドルの口座で5万ドルの利益。

実弾に切り替える。最初の週:期待値-2R。プロフィットファクター0.4。口座は12%のマイナス。

何が起きたのか。あなたのbacktestが嘘をついたのだ。

🚨 本音を言えば

backtestの大半はただの空想だ。完璧な約定、slippageゼロ、スプレッドなし、そして実際の相場には存在しない魔法のようなエントリーを前提にしている。

backtestの結果が良すぎて信じられないなら、実際に信じてはいけない。あなたはシグナルではなくノイズに合わせ込んだのだ。

このレッスンで学ぶこと:

  • backtestの9割が実弾で通用しなくなる理由
  • 4つの大罪:過剰適合、先読みバイアス、非現実的なコスト、生存者バイアス
  • 現実をきちんと映すslippageとスプレッドの見積もり方
  • イン・サンプルとアウト・オブ・サンプル(意味のある検証はこれだけ)
⚡ 明日からできること(クリックで展開)
  1. backtestに現実的なコストを入れる — 1トレードあたり0.03〜0.05%のslippageに加えて、実際のスプレッドを織り込む。それで結果が崩れるなら、その優位は偽物だった。
  2. データを70/30に分ける — データの70%で最適化し、一度も見ていない30%で検証する。アウト・オブ・サンプルで落ちるなら、それは曲線への合わせ込みだ。
  3. 実弾の前に30日デモで回す — デモの結果がbacktestと大きく食い違うなら、どこかがおかしい。噛み合うまで実弾に出ないこと。

実例:期待値1.3Rの「完璧な」backtestが、実弾で-0.45Rの惨事に変わるまで

背景: 2024年3月、クリス(合成事例)は6か月の最適化を経てブレイクアウト戦略を作り上げた。backtestの見た目は驚異的だった。期待値1.3R、プロフィットファクター4.9、勝率67%、SPYの2年分のデータ(2022〜2023年)で検証済み。2024年4月に5万ドルを投入。2024年6月には口座が8,400ドルのマイナス(-16.8%)になっていた。以下はその全解剖である。

「完璧な」backtest(2022〜2023年のデータ)
backtestの結果(2022年1月〜2023年12月、2年間)
指標 クリスの心の声
総トレード数 156 十分な標本数
勝率 67.3% (105W / 51L) 「すごい。平均をはるかに上回っている。」
平均利益/平均損失 +2.4R / -1R 「R:Rが素晴らしい。勝ちは負けの2.4倍だ。」
プロフィットファクター 4.9 「プロ水準の数字だ。」
期待値 1トレードあたり+1.3R 「聖杯の領域だ。」
最大drawdown -8.2% 「drawdownが極小。極めて安全だ。」
通算リターン(2年) +$40,600 (+406%) 「これだ。仕事を辞める。」

クリスの最適化のやり方:

  • EMAの期間を50通り試した(EMA(34)が「完璧」だと判明)
  • ストップ用のATR倍率を20通り試した(1.47×ATRが「最適」だと判明)
  • 利確目標を15水準試した(2.8Rが「最良」だと判明)
  • 最終的な戦略:EMA(34)のクロス+1.47×ATRのストップ+2.8Rの目標
  • 試した組み合わせの総数: 50 × 20 × 15 = 15,000通り

クリスがbacktestに入れなかったもの:

  • slippage(正確な価格での完璧な約定を前提にした)
  • ビッド・アスクのスプレッド(スプレッドをゼロと前提にした)
  • 手数料(見積もるのを忘れた)
  • 注文の不成立(約定率100%を前提にした)
  • アウト・オブ・サンプル検証(見たことのないデータで一度も試さなかった)
実弾の現実(2024年4〜6月、10週間)
実弾の結果(10週間、5万ドル口座)
指標 backtest 実弾の現実
勝率 67.3% 51.4% (19W / 18L) 15.9ポイント悪化
平均利益 +2.4R (+$1,200) +1.8R (+$900) 25%縮小
平均損失 -1R (-$500) -1.3R (-$650) 30%拡大
プロフィットファクター 4.9 1.46 70%の崩落
期待値 +1.3R コスト差引後で-0.45R -1.75Rのマイナス
最大drawdown -8.2% -21.4% 2.6倍悪化
通算リターン(10週間) +9,600ドルの見込み -$8,400 (-16.8%) 1万8,000ドルの落差
完全なコスト計算:1万8,000ドルはどこへ消えたのか
成績差の解剖(37トレード、10週間)
コストの費目 内容 影響額
1. 過剰適合(曲線への合わせ込み) EMA(34)+1.47×ATRは2022〜2023年のデータでは完璧に働いたが、過去のノイズに最適化されていた。2024年の相場環境=別のノイズ。 -$6,200
2. slippage(見積もっていない) 1トレードあたり平均0.08%のslippage × 平均建玉2万5,000ドル × 37トレードの往復 = slippageのコスト1,480ドル -$1,480
3. ビッド・アスクのスプレッド SPYのスプレッド0.01ドル × 平均500株 × 37トレード = 185ドル。オプション(レバレッジのために使用)のスプレッド = 1株あたり0.03ドル × 1枚あたり100株 × 20枚 × 37トレード = スプレッドコスト合計2,220ドル -$2,405
4. 手数料 オプション:1枚あたり0.65ドル × 20枚 × 37トレード × 2(往復) = 962ドル -$962
5. 注文の不成立 8トレードで指値が一度も約定しなかった(勝ちを5回、負けを3回逃した)。差引の機会費用:逃した勝ち5回×+1.8R(-9R)から、避けられた負け3回×-1.3R(+3.9R)を差し引いて -5.1R = 2,550ドル -$2,550
6. 先読みバイアス backtestのコードはclose[0]でエントリーを計算し、その同じ足の終値で入っていた(実弾では不可能)。実弾のエントリーは次の足の始値になる。平均して0.3%不利なエントリー = 2,775ドルの劣化 -$2,775
7. 執行の遅延 プラットフォームの遅延+注文を確認する時間 = 2〜8秒の遅れ。速いブレイクアウトは約定までに平均0.15%動いてしまった = 遅延によるslippage 1,387ドル -$1,387
backtestからの劣化の合計: -$17,759

計算してみると:

  • backtestが見込んだ利益(10週間):+9,600ドル
  • 差し引く劣化コスト:-17,759ドル
  • 想定される実弾の結果:-8,159ドル
  • 実際の実弾の結果:-8,400ドル — 計算は実際に起きたことと250ドル以内で一致している
何をすべきだったか:正しい検証
ステップ クリスがやったこと(誤り) やるべきこと(正解)
1. データの分割 2022〜2023年のデータをすべて最適化に使った 2022年で最適化し、2023年はアウト・オブ・サンプル検証用に取っておく
2. 最適化 15,000通りのパラメータの組み合わせを試した 標準的なパラメータを使う(EMA 20/50、2×ATRのストップ)。試す数は10通り未満に抑える
3. コストの見積もり コストをゼロと前提にした 0.10%のslippage+0.01ドルのスプレッド+1トレードあたり2ドルの手数料を織り込む = 最低でも1トレードあたり-30ドル
4. 先読みの確認 シグナルと執行の両方に同じ足の終値を使った シグナルはclose[0]、執行はopen[1](次の足)。現実的なタイミング。
5. アウト・オブ・サンプル検証 見たことのないデータで一度も試さなかった 2023年のデータ(手つかず)で試す。成績が30%超悪化するなら、その戦略は過剰適合だ
6. ウォークフォワード backtestの期間がひとつだけ 6か月の最適化ウィンドウで、続く3か月を検証する。ずらしながら繰り返す。一貫しているかを見る。
クリスがやるべきだったアウト・オブ・サンプル検証

正しい手順:

  1. イン・サンプル期間: 2022年のデータだけで最適化する(2023年には触らない)
  2. パラメータを決める: EMA(34)+1.47×ATR(同じ結論だが、2022年だけから得たもの)
  3. パラメータを固定する: 以後いっさい変更しない。パラメータは凍結。
  4. アウト・オブ・サンプル検証: まったく同じパラメータを2023年のデータで走らせる
  5. 結果を比べる: 2023年の成績が2022年の70%を下回るなら、その戦略は過剰適合だ

どうなっていたか:

期間 期待値 プロフィットファクター 判定
2022年(イン・サンプル) +1.4R 3.1 最適化された成績
2023年(アウト・オブ・サンプル) +0.4R 1.4 ⚠️ 71%の劣化
結論: この戦略はひどく過剰適合している。2023年の期待値は2022年の29%。現実的なコスト(1トレードあたり-30ドル=-0.15R)を入れると、正味の期待値は+0.25R(かろうじてプラス)。 実運用してはいけない。

教訓:クリスのbacktestは空想だった。15,000通りのパラメータを試せば、過去のノイズにぴたりと沿うものが必ず見つかる。あの「完璧な」1.3Rという期待値は、曲線に合わせ込んだだけのゴミだった。アウト・オブ・サンプル検証をしていれば、8,400ドルを失う前に分かっていた。backtestingとは過去の最高成績を探すことではなく、これから通用するものを探すことだ。そのためには、見たことのないデータ、現実的なコスト、そして先読みバイアスゼロが要る。

パート1:backtestが嘘をつく4つの手口

あなたの完璧な戦略が実弾で崩れる理由

居心地の悪い真実から始めよう。過去のデータに合うように戦略を最適化したのなら、あなたが見つけたのは優位ではない。ノイズだ。

ランダムなノイズに曲線を合わせ込む

どんな手口か: backtestが完璧に見えるまでパラメータをいじり続ける

例:

  • EMAの期間を100通り試す(10、11、12……110)
  • EMA(47)がbacktestで4.2Rの期待値を出す
  • 「魔法の数字」を見つけたと思い込む

実際: EMA(47)はたまたまその特定のデータに合っただけだ。前向きに検証すると?期待値-0.8R。あなたが学んだのはノイズであって、シグナルではない。

改善策: 最適化を抑える。標準的なパラメータを使う。見たことのないデータで試す。

未来のデータを使う(実弾では不可能)

どんな手口か: いまの判断のために未来の足を「のぞき見る」コード

例:

if close[0] > high[5]:  # 未来の5本を使っている
    enter_long()

問題点: backtestingでは未来のデータが手元にある。実弾ではない。

実際: このコードは実弾ではそもそも動かない。あなたのbacktestは、存在しない戦略を検証している。

改善策: 判断した時点で手に入るデータだけを使うこと。

完璧な価格での完璧な約定を前提にする

backtestの前提: 「100.00ドルちょうどで買う」

実際: 成行注文は100.12ドルで約定する(スプレッド+slippage)

100トレードでの影響:

  • backtestの利益:5,000ドル
  • スプレッドのコスト(1トレード0.10ドル):-1,000ドル
  • slippage(1トレード0.05ドル):-500ドル
  • 手数料(1トレード2ドル):-200ドル

実際: 本当の利益 = 3,300ドル(backtestより34%少ない)

生き残ったものだけで検証する

どんな手口か: いまのS&P 500構成銘柄だけでbacktestingをする

問題点: 上場廃止や破綻で消えた200を超える銘柄を除外している

例:

  • 2024年のS&P 500リストでbacktest:期待値1.8R、プロフィットファクター2.1
  • だがその期間を通じて、あなたはHertz(2020年に破綻)やSVB Financial(2023年に破綻)をはじめ、ゼロになったあらゆる銘柄を買っていたはずだ。

実際: あなたの期待値は、上場廃止による壊滅的な損失を除外している。本当の期待値は-0.2R(負けるシステム)。

💡 腑に落ちる瞬間

backtestは現実ではない。シミュレーションだ。そしてシミュレーションにあり得ない前提が入っていれば、実弾の結果も同じくらいあり得ないものになる。

パート2:現実的なコストを見積もる

戦略を殺す隠れたコスト

大半のbacktestが無視しているのがこれだ。だからあなたのbacktestも、おそらく20〜40%は楽観的すぎる。

手順1:ビッド・アスクのスプレッドを見積もる

どんな手口か: 買値と売値の差

例:

  • SPYのビッド:450.00ドル/アスク:450.01ドル → スプレッド = 0.01ドル
  • 買うとき:450.01ドルを払う(スプレッドの半分=0.005ドル)
  • 売るとき:450.00ドルを受け取る(スプレッドの半分=0.005ドル)

往復あたりのコスト: $0.01

1,000株なら: 0.01ドル × 1,000 = 1トレードあたり10ドル

100トレード: スプレッドコスト1,000ドル

手順2:slippageを見積もる

どんな手口か: 狙った価格と実際の約定価格の差

状況別の現実的なslippage:

  • 通常の流動性: 0.01-0.02%
  • 荒れた相場: 0.05-0.10%
  • 流動性が薄い: 0.10-0.30%
  • 建玉が大きい: 0.20-0.50%

保守的な前提: 1トレードあたり0.05%

1万ドルの建玉 × 0.05% = 片道5ドルのslippage = 往復10ドル

手順3:手数料を見積もる

例:Interactive Brokers

  • 1株あたり0.005ドル、最低1ドル
  • 200株 × 0.005ドル = 片道1ドル
  • 往復 = 2ドル

100トレード: 手数料200ドル

手順4:現実的なコストの合計

1トレードあたり(往復):

  • スプレッド:10ドル
  • slippage:10ドル
  • 手数料:2ドル

合計:1トレードあたり22ドル

あなたの戦略が1トレードあたり50ドルの粗利を生むなら → 手取り28ドル(44%減)

backtestを補正する例

現実的なコストの前と後

戦略:100トレード、1トレードあたり平均50ドルの利益


backtest(空想):

100トレード × 50ドル = 5,000ドルの利益


現実的なコストを引いた後:

  • 粗利:5,000ドル
  • スプレッド:-1,000ドル
  • slippage:-1,000ドル
  • 手数料:-200ドル

純利益:2,800ドル(44%減)

パート3:イン・サンプルとアウト・オブ・サンプル

意味のある検証はこれだけ

プロが戦略を検証する手順はこうだ。

データを2つの期間に分ける。

  1. イン・サンプル(60〜70%): ここで戦略を組み立て、最適化する
  2. アウト・オブ・サンプル(30〜40%): 見たことのないデータで検証する

🎯 例:6年分のデータ(2018〜2024年)

イン・サンプル: 2018〜2022年(ここで最適化)

  • いろいろなパラメータを試す
  • 最も成績のよいルールを見つける
  • エントリーとイグジットの論理を詰める

アウト・オブ・サンプル: 2023〜2024年(ここで検証)

  • 戦略をいっさい変えずに走らせる
  • 成績をイン・サンプルと比べる
  • 似ていれば → 過剰適合ではない
  • はるかに悪ければ → イン・サンプルのノイズに合わせ込んでいる

過剰適合の危険信号

🚩 あなたの戦略が曲線に合わせ込まれている兆候

  • シャープが3.0超: 良すぎて信じられない
  • 期待値が5R超: 極めてまれ(執行の前提を疑うこと)
  • トレードが20〜30回しかない: 標本が小さすぎる(統計的に意味がない)
  • 完璧な資産曲線: drawdownのない滑らかな線(あり得ない)
  • 1銘柄でしか試していない: その相場状態に合わせ込んでいる可能性が高い
  • 最適化したパラメータが10個以上: あなたが合わせ込んだのはノイズであって、シグナルではない
パート4:ウォークフォワード分析

プロの検証手法

イン・サンプルとアウト・オブ・サンプルは良い。ウォークフォワードはもっと良い。

仕組み:

📊 ウォークフォワードの枠組み

期間1: 2018〜2019年で学習 → 2020年で検証

期間2: 2019〜2020年で学習 → 2021年で検証

期間3: 2020〜2021年で学習 → 2022年で検証

期間4: 2021〜2022年で学習 → 2023年で検証


すべての期間で一貫していれば: 頑健な戦略

成績が劣化するなら: 過剰適合か、相場状態に依存している

🎓 要点

  • 現実的なコストを見積もる: スプレッド、slippage、手数料(利益が20〜40%減る)
  • 過剰適合を避ける: パラメータを絞り、複数の市場で試す
  • イン・サンプルとアウト・オブ・サンプル: 60〜70%で作り、30〜40%で検証する
  • ウォークフォワード検証: 時期をまたいで一貫しているかを確かめる
  • 危険信号: シャープ3.0超、期待値5R超、トレード30回未満
  • 実弾の前に前向き検証する: 最低3〜6か月はデモで回す
練習課題

🎯 backtest検証の実践

演習:危険信号の検出器で自分の戦略を検証する

いまの戦略(あるいは検討中の戦略)を取り、検証にかけてみよう。

  1. データの60%でbacktestする(イン・サンプル)。記録するもの:トレード数、期待値、シャープ、最大DD
  2. 使ったパラメータを書き出す(EMA、しきい値など)。複数の値を試して選んだものはあるか。
  3. 残り40%のデータで検証する(アウト・オブ・サンプル)。イン・サンプルの結果と比べる。
  4. ひな型の検証スコアカードを使う(8項目、満点60点)
  5. 点数を出す:50〜60=進める、40〜49=作り直す、40未満=捨てる
  6. 50点以上なら:実弾に出る前にデモで30〜60トレード回す

目的: 曲線への合わせ込み、先読みバイアス、非現実的な前提を、実際の口座が壊される前に捕まえる。実弾で本物の金を失うより、backtestingの段階で悪い戦略を捨てるほうがいい。

理解度の確認

🎮 かんたん確認

問:ある戦略をbacktestした:期待値5.2R、シャープレシオ4.2、25トレードで検証、100通りの期間を試した結果が最も良かったのでEMA(47)を採用。何がまずいか。

A) 何もまずくない——素晴らしい戦略だ
B) 全部まずい:標本が小さすぎ、シャープも期待値も高すぎ、EMA(47)は曲線への合わせ込み
C) 期待値が高すぎる点だけ
D) 標本が小さすぎる点だけ
正解です。 大きな危険信号が3つある。(1) 25トレードだけ=統計的に意味がない、(2) シャープ4.2=怪しいほど高い(おそらく過剰適合)、(3) 100通りの期間を試して見つけたEMA(47)=ノイズへの合わせ込み。この戦略は実弾で崩れる。必要なのは100トレード以上、現実的なシャープ(1.5〜2.5)、そして標準的なパラメータだ。

2010〜2024年のSPYで平均回帰戦略をbacktestする。結果:期待値2.8R、勝率68%、利益12万ドル。データにはいまのS&P 500構成銘柄(今日その指数に入っている銘柄)しか含まれていない。2025年に実弾へ出て、失敗する。何が悪かったのか。

A) 何も悪くない——2025年の相場環境が変わっただけで、予見できなかった
B) 生存者バイアス——2010〜2024年に上場廃止や破綻で消えた銘柄の30〜40%をbacktestが除外していた
C) 標本が小さすぎる——14年より長いデータが要る
D) 期待値が高すぎる——平均回帰で2.8Rは非現実的だ
正解です。 生存者バイアスの典型的な罠だ。「いまのS&P 500構成銘柄」で検証したということは、勝者だけを検証したということ——14年を生き延び、今日の指数に入れた銘柄だけだ。破綻した企業、上場廃止になった銘柄、失敗した事業(全体の30〜40%)を除外している。まさにその死んだ銘柄こそが、あなたの平均回帰のエントリーを誘い、二度と戻ってこなかったはずだ。上の例の1.8Rという期待値を、本当は-0.2Rに変えてしまうのがこれである。解決策:各時点で存在していたすべての銘柄を、のちの上場廃止分も含めて収めたポイント・イン・タイムのデータを使うこと。生存者バイアスはbacktestの結果を20〜50%も水増しする。

戦略をウォークフォワードで検証する:2018〜2020年で学習し2021年で検証(合格)。2018〜2021年で学習し2022年で検証(合格)。2018〜2022年で学習し2023年で検証(合格)。slippageも手数料も見積もっていない。この戦略を実弾で回すべきか。

A) 回すべき——ウォークフォワード検証にすべて合格した頑健な戦略だ
B) 回すべきでない——まず現実的なコスト(0.2〜0.4%のslippage+手数料)を入れて検証し直す。それでも儲かるなら、そのときに回す。
C) 回すべき——ウォークフォワード検証で十分で、コストはさほど効かない
D) 回すべきでない——検証にはウォークフォワードの期間が最低10回は要る
正解です。 ウォークフォワード検証は頑健さ(ひとつの期間に合わせ込んでいないこと)を示すが、実弾に出る前に現実的なコストを必ず見積もらなければならない。slippage(片道0.1〜0.2%=往復0.2〜0.4%)に手数料(1トレード2〜5ドル)が加わると、期待値は30〜60%も削られうる。コストなしで期待値2.5Rの戦略が、コストを入れると1.2Rまで落ちることもある——まだ黒字だが、ぎりぎりだ。上のクリスの事例がまさにこの失敗である。期待値1.3Rのbacktestが、コストが本物になった途端に実弾で-0.45Rになった。コストは最後に加えること(ウォークフォワードのあとで)。そのうえで期待値が1.5R超、勝率が45%超を保つなら、実弾で回してよい。コストの見積もりは決して飛ばさないこと——それが利益と痛みを分ける。

backtestingでは、完璧さは疑いの対象だ。優位を生むのは現実主義である。コストを見積もり、過剰適合を避け、前向きに検証せよ——さもなければ実弾で崩れる。

関連レッスン

中級 #34

トレード日誌を極める

実弾の成績を追い、backtestの結果と突き合わせる。

レッスンを読む →
初級 #9

ポジションサイジング

backtestでも適切なポジションサイズを使い、現実的な結果を得る。

レッスンを読む →
中級 #30

相場状態の見きわめ

あらゆる相場状態で戦略を試し、頑健さを確かめる。

レッスンを読む →

⏭️ 次回

レッスン#33:高度なリスク管理——プロの枠組み — ケリー基準、動的なポジションサイズ、そしてdrawdownへの対処手順を学ぶ。

教育目的のみ。 トレードには重大な損失リスクが伴います。過去の実績は将来の結果を保証するものではありません。

💬 ディスカッション (コメント0件)

0/1000

コメントを読み込んでいます…

← 前のレッスン 次のレッスン →

Signal Pilotで取引を始めますか。

学んだ内容を、プロ向けのインジケーターとリアルタイムの市場分析ツールで実際に使ってみてください。

Signal Pilotに戻る →
教育目的のみ。 トレードには重大な損失リスクが伴います。金融助言ではありません。過去の実績は将来の結果を保証するものではありません。