バックテストのOOS検証とは?過去に強いロジックが未来でも通用するか確認する方法

バックテストで良かった手法が別期間(OOS)でも残るかを、ウォークフォワードで確認する考え方を示す記事の画像 統計トレード攻略
バックテストの本番は別期間(OOS)での確認、という要点をまとめた画像

たくや

たくや

バックテストでPFが高かったら、もうそのまま使っていい気がするんですけど……。

みか

みか

でも、その成績ってたまたまその期間にハマっただけ、ってこともありそうだよね。

るなまる

るなまる

そこを切り分けるのがOOSとウォークフォワードです。今回は「見つけた成績」と「見ていない別期間の成績」をどう読むかを、一次データの実例で整理します。

この記事の結論

  • 時間帯バイアス(特定の時間帯にエントリーすると有利になりやすいかを調べる見方)の例では、974候補のうち別期間でも条件を満たしたのは13件(約1.3%)でした。
  • 別のウォークフォワード例では、期間をずらして確認した9回のうち6回が OOS PF 1.0 以上でした。
  • OOSは未来の利益保証ではなく、過去データに合わせすぎたロジックを疑うための確認です。

年ごとのPFのブレを見た検証では、同じ設定でも年ごとに成績が大きく揺れることを確認しました。今回はその次の確認です。調整に使った期間とは別の期間でも残るのかを見ます。

この記事でいう「未来」は、まだ見ていない別期間のことです。実際の将来を当てる話ではなく、見つけたルールが過去の一部にだけ合っていないかを確かめる話として読んでください。

バックテストで良く見えても、未来で崩れることがある

バックテストは、過去の値動きに同じルールを当てて、どれくらい利益や損失が出たかを見る方法です。ここでPFが高いと安心したくなりますが、その期間にちょうど合っていただけのことがあります。

特に、何度も条件をいじって「一番よく見える形」を探した場合は要注意です。見つけた瞬間は強そうでも、見ていない別期間に持っていくと普通に崩れます。OOS確認は、その崩れ方を早めに見に行く作業です。

OOS検証とは?過去に使った期間と確認用の期間を分ける

IS(In Sample)は、ルールを探したり調整したりするときに使う期間です。OOS(Out Of Sample)は、そのときには見ていない別期間です。

たとえば、答えを見ながら解いた問題で高得点でも、本番の別問題で同じように解けるとは限りません。OOSは、その「本番の別問題」に近い役目です。

探す期間ISと確認する期間OOSを分ける考え方を、答えを見て解いた問題と本番の別問題にたとえて説明した図
図1:IS(探す期間)とOOS(確認する期間)を分け、見ていない別期間で残るかを確かめます。
みか

みか

ISとOOSって、どっちも同じ過去データなのに、なんで分ける意味があるの?

るなまる

るなまる

同じ過去でも、探すときに使ったかどうかが違います。見ながら作ったルールが、見ていない期間でも残るかを切り分けるためです。

ウォークフォワード検証では何を見る?

OOSを1回だけ見ると、「たまたまその1回だけ残った」可能性が残ります。そこで、期間をずらしながら IS → OOS を繰り返すのがウォークフォワードです。

今回確認できた例では、2年分を調整に使い、続く1年分で確認する組み合わせを、時期をずらしながら9回繰り返し、そのうち6回で OOS PF 1.0 以上でした。全部通ったわけでも、全部崩れたわけでもありません。ここから分かるのは、「1回の勝ち負け」より、何回残ったかを見るほうが判断しやすいということです。

見るポイントは大きく3つです。OOSでも利益側に残ったか時期をずらしても極端に崩れないかOOSの件数が少なすぎないかです。

今回の検証条件

この記事で使っている数字は、次の2つの確認済み集計結果から支えています。1つは「別期間でも残る候補がどれだけあるか」を見るOOS例、もう1つは「窓をずらして何回残るか」を見るウォークフォワード例です。

例1|OOS確認の母集団

  • 通貨ペア:USDJPY
  • 時間足:M5
  • 期間:2015-01-01〜2025-12-31
  • IS / OOS:2015-2020 / 2021-2025
  • バー数:IS 446,680 / OOS 373,105
  • 集計単位:時間帯・条件の候補セル 974件
  • 指標:OOS平均リターン、方向一致、通過件数

例2|ウォークフォワード確認

  • 通貨ペア:USDJPY
  • 時間足:M15(M5派生データで確認)
  • 期間:2015-01-01 22:00〜2025-12-31 21:45
  • 2分割:2015-2020前半 / 2020後半-2025
  • 2年を調整期間、続く1年を確認期間とする組み合わせを9回実施
  • 見るもの:各期間の OOS PF と OOS 取引数
  • 判定例:OOS PF 1.0 以上の確認回数

どちらの例も、固定0.5pipsを約定価格へ反映したバックテスト値です。変動スプレッド、滑り、手数料、約定拒否までは再現していません。

OOSで成績はどれだけ変わった?

まずOOS確認の例では、974候補のうち通過は13件(約1.3%)でした。探した時点では多そうに見えても、別期間へ持っていくと大半は残りません。

時間帯バイアスの候補974のうち別期間でも条件を満たしたのは13件だったことを示す図
図2:候補974のうち、別期間でも条件を満たしたのは13件でした。

次にウォークフォワードの例では、期間をずらして確認した9回のうち6回が OOS PF 1.0 以上でした。全部崩れたわけではない一方で、どの時期でも自動的に通るほど安定しているわけでもありません。

さらに、OOSがISを大きく上回る候補もありました。夜間帯の一部では、OOS期間のPFがIS期間の4〜12倍になった候補があり、「その期間特有の偏りが強い可能性が高い」として実装候補から外れています。つまり、OOSが強すぎるのも無条件で安心材料にはなりません。

たくや

たくや

全期間PFだけじゃなくて、別期間でどれだけ減るか、何窓で残るかまで見ないと危ないんですね。

るなまる

るなまる

はい。落ち方と残り方の両方を見ないと、「たまたま強かっただけ」を見抜きにくくなります。

バックテスト採用前に確認したいポイント

  • 全期間PFだけで採用しない。まずISとOOSを分けて確認する。
  • OOSで大きく崩れていないか。PF、勝率、平均損益の向きを見る。
  • 何窓で残ったか。1回だけではなく、ウォークフォワードで回数を見る。
  • OOS件数が少なすぎないか。少ないと偶然の影響が大きい。
  • 実運用コストを別で足す。変動スプレッドや滑りを無視したまま採用しない。

この検証結果を見るときの注意点

  • この記事の「未来」は、調整に使っていない別期間の意味です。将来利益の保証ではありません。
  • OOS確認の974→13と、ウォークフォワードの期間をずらして確認した9回のうち6回は、別々の確認例です。同じロジックを1本の数字にまとめたものではありません。
  • コスト前提は固定0.5pipsを約定価格へ反映したバックテスト値です。変動スプレッド、滑り、手数料、約定拒否は未反映です。
  • 本文では読み方に必要な数字に絞り、採用設定や細かな条件は公開していません。

FAQ

Q. OOSで残れば、そのまま実運用しても大丈夫ですか?

A. いいえ。OOSで残っても、将来の利益を保証するものではありません。変動スプレッドや滑りを含めて、別途確認が必要です。

Q. OOSで崩れたら、そのロジックは完全にダメですか?

A. 完全否定ではありません。ただ、探した期間に合いすぎていた可能性は強く疑います。崩れ方を見て、期間依存か、件数不足か、コストの問題かを切り分けます。

Q. OOSとウォークフォワードの違いは何ですか?

A. OOSは見ていない別期間での確認です。ウォークフォワードは、その確認を1回で終わらせず、期間をずらしながら何窓で残るかまで見ます。

Q. この記事の「未来」は何を指していますか?

A. 調整や選別に使っていない別期間のことです。実際の将来相場を保証する意味ではありません。

まとめ|過去に強いだけで採用しない

バックテストで良く見えるロジックでも、別期間に持っていくと多くは残りません。今回確認できた実例でも、974候補のうち通過は13件、別のウォークフォワード例では期間をずらして確認した9回のうち6回でした。

だからこそ、全期間PFの高さだけで採用せず、ISとOOSを分ける。さらに、期間をずらした窓でも崩れ方を見る。この順番で見たほうが、見かけの強さに振り回されにくくなります。

たくや

たくや

次からは、PFが高かった時点で終わりにしないで、別期間と窓の残り方まで見ます。

みか

みか

OOSで残っても安心しきらずに、コストや滑りも別で見るようにしたいね。

るなまる

るなまる

その順番なら、過去に合いすぎたルールを早めに外しやすくなります。遠回りに見えて、一番ブレにくい見方です。

この結果を検証期間の見方を見直す材料に使う

OOSを見る意味は、成績の良い数字だけを信じないための確認を増やすことです。過去に強かった期間だけで終わらせず、期間を分けて見たときに傾向が残るかを確かめる流れにすると、確認手順も整理しやすくなります。

※この項目には広告リンクが含まれます。

MT4でインジやEAの表示を試しながら検証環境を確認したい人は、FXTFのMT4環境も確認候補になります。対応状況や取引条件は変わることがあるため、利用前に公式情報で確認してください。

FXTF MT4の公式情報を確認する

るなまるの検証メモ

IS期間で選んだ条件をOOS期間へ適用し、固定0.5pipsを約定価格に反映したうえで、PFと平均損益を比較しています。

OOS検証は、過去に合った条件が別期間でも通用するかを確認する方法です。1回のバックテスト結果だけで、将来の成績を保証するものではありません。

次に読む記事

年ごとのPFのブレを見た検証

長期データと直近データの役割の違いを確認した検証

M1データとリアルティックの精度差を確認した検証

この記事を書いた人

るなまる

るなまる|データアナリスト

Python・統計を使ったFXの検証を2018年から継続。長期ヒストリカルデータをもとに、相場でよく聞く説やバックテスト結果を検証しています。
プロフィールはこちら

タイトルとURLをコピーしました