EAウォークフォワードのIn-Sample比率の選び方【WFE計算と時間軸別ガイド】
最終更新: 2026年06月
「IS:OOS = 80:20が定石」という話は正しい。しかし、その比率に従っていれば十分かというと、そうではない。筆者がアルゴリズム取引ファンドで数十本のEAを評価してきた経験から言えば、比率の選択は入口に過ぎず、出口は「何ウィンドウで検証できるか」と「OOSで最低何トレード確保できるか」にある。
本記事では、In-Sample/Out-of-Sample比率の数理的根拠を整理したうえで、時間軸別の設計ガイドとWFE(Walk Forward Efficiency)による合否判定を体系的に解説する。EA開発を始めたばかりの方から、カーブフィッティングに悩んでいる中級者まで、「比率を決める思考回路」を持ち帰ってもらうことが目標だ。
目次
- In-SampleとOut-of-Sampleとは何か
- 業界標準の80:20比率の根拠と限界
- 時間軸別IS/OOS比率の選び方(日足・H1・M15)
- 比率よりウィンドウ数が重要な理由
- 最低トレード数から逆算するIS/OOS設計
- WFE(ウォークフォワード効率)で合否を判定する
- よくある質問(FAQ)
- まとめ
In-SampleとOut-of-Sampleとは何か
EAウォークフォワード分析において、In-Sample(IS)は最適化用の訓練データ期間、Out-of-Sample(OOS)は未知データとして汎化性能を評価する検証期間を指す。
まずウォークフォワード分析(WFA)の基本構造から押さえておく。
In-Sample(IS) とは最適化に使う訓練データ期間のことで、ストラテジーのパラメーターをこの期間に合わせて最適化する。Out-of-Sample(OOS) はその最適化されたパラメーターを適用し、未知データとして評価する検証期間——一言で言えばモデルの「答え合わせ」の場だ。
問題は単純に見えて、実際には深い。
ISは「モデルが記憶する期間」と考えると分かりやすい。データが長いほどパラメーターは安定しやすいが、長すぎると直近の相場レジームから乖離する。OOSは「モデルが汎化できるかを測る期間」で、短すぎるとトレード数が不足して統計的に無意味になり、長すぎると相場環境が変わりすぎて評価が歪む。
直感的には「多くのデータで学習すれば良い」と考えたくなる。しかし数理的には、パラメーター自由度に対してサンプルサイズが過大になると、モデルは訓練データのノイズまで学習し始める。これがカーブフィッティングの本質だ。
ウォークフォワード分析は、「時系列を複数のウィンドウに分割し、各ウィンドウで最適化→検証を繰り返す」ことでこの問題に対処する手法だ。単一の最適化では見えない「時間方向の汎化性能」を可視化できる点が、バックテスト単体との決定的な違いになる。
関連記事: EAのカーブフィッティングとは?過剰最適化の見抜き方と回避手順
業界標準の80:20比率の根拠と限界
IS:OOS = 80:20(Pardo標準)は合理的な出発点だが、OOSトレード数の不足・ウィンドウ数の欠如・時間軸への不適合という3つの問題が実務では頻出する。
業界で最も引用される比率は 80:20、すなわち全データの80%をIS、20%をOOSに割り当てる設計だ。Robert Pardoが著書で示したこの基準(sys-tre.comのEA最適化ガイドでも参照されている)は、以下の考え方に基づく。
- パラメーター最適化には十分な訓練データが必要
- OOSは「短くても相場の1サイクルを含む」長さが望ましい
- 4:1の比率であれば、ISで最適化した結果がOOSに一定程度汎化する
経験則としては合理的だ。ただし筆者がこの比率をそのまま適用した際に、繰り返し遭遇した問題がいくつかある。
問題1: OOSのトレード数が足りない
例えば日足EAで全期間が5年、OOS = 1年とした場合、日足で月3〜5トレードのEAでは年間36〜60トレードしか発生しない。30〜50トレードでの統計的有意性は非常に低く、1〜2本の大きなトレードが結果を左右してしまう。
問題2: ウィンドウ数が確保できない
「データ全体に対して80:20を1回だけ適用する」という設計では、WFAとしての意味がほぼない。1ウィンドウの検証は、特定の相場環境にたまたま適合した可能性を排除できないからだ。
問題3: 時間軸への不適合
M15のような短い時間軸では、1年のOOSの中にボラティリティが異なる複数のフェーズが混在しやすい。4年ISで最適化されたパラメーターが直近3ヶ月の相場に対応できているかは、また別の話だ。
80:20はスタート地点として間違っていない。ただそれは「比率を決める」思考の終点ではなく、起点に過ぎない——というのが、実際に数十本のEAを評価してきた率直な感想だ。
関連記事: EAパラメーター最適化の方法と落とし穴|カーブフィッティングを回避してフォワードテストで結果を出す
時間軸別IS/OOS比率の選び方(日足・H1・M15)
日足は4:1・H1は3:1〜2:1・M15以下は相場レジームへの適応を優先して設計する。いずれもOOSの最低トレード数と相場サイクルの包含を先に確認することが前提だ。
時間軸によって、適切なIS/OOS比率と期間長は大きく変わってくる。以下は実践的なガイドラインだ(sys-tre.comのEA最適化ガイド、StratBase等の情報に基づく)。
日足EA
推奨構成: IS = 4年 / OOS = 1年(比率 4:1)
日足EAは1トレードあたりの保有期間が長く、月間トレード数が少ない。そのため相対的にISを長く取り、OOSも最低1年は確保したい。1年のOOSで30トレード以上を達成できるかを必ず試算すること。
相場サイクル(トレンド→レンジ→トレンドの切り替わり)を少なくとも1サイクル含む期間設計が理想で、4年は多くのケースでその条件を満たす。
H1・H4 EA
推奨構成: IS = 2〜3年 / OOS = 6〜12ヶ月
中期時間軸では月間トレード数が日足より多いため、OOS期間はやや短くできる。ただし6ヶ月以下は避けたい。相場の季節性(夏枯れ・年末ボラティリティ)を1サイクル含むには最低6ヶ月かかるからだ。
brian0111.comが公開しているPython×MT5実装例では、H1 EAに対して6ヶ月IS / 1ヶ月OOSのローリングWFAを採用している。ウィンドウ数を多く取れる利点がある一方、ISが短いぶん相場レジームの変化に敏感な設計になる。実装目的(短期適応vs長期安定)によって使い分けが必要で、どちらが正解というわけではない。
M15以下
推奨構成: IS = 1〜2年 / OOS = 3〜6ヶ月
短い時間軸ほど、過去の特定フェーズへのフィッティングリスクが高まる。BookSoundがnoteで公開している実践例(M15・GBPJPY)では3年IS / 1年OOSを採用しており、OOSを長めに取ることでカーブフィッティングの検出感度を高めている。
M15以下では月間トレード数が多くなるため、OOS 3ヶ月でも統計的にある程度意味のあるサンプルは得やすい。その一方でフラッシュクラッシュや突発的イベントの影響も受けやすく、OOS期間中にそうした期間が偏在していないかの確認は欠かせない。
比率よりウィンドウ数が重要な理由
IS/OOS比率の精度よりも、ウォークフォワード分析のウィンドウ数(最低6〜8、理想12〜20)の確保が統計的信頼性に直結する。
これが本記事で最も強調したい点だ。
IS/OOS比率をどれだけ精密に設定しても、ウィンドウ数が少なければ統計的信頼性は著しく低い。StratBaseのウォークフォワード分析ガイドでは、最低6〜8ウィンドウ、理想は12〜20ウィンドウという基準が示されている。
なぜウィンドウ数がそこまで重要なのか。
WFAの各ウィンドウは「その相場環境においてパラメーターが汎化できるか」を1回試す実験だと考えると分かりやすい。ウィンドウが6回あれば「6種類の相場環境で検証した」ことになり、20回あれば「20種類の環境で汎化性能が確認された」ことになる。
ウィンドウが2〜3回しかない設計では、たまたまEAに有利な相場環境だけを検証した可能性を排除できない。逆説的に聞こえるかもしれないが、OOS期間を短くしてでもウィンドウ数を増やす方が、統計的信頼性が高まるケースがある——これは筆者が実際に何度か痛い目を見て学んだ判断軸だ。
ローリングWFAのウィンドウ数計算式(StratBase参照):
ウィンドウ数 = (D - W) / S
D = 総データ期間(月数など)
W = ウィンドウ長(IS + OOS)
S = ステップサイズ(OOS長、またはそれ以下)
具体例で計算してみる。
- 総データ期間: 12ヶ月
- ウィンドウ長: IS 3ヶ月 + OOS 1ヶ月 = 4ヶ月
- ステップ: 1ヶ月
(12 - 4) / 1 = 8ウィンドウ
同じ12ヶ月のデータでも、ウィンドウ設計次第で得られるウィンドウ数は大きく変わる。ステップを大きくするとウィンドウ数が減り、小さくするとウィンドウが重複しすぎて相関が高くなる。このバランスが設計の妙だ。
筆者が実装した経験では、ステップ = OOS長(ノンオーバーラッピング)を基本とし、データ量が豊富な場合はステップ = OOS長の半分として疑似的なオーバーラップWFAに切り替える設計が、ウィンドウ数と独立性のバランスを取りやすかった。
Claudeと会話しながらウィンドウ設計やWFE計算のロジックをインジケータとして実装できるHedgrow FXはこちら。
最低トレード数から逆算するIS/OOS設計
「比率先決め」ではなく「OOS最低30トレード・IS最低100〜200トレードを先に確保し、そこから期間を逆算する」設計が数理的に正確だ。
「比率を先に決めて期間を決める」のではなく、「必要なトレード数を先に決めて、そこから期間を逆算する」アプローチが数理的には厳密だ。
この逆算法のステップを整理する。
Step 1: OOSに必要な最低トレード数を決める
一般的な基準として、OOSに 30トレード以上、ISに 100〜200トレード以上 が求められる(StratBase参照)。
30というのは中心極限定理の観点から見た「最低限の統計的意味を持つサンプルサイズ」の目安だ。ただし30トレードでのシャープレシオ推定の信頼区間は非常に広い。100トレード以上あれば推定精度は格段に上がる。
Step 2: EAのトレード頻度を推定する
バックテストからEAの月間平均トレード数を算出する。例えば「月平均15トレード」のH1 EAであれば、OOS 2ヶ月で30トレード、IS 7ヶ月で105トレードとなる計算だ。
Step 3: ウィンドウ長と期間を決める
OOS長 = 30トレード以上が確保できる最短期間。IS長 = 100〜200トレードが確保できる期間。この合計がウィンドウ長になる。
Step 4: 総データ期間が十分かを確認する
必要ウィンドウ数(最低6〜8)を確保するために、総データ期間が十分かを検算する。
必要総データ期間 = W + (S × 必要ウィンドウ数)
例: W = 9ヶ月, S = 2ヶ月, ウィンドウ数 = 8の場合
必要期間 = 9 + (2 × 8) = 25ヶ月
この逆算をすると、「80:20」という固定比率が必ずしも最適でないことが見えてくる。トレード頻度が低い日足EAでは、OOS長を延ばしてトレード数を確保するために、比率を70:30や60:40に変更する方が合理的なケースは珍しくない。
関連記事: FXバックテストのプロフィットファクター基準:合格ラインの考え方
WFE(ウォークフォワード効率)で合否を判定する
WFE(Walk Forward Efficiency)= OOS年率リターン ÷ IS年率リターン。WFE > 0.7なら採用候補、< 0.5なら即時見直しが実務上の判断基準だ。
比率とウィンドウ設計を決めたら、最終的な合否判定にはWFE(Walk Forward Efficiency)を使う。なお、Hedgrow FXはEA開発者向けにClaudeとの対話を通じてWFE計算ロジックの実装や検証フローの設計を支援するFXツールだ。
WFEの計算式
WFE = OOS年率リターン ÷ IS年率リターン
各ウィンドウのOOSリターンとISリターンをそれぞれ年率換算し、その比を計算する。全ウィンドウの平均WFEが合否判定の基準値になる。
WFE評価テーブル(StratBaseの基準)
| WFE値 | 評価 | 判断 | |-------|------|------| | > 0.7 | Excellent | 採用候補 | | 0.5 〜 0.7 | Good | 条件付き採用 | | 0.3 〜 0.5 | Mediocre(過剰最適化傾向) | 要見直し | | < 0.3 | Poor / Rejected | 却下 |
直感的に解釈すると、WFE = 0.7とは「IS(訓練)での性能の70%がOOS(未知データ)でも再現できた」という意味だ。1.0を超えることもあり得るが、それはOOS期間が特別に有利な相場環境だった可能性もあるため、額面通りに受け取らない方がいい。
brian0111.comのPython×MT5実装では、WFE < 0.5 の場合はリフィットまたは停止を即検討するという実践的な基準を採用している。0.5というのはStratBaseの「Mediocre領域の上限」にあたり、実運用上のリスク管理として参考にできる閾値と考えられる。
MQL5クラスター分析との組み合わせ
MQL5の記事(Article 3279)では、ウォークフォワード分析に加えてクラスター分析の一貫性スコア(Consistency)を補助指標として使う手法が紹介されている。Consistencyは「利益を出したパスの割合」を示し、≥ 50% が合格基準とされる。
WFEだけでは見えない「パラメーター感度」をConsistencyで補完する設計だ。例えばWFE = 0.65でも、Consistency = 30%(利益を出したパスが3割しかない)なら、パラメーター空間の非常に狭いピークに乗っている疑いが濃い。この場合は採用を慎重に検討すべきだ。
WFEが低い時の診断フロー
WFEが基準を下回ったからといって、すぐに「EAの価値がない」と結論付けるのは早計だ。以下の順序で診断を進めるのが、実際に多くのEAを評価してきた筆者の経験上、効率的だった。
- OOSトレード数の確認 — 30未満なら統計的評価が不可能。IS/OOS比率の見直しが先決
- ウィンドウ数の確認 — 6未満なら設計自体を変更する
- 特定ウィンドウの異常確認 — 1〜2ウィンドウだけWFEが著しく低い場合は、そのウィンドウの相場環境(フラッシュクラッシュ等)を確認する
- パラメーター数の見直し — 最適化変数が多すぎるとカーブフィッティングが深刻になる。変数を減らすことでWFEが改善するケースがある
- ストラテジーの根本的見直し — 上記を試してもWFE < 0.3が続く場合は、ロジック自体の再設計を検討する
よくある質問(FAQ)
Q: バックテスト期間が5年しかない場合、WFAは意味がありますか? A: 意味はありますが設計に工夫が必要です。ステップを短くして(例: 1〜2ヶ月)ウィンドウ数を6〜8確保することを優先してください。ウィンドウ数が4以下になる設計は統計的信頼性が低く、推奨しません。
Q: WFEが1.2など1を超えた場合はどう評価すべきですか? A: 必ずしも優秀なEAとは言えません。OOS期間が特別にEAのロジックに有利な相場環境だった可能性があります。複数ウィンドウの平均WFEが1.0を大きく上回る場合は、OOS期間の相場特性を確認したうえで慎重に評価してください。
Q: IS/OOS比率を変えるたびに最適化をやり直す必要がありますか? A: はい、IS期間が変わればパラメーターの最適値も変わります。比率変更は単純な期間の切り替えではなく、再最適化のトリガーです。
Q: ローリングWFAとウォーキングWFA(アンカー型)の違いは何ですか? A: ローリング型はIS期間が固定長のため直近の相場への適応を重視し、アンカー型(ISが累積されていく)はより多くのデータを使いながら最適化できます。一般的には短期時間軸のEAにはローリング型、日足以上の長期EAにはアンカー型が適合しやすいと考えられています。
Q: OOSで損失が出た場合でも、WFEを計算する意味はありますか? A: あります。OOSが損失の場合WFEは負値になり、ISでは利益が出ているにもかかわらずOOSで損失という状態を定量化できます。これは典型的なカーブフィッティングの証拠です。
Q: MT5の組み込みウォークフォワードテスターで同じ分析ができますか? A: MT5のストラテジーテスターにもWFO機能がありますが、WFEの詳細な計算や統計的診断には制限があります。MQL5記事(Article 3279)で紹介されているカスタムスクリプトや、Pythonでの独自実装の方が柔軟な分析が可能です。Claudeと会話しながらインジケータやWFE計算ロジックが作れるHedgrow FXも実装の選択肢として参照してほしい。
Q: クロス通貨での検証(例: USDJPY最適化→EURUSDでOOS検証)は有効ですか? A: 通貨ペア間のロバスト性テストとしては有効ですが、これはWFAとは別の概念「アウト・オブ・サンプル通貨検証」です。同一通貨ペアでのWFAと組み合わせることで検証の多層化が図れます。
まとめ
IS/OOS比率の選択は、EAウォークフォワード設計の入口だ。
業界標準の80:20(Pardo標準)は合理的な出発点だが、時間軸・トレード頻度・利用可能なデータ量によって最適な比率は変わってくる。日足EAなら4:1、H1・H4なら3:1から2:1前後、M15以下では相場レジームへの適応を優先して設計する。
ただし比率よりも本質的に重要なのは、最低6〜8ウィンドウの確保と、OOSに30トレード以上を担保できるかの逆算だ。この2点が満たされなければ、WFEがどんな値を示しても統計的に無意味な数字になる。
WFE > 0.7なら採用候補、< 0.5なら即時見直しという判断基準(StratBase、brian0111.com参照)は実運用での意思決定に直結する。WFEが低い原因をトレード数・ウィンドウ数・パラメーター数の順に診断していくことで、「EAを捨てるか改良するか」の判断を根拠に基づいて下せる。
比率は答えではない。比率はウィンドウ設計の制約条件の一つに過ぎない。
Claudeと会話しながらインジケータが作れるHedgrow FXはこちら。WFE計算からウィンドウ設計の実装まで、対話形式で進められる。
免責事項: 本記事はEAのシステムトレード設計手法に関する情報提供を目的としており、特定の金融商品の売買を推奨するものではありません。FX取引は元本保証のない金融商品であり、レバレッジにより預託証拠金以上の損失が発生する可能性があります。バックテストおよびウォークフォワード分析の結果は過去のデータに基づくものであり、将来の運用成績を保証するものではありません。実際の取引に際しては、ご自身の判断と責任において行ってください。
