デモ口座、バックテスト、フォワードテスト、マーケットリプレイ

戦略はデモ口座、過去データによるテスト、リアルタイム、マーケットリプレイで検証できます。それぞれの環境が答える問いは異なり、固有の限界があります。本記事では、結果から何が分かるのか、コストをどう織り込むか、パラメータの選択と独立した評価をどう分けるかを説明します。また、ルールが実際の注文執行に直面する前に、データやシミュレーションの誤りが成績曲線をよく見せてしまう仕組みも示します。

戦略テストを題材にした教育用イメージです。ツールと依存関係を示すもので、成績や取引の推奨ではありません。
60秒で押さえる要点
  • 環境が記述されていないテストは検証できない。銘柄、期間、データの出所と品質、ティックモデル、コストモデル、インサンプルとアウトオブサンプルの分割がなければ、結果は単位のない数値にすぎません
  • コストを含めないバックテストは、実際に運用したいものとは異なるシステムを表す。以下の計算では、同じ取引列でも、コストなしなら+12,000 USD、スプレッド、手数料、スリッページを加えるとちょうど0 USDになります
  • 最適化は探索であり、検証ではない。千通りの試行の中で最良の設定は、その過去データ上で最良だっただけです。調べたバリエーションの数も、結果そのものと同じく結果の一部です
  • ウォークフォワード が機能するのは、アウトオブサンプルを未使用のまま保っている間だけ。アウトオブサンプルの結果を見て戦略を変更すると、そのデータ区間は、それ以降のすべての反復においてアウトオブサンプルではなくなります
  • ルックアヘッドは思わぬ経路から入り込む。例えば、シグナルを生んだ足の終値でのエントリー、過去に遡って再計算される指標、改定後のマクロデータを使う場合です
  • デモとペーパートレードは執行テストではない。検証できるのは操作の仕組みやルールの遵守です。デモサーバーが執行コストをどの程度再現するかはブローカーが決めるため、該当口座の資料を確認する必要があります。残りは実資金口座でしか測定できず、その測定結果は実際に測定したポジションサイズに対するものです
  • フォワードテストが好成績でも保証にはならない。確認できるのは、ルールが未知のデータ区間を乗り切ったことです。次の相場局面でも通用することまでは確認できません

1. デモ、ペーパートレード、バックテスト、フォワードテスト、リプレイ、ライブ — 異なる六つの問い

テストを巡る誤解の多くは、「戦略は検証済みだ」という単純化から生じます。どこで、何について検証したのでしょうか。これらの環境は、正確さという一つの尺度に沿って順に並ぶ段階ではありません。測っているものが異なります。

デモ口座 は、ブローカーのサーバー上で仮想資金を使う口座です。レートは通常、実口座と同じ配信元から来ますが、執行はデモサーバー側で簡略化したルールによりシミュレートされます。そのルールを決めるのはプラットフォームではなくブローカーで、口座種別によっても異なり得ます。したがって、「デモでは再現されない」という説明は、該当口座の資料を確認して初めて成り立つもので、普遍的な原則ではありません(参考文献の16番 は、ある提供元での説明例です)。執行モデルやブローカーの注文フローの扱いは、 ブローカー選びの章で説明しています。

ペーパートレード とは、ブローカーに実際の執行注文を送らず、判断を記録することです。約定値は表計算、スクリプト、チャート環境内のエミュレーターが割り当てます。この違いは見落とされがちですが重要です。仮想注文をエミュレーターが約定させるなら、エントリー価格を決めるのは市場ではなくエミュレーターのルールだからです。ペーパートレードが調べるのは判断の論理です。エミュレーターのルールを別途説明し、その妥当性を示さない限り、執行品質のテストにはなりません。

バックテスト は、過去データでルールを再現します。答えるのは、データ、ティックモデル、コストモデルが現実と一致していたらどうなったか、という条件付きの問いです。答えの品質は、前提の品質を超えません。

フォワードテスト は、調整に使った期間の外でルールを検証します。最適化処理に一度も見せていない過去の留保区間を使う場合もあれば、後戻りできないリアルタイムの観測を足ごとに行う場合もあります。

マーケットリプレイ は、先の値動きを隠して過去を再生し、手動で判断する仕組みです。裁量戦略の訓練ツールであり、実資金口座と同等ではありません。

実口座 は、スリッページ、スプレッド拡大、拒否、部分約定といった実際の執行コストを測定できる唯一の環境です。

六つのテスト環境と、それぞれが答える問い
環境答えられる問い判断できないこと条件の設定者
デモ口座プラットフォームを操作できるか、自動売買システムが通常運用中に停止しないか執行コストと低流動性時の挙動ブローカー(デモサーバー)
ペーパートレード自分のルールを一貫して適用できるか約定価格 — エミュレーターや自分の取り決めで割り当てられる利用者、またはツールのエミュレーター
バックテスト明示した前提の下で、特定の過去データ上ではどうなったか将来、執行コスト、前提の正確さテストの作成者(データ、ティックモデル、コスト)
フォワードテスト最適化処理が見ていないデータ区間でもルールが通用したか次の相場局面。小標本の問題も解決しないデータの分割、または時間の経過
マーケットリプレイ右側を見ずに、順を追って状況を認識できるか執行コストと、実損失がもたらすプレッシャーリプレイセッションの作成者
実口座(最小限のエクスポージャー)そのポジションサイズで実際にいくら執行コストがかかるか大幅に大きいサイズでの執行コストブローカーと市場の状態
数量0.10ロットと保護水準を設定したEUR/USDデモ注文のモデル。
仮想取引では操作を試せますが、実際の執行やコストは検証できません。
対象範囲を一文で。 本記事で説明するのは、データ、コスト、標本分割、再現性という検証手順です。ある論理がそもそも経済的に意味を持つか、優位性を統計的にどう測るかについては、 戦略の章で扱います。ポジションサイズとリスク上限については、 リスク管理の章で扱います。ここではテストへの入力として扱います。

2. デモとペーパートレードで測れないもの

デモ口座は「お金を使わないライブ取引」と説明されることがあります。しかし、具体的に確認できる複数の点で正しくありません。以下の表は、デモサーバーでは存在しない、あるいは簡略化される可能性のある要素を挙げています。実資金に移ると、いずれも結果に直接影響します。「デモ」の列は典型的な簡略化を説明するもので、全ブローカーに共通の規則ではありません。シミュレーションの範囲は口座提供元が決め、同じブローカーでも口座種別により異なり得ます。

執行の要素:デモ口座と実資金口座の比較
要素デモ実口座
スリッページ多くのブローカーではゼロ、または固定値でモデル化。シミュレーション範囲は口座提供元が設定時点と流動性に応じて変動。経済指標発表前後やセッション開始時に最大になりやすい
拡大する スプレッド固定、またはほとんど変動しないことが多い低流動性時やイベント前後に拡大。デモではその変化が平滑化されがち
拒否とリクオートまれ、または発生しない執行モデルと口座種別に応じて発生。プラットフォームではなくブローカーの特性
部分約定通常は全量約定数量が大きく流動性が悪いと発生し得る。マイクロポジションでは通常、影響しない
利用できる流動性通常、デモサーバーは拒否しない。拒否があり得るか自体も、その提供元のルール次第有限。エキゾチック通貨やセッション外では、自分の価格水準で流動性がなくなる場合がある
価格の窓(ギャップ)実口座とは異なる形で再現されることがあるギャップ内のストップロスは成行注文として働く。ストップ水準ではなく、最初に利用できる価格で執行される
心理的な重みゼロ — 損失に実際の影響がない実在し、そもそも計画を実行できるかに影響する
推測せず、自分の口座について確認する方法。 デモサーバーのルールがブローカーの資料に記載されている場合は、推測する必要がありません。業界全体の規則ではなく、特定の提供元の例です。IGは2026年5月29日付のヘルプ記事で、自社デモ口座について「デモ口座の取引は、スリッページ、金利・配当調整、時間外の価格変動の対象にならない」、注文は「数量や価格を理由に拒否されることはない」と説明しています。ただし実口座ではそのような拒否があり得ます(参考文献の16番、参照日22.08.2026)。この記述が説明しているのはIGのデモだけです。他社ではシミュレーション範囲が狭いことも広いこともあります。自分の口座の資料で、slippage、requote、rejection、partial fillを探してください。資料に説明がなければ、テストの記述に書くべきなのは「ゼロ」ではなく「不明」です。

表の最後の行は、妥当な計画を場当たり的な判断に変えてしまい得ますが、本記事の主題ではありません。プレッシャー下の行動の仕組みについては、 プロセスと結果の記事で説明しています。ここで扱うのは、測定可能な執行コストです。

仮のEUR/USD買い注文。基準価格1.1000、実約定1.1003なら不利なスリッページは3 pips。
起こり得る執行差の一例です。デモ規則は提供元次第で、実注文で常にスリッページが発生するわけではありません。

スリッページを見積もらず、測定する方法。 各取引について、シグナル時の価格、要求価格、執行価格、クリック時のスプレッド、約定時のスプレッド、遅延、セッション、マクロイベントの有無、ブローカーのサーバー時刻を記録します。標本が集まったら、平均だけでなく中央値と分布の裾も計算してください。少数の極端な約定を含む平均は、良い方向にも悪い方向にも誤解を招きます。こうして得た数値こそ、バックテストのコストモデルに入れるに値します。

最小限のエクスポージャーで測れるのは、そのサイズのスリッページ。 0.01ロットで測定したスリッページは、0.01ロットに対する測定です。それを百倍のポジションに適用するのは測定ではなく仮定であり、テストの記述に明記しなければなりません。測定対象のデータを超えて、結論を黙って拡張することになるからです。

基準となる事例:2019年1月3日の円急変。 アジア時間の薄い流動性の中で、円の通貨ペアが数分間で急変しました。この出来事はオーストラリア中央銀行の報告書の独立した囲み記事で説明されています(参考文献の12番、内容参照日22.08.2026)。報告書は「AEDT午前9:36、重要なニュースがない中、約30秒間で円が米ドルに対して3パーセント上昇した」とし、売値と買値の差が「約2 pipsから100–300 pipsへ」拡大したと記しています。同じ囲みの二つの記述が本記事では重要です。一つは「この時間帯、季節の市場流動性は低かった」こと。もう一つは、個人向けブローカーが損失の一定水準超過時にストップロス注文でポジションを自動決済することです。つまりこの時間には、まさにその仕組みが作動しました。そのコストをテスターが再現できるのは選択したモデル方式の範囲内だけであり、簡略方式では注文に記載された価格で約定させるため、全く再現できません(指値・逆指値注文の約定に関する小節を参照)。値動きの幅と約定価格はデータ提供元やブローカーごとに異なるため、ここに唯一の「正しい」pips値はなく、提示もしません。戦略テストに対する結論は限定的で具体的です。固定スプレッド、スリッページゼロのコストモデルは、このような時間帯を全く再現せず、タイトなストップを使う戦略が最も影響を受けます。出来事の経過と市場背景については、 セッションと取引時間の章で扱います。

数量欄が空白の板と例示レートのモデル。
表示された板は、分散型FX市場全体を表しません。

3. バックテスト結果の構成要素:データ、ティックモデル、コストモデル

テスターの結果は、利用者が意識しないまま決めてしまう三つの事柄で変わります。どのデータを読み込んだか、足の中の値動きをどう再現したか、各取引に何を上乗せしたかです。

ティック生成モデル

MetaTrader 5の資料には、テスターの五つのモードが示されています。 全ティック, リアルティックに基づく全ティック, 1分足OHLC, 始値のみ および 数学的計算。ここで最も重要なのは最初と二番目の違いです。 全ティック モードでは、分足データからアルゴリズムでティックを生成します。 リアルティックに基づく全ティック モードでは、ブローカーが収集したティックを使います。つまり、特定の配信一つの記録であり、市場全体の完全な再構成ではありません。 1分足OHLC は毎分四つの価格を再現し、 始値のみ は足の開始時にロジックを実行します。 数学的計算 は過去データを全く読み込まず、数学関数の最適化に使います。モード名と順序はテスター設定ページで確認できます(参考文献の2番、参照日22.08.2026)。テスターのモードは端末のバージョンとともに変わることがあるため、利用する前に自分のバージョンのヘルプを確認してください。

ただしリアルティックのモードを選んでも、計算で生成されたティックが一切含まれないという意味にはなりません。資料は代替処理を明記しています。「銘柄履歴に分足はあるが対応するティックデータがない場合、テスターは»全ティック«モードでティックを生成する」。逆に「分足がなく、その分の対応ティックデータがある場合、そのティックは無視される」とされています(参考文献の1番、参照日22.08.2026)。つまり、ブローカーの保存データに欠落や不整合があれば、一部区間はモデルで生成したティックで再現され、報告書にはその区間が別途表示されません。同じページは、リアルティックでは「分足内でスプレッドが変わり得る」一方、生成ティックでは該当足の固定スプレッドを使うとも説明しています。したがってデータモードは価格経路だけでなくスプレッドモデルも変えます。

実務上の帰結は単純ですが厄介です。足の中で高値と安値のどちらに先に到達したかにルールが依存するなら、ストップと目標を同時に置く戦略はすべて該当しますが、分足から生成したティックによるテストはその順序を推測します。プログラムの不具合ではなく、モデルの性質です。MetaTrader 4のテスターは過去データのカバー率を別の指標で示しますが、足の中の値動きはやはり実際の配信記録から読むのではなく、計算されます。資料が説明するモデル方式は三つです。 始値のみ, コントロールポイント および 全ティック 。最後の方式では「直近の下位時間足だけでなく、利用できるすべての近接時間足のデータも生成に使う」とされ、下位足データがない部分には既成の波形テンプレートを使います(参考文献の14番、参照日22.08.2026)。モデリング品質のバーは、実際にどの時間足を使ったかを示します。時間足が短いほど価格経路の推測は減ります。リアルティックの有無と履歴の深さは、ブローカーと保存期間に依存します。

過去データ、生成ティック、模擬処理の関係図。
テスターの品質スコアとは独立して、データと前提を確認してください。

テスターは指値・逆指値注文をどう約定させるか

ティックモデルは、テスターがどの価格を見るかを決めます。それとは別の前提が、待機注文が市場にあるとき、その価格をどう扱うかです。この前提は設定画面では見えにくく、ツールの資料を調べる必要があります。ここには二つの異なる問いが隠れており、分けて初めて計算を正しく理解できます。 いつ 注文が執行されるか、そして どの価格で執行されるか。後者の答えは、MetaTrader 5のテスターでは二つの別の軸、すなわち銘柄の種類とデータのモデル方式に依存します。この軸を混同すると、資料の正しい記述を、当てはまらない場面に適用してしまいます。

遅延。 MetaTrader 5のテスターの遅延再現は、自動売買による注文の発注を対象とし、その後のサーバー上の執行を対象としません。「EAが待機注文を使う場合、遅延は注文の発注だけに適用され、執行には適用されない(実際には執行はサーバー上でネットワーク遅延なしに行われる)」とされています(参考文献の2番、参照日22.08.2026)。したがって、すでに市場に置かれている注文の約定には、テスト内でネットワーク遅延が加わりません。現実にも加わらないので、この扱いは妥当です。

第一の軸:銘柄の種類。 遅延がないからといって、注文に書かれた水準で約定するとは限りません。資料はまず銘柄の種類で区別しています。ここで扱う店頭FX/CFD銘柄は非取引所銘柄であり、取引所上場の通貨契約とは別区分です。非取引所銘柄の規則は、「すべての待機注文とSL/TPはBidとAskで発動し、発動時点の現在の市場BidとAskで執行する」とされています(参考文献の13番 の 注文の発動と執行節、第一段落、参照日22.08.2026)。したがって、指値を含むすべての待機注文とストップロス、テイクプロフィットは、注文に書かれた水準ではなく、発動時の現在のbidまたはaskで執行されます。指値に対し指定価格より有利な差が生じれば価格改善です。これは指値を超え、不利な方向で約定してよいという意味ではありません。

指値注文はスリッページなしで約定するという記述は、取引所銘柄についてのもの。 同じ節の次の段落は、株式と取引所契約を別に扱い、異なるルールを示します。「取引所銘柄では、チャートの描画とストップ注文の発動は直近の取引価格(Last)に基づく。指値注文はBidとAskで発動する。指値注文は注文の指定価格で執行され(スリッページなし)、それ以外の注文は現在の市場BidとAskで執行される(スリッページがあり得る)」という説明です(参考文献の13番、同節第二段落、参照日は同じ)。これをテスター全般の規則として引用することがありますが、引用の誤りではなく適用範囲の誤りです。「指値はスリッページなし」は取引所銘柄に適用されます。非取引所FX銘柄には前の段落が適用され、取引所上場の通貨契約には取引所銘柄の規則が適用されます。

第二の軸:モデル方式。 銘柄の種類による扱いが成り立つのは、精密なモード、すなわち 全ティック と リアルティックに基づく全ティックです。モデル方式は別の軸であり、簡略モードではその規則自体が無効になります。「»始値のみ«と»1分足OHLC«のテストでは、待機注文とSL、TPは注文の指定価格で執行される。精密モード(全ティックとリアルティック)で使う市場価格執行アルゴリズムは、精度の低いモードには適さない」とされています(参考文献の13番、参照日は同じ)。提供元は理由と結論も説明します。「一部モードでは中間ティックを生成しないため、要求注文価格と現在価格(OpenまたはOHLC)の差が大きくなり得る。»始値のみ«と»1分足OHLC«で要求価格を使って執行すると、より正確なテスト結果を得られる」。直感とは逆の論理です。簡略モードには発動後の市場価格を取得する材料がないため、注文に書かれた価格で約定させます。次の足の始値での約定は、指定水準での約定以上に大きな誤差になるからです。

二つの軸を合わせて考える。 MetaTrader 5のテスターで非取引所FX銘柄を扱うと、二つの異なる執行環境になります。報告書の見た目が同じなので、混同しやすい点です。

  • 精密モード (全ティック, リアルティックに基づく全ティック)— すべての待機注文とSL、TPは、発動時の現在のbidまたはaskで約定します。スリッページはモデル化されますが、分足から生成した経路であれブローカーのティック履歴であれ、テスターが再現した価格経路の範囲内だけです
  • 簡略モード (1分足OHLC, 始値のみ)— すべての待機注文とSL、TPは、注文に書かれた価格で正確に約定します。全注文種別について、スリッページが計算から完全に消えます

結果への影響は同じ方向でも、簡略化の仕組みは注文種別によって異なります。ストップ注文は発動後、成行注文として振る舞います。現実の執行価格は水準突破後に最初に利用できる価格であり、その水準自体ではありません。簡略モードのように指定水準で約定させると、価格の飛びによるコスト全体が消え、成績がよくなります。指値注文は市場より下で買う、または上で売る注文です。指定水準での約定は、その価格でポジション全量を約定させる流動性があると仮定しますが、価格への到達だけで十分な流動性は保証されません。取引所では待ち行列の順位も重要で、店頭FX/CFDには提供元の執行ルールが適用されます。テスターは待ち行列も、その価格で利用できる数量もモデル化せず、価格経路しか知りません。どちらの簡略化も結果を有利にしますが、選んだモードで認められる場合にのみ計算に入ります。

市場の売買側も別の条件です。水準への到達は注文側に対応する価格系列で判断され、買いはask、売りはbidに反応します。一つの系列、通常はbidで行うテストは、スプレッドを加えて反対側を再現します。MQL5の資料は「テスト中、スプレッドはモデル化せず、過去データから取得する」と説明しています(参考文献の3番、参照日22.08.2026)。したがって発動時点は、自分の口座で発生したはずのスプレッドではなく、データに記録されたスプレッドで決まります。価格経路の密度自体も重要です。ティックの説明ページは「ストップ水準や待機注文は、指定価格と異なる価格で発動することがある(特に上位時間足でのテスト)」と警告しています(参考文献の1番)。

報告書を読むときの意味。 テスターの報告書には、二つのうちどちらの環境で生成したかは示されません。実行時の設定を読む必要があります。同じルールでも精密モードと簡略モードでは計算が異なり、これは計算精度ではなく約定ルールの違いです。平均損益が小さい戦略やタイトなストップの戦略は、除かれた価格の飛びのコストが成績の大きな部分を占めるため、特に敏感です。そのため待機注文の約定ルールは、ティックモデルやコストモデルと同列で環境説明に含める必要があります。それを開示しない報告書は、ツールの資料と照合すべきです。確認テストに大きな手間はかかりません。精密モードで再実行し、さらに平均的なスリッページ程度だけ約定を悪化させてもう一度実行し、どれだけ成績が残るかを確認します。

コストモデル

単位の異なる四つの項目を各取引に加えます。混同してはいけません。

  • スプレッド — 単位はpipsまたはpoints。固定値、データに記録された値、テスト開始時の現在値のどれを使うかが重要です。答えが三通りなら結果も三通りです。MetaTrader 5のテスターは前述の資料で確定できますが、他のツールでは該当テスターの説明を探す必要があります
  • 手数料 — 口座通貨建てで、通常はロットごと、片道ごとです。スプレッドと比較するには、銘柄とポジションサイズに対応するpip価値を使ってpipsに換算します
  • スワップポイント — 決済日の切り替わりをまたぐ保有にかかり、特定の曜日には三倍分が発生します。日中完結戦略では関係しませんが、長期保有戦略ではスプレッドより大きいこともあります
  • スリッページ — 単位はpipsまたはpointsで、要求価格と執行価格の差です。テスターには約定ルールで許される箇所だけで入ります。MetaTrader 5の通貨ペアでは、精密モードなら全待機注文とSL、TPに適用されますが、 1分足OHLC と 始値のみ では、注文の指定価格で約定するため全く入りません(参考文献の13番)

遅延を第五項目として付け加えることがありますが、ここでは意図的に含めていません。遅延の単位はpipsではなくミリ秒であり、取引から差し引く項目ではありません。執行モデルのパラメータであり、影響するのは どの価格 が使われるかであって、 いくら を差し引くかではありません。MetaTrader 5のテスターでは、 遅延なし と ランダム遅延 の各モードや固定遅延で再現できます。ただし待機注文の約定の小節で示した通り、自動売買による発注を対象とし、すでに市場にある注文の執行を対象とはしません(参考文献の2番)。コスト計算の同じ行でこの二つの量を混ぜるのは、丸めではなく単位の誤りです。

似て見える二つの誤りを分けて考える必要があります。サーバーアドレスへのpingで測ったネットワーク遅延は、注文執行にかかる時間ではありません。その間にはブローカー側の検証、待ち行列、実際の執行時点があります。インフラ、仮想サーバー、自動売買の稼働維持については、 自動化・EA・VPSの記事で詳しく説明します。ここで重要なのは、テストの遅延を黙ってゼロとせず、明示的に仮定することです。

データ自体の品質

結果に意味を持たせるには、まずデータを確認します。系列の欠落や不連続、重複、外れ値、時系列順、タイムゾーンと夏時間の切り替え、足の時刻が開始時刻か終了時刻か、さらにbid、ask、仲値のどれで系列を作ったかです。最後の点は軽視されがちですが、そもそも水準に達したかを左右します。ショートはaskで決済するため、bidで作った足にはストップを発動させた価格が一度も表示されないことがあります。

4. 完璧だが非現実的なバックテスト — 美しい曲線の構造

見栄えのよいテスト結果は、大きなごまかし一つではなく、単独では無害に見える小さな四つの妥協から生まれることが多いものです。各妥協と見抜き方を示します。

第一の妥協:まだ知り得ない価格でのエントリー

「足が移動平均より上で確定したら入る」というルールなのに、その同じ足の終値でエントリーしています。最終的な終値を必要とするシグナルは、終値が確定して初めて、その時点で利用できる価格で注文を出せます。終値で一度計算する一般的なモデルなら、次の足の最初のティックです。約定価格が偶然前の終値と一致することはあっても、モデルを指定せずその価格で取引できると仮定してはいけません。この前提を修正すると、結果は大きく変わり得ます。

判決ではなく感応度テスト: エントリーを一足ずらして再実行します。成績が消えた場合、分かるのは一期間のずれに耐えられないことだけです。未来情報の漏洩は可能な説明の一つですが、唯一の説明ではありません。単にシグナルの寿命が短い、あるいは執行価格に敏感な可能性もあります。判断を決めるのは、意思決定時点で各変数が利用可能だったかの監査です。このテストの全手順と、証明できないことは、 ルックアヘッドの節の最後の囲みに示します。

第二の妥協:コストなし

スプレッド、手数料、スリッページのないテストは、同じシステムの簡略版ではありません。期待値も損益分岐点も異なる別のシステムです。その変化の大きさは計算でき、次節で示します。

第三の妥協:千回の試行から選んだ一設定

最適化処理が返すのは順位表です。その最上段だけを戦略の成績として示すと、調べたバリエーションの数が抜け落ちます。試行が十分多ければ、意味のないルールでも探索の統計だけで最高成績は高くなります。この現象の形式的な説明は、 参考文献の8番 にあります。調べたバリエーションの数は、期間やコストと同じく結果の説明に必要です。

第四の妥協:調整に使ったデータで評価する

成績を報告する期間と同じ期間でパラメータを選んだなら、そこに検証はなく、当てはまりの説明があるだけです。同時に最も見抜きやすい誤りでもあります。どの区間を調整に使い、どの区間を評価専用にしたかを聞けばよいからです。

四つの妥協を一つの計算で見る — 美しい曲線はどれだけ残るか

四つを列挙するだけでは大きさは分かりません。以下の計算はそれを示し、各段階を一つの演算で確認できるようにしています。

計算の前提(例示値であり、実行したテストの結果ではない)。
環境は、 コスト感応度テストの節と同じです。EUR/USD、1.00標準ロット、pip価値10.00 USD、口座通貨USD。
データ:あるブローカーの36か月分の分足レート。24か月をインサンプル、12か月をアウトオブサンプルとし、境界は調整前に決めます。
インサンプルの取引数は1,000。アウトオブサンプルは、同じ取引頻度で評価期間が半分なので約500です。比較できるよう、ドル列は各行を1,000取引に換算しています。したがって第四行は正規化した値で、アウトオブサンプル自体で生じる金額ではありません。調べたパラメータの組み合わせは1,200通りです。
例で採用する往復コスト:スプレッド0.30+手数料0.70+スリッページ0.20=1.20 pips。実測値でも典型的な市場値でもなく、暗算で確認できるように選んだ数値です。
スワップはゼロです。例では、すべてのポジションを決済日の切り替え前に閉じる日中完結戦略を明示的に仮定しています。ロールオーバーをまたぐ戦略なら、この行はゼロではなく、別途加算が必要です。
これらは実行済みテスターから得た数値ではありません。四つの妥協それぞれの方向と規模を示す構成例です。電卓で検算できますが、自分のテストの代わりにはなりません。
同じルールから妥協を順に除いた場合(例示値)
段階除くもの結果
(pips/取引)
1,000取引
(USD、1ロット)
0. 最適化処理の報告何も除かない — シグナル足の終値で入り、コストはゼロ、順位表の最上位を選び、調整期間で評価+2.60+26,000
1. 実際に執行可能なエントリールックアヘッド:次の足の始値へエントリーを移す+1.20+12,000
2. コストを加算スプレッド、手数料、スリッページがゼロという前提0.000
3. 順位表の首位という特権なし同じ期間、同じコストで、最良値の代わりに1,200通りの中央値を使う−0.45−4,500
4. 調整期間の外で評価同じ固定パラメータをアウトオブサンプルに適用−0.30−3,000

各行の確かめ方。 ドル列はpipsの結果×10.00 USD×1,000取引です。段階0、1、2は同じパラメータ設定から前提を一つずつ除くので、縦に引き算できます。2.60 − 1.40 = 1.20、1.20 − 1.20 = 0.00です。段階3と4は追加の引き算ではなく、同じ結果に対する別の二つの問いの答えです。そのため段階2に継ぎ足さず、別に計算します。

段階1 では1.40 pipsを除きます。これは、確定時にしか分からない価格で入ることで、ルールが取り込んでいたシグナル足の値動きの部分です。修正後にちょうど1.20 pipsの粗利益が残るのは偶然ではありません。次節でコスト感応度を分解するのと同じシステムだからです。 段階2 は、その感応度が何をもたらすかを示します。往復コスト1.20 pipsを加えると、セント単位まで結果はゼロになります。

段階3 は、選ばれた成績と検証した設定群の中央値の差を示します。1,200通りの首位は1,200個の値の最大値です。中央値に対する優位、ここでは一取引0.45 pipsは選択の効果を示しますが、それだけで過剰適合を測るものではありません。順位表全体の中央値が負でも、選択点が孤立した突出値だとは証明できません。近傍と独立データを評価してください。 段階4 は、最適化処理が見ていない12か月で同じ固定設定を評価し、一取引−0.30 pipsとなります。

この仮の計算では、四つのうち三つの妥協を除くと、戦略のルールを一つも変えず、同じ1,000取引換算で+26,000 USDが−3,000 USDになりました。第四の妥協、すなわち順位表首位を示す特権は、第四行でも残っています。同じ固定パラメータをアウトオブサンプルで使っているからです。中央値との差は、異なる問いに答える第三行で別途示します。変わったのは、いつ入れるか、一取引のコストはいくらか、どの設定を示すか、どのデータで評価するかという前提だけです。

ルール固定後のIS成績と、変動するOOS成績のモデル。
成績低下は必然ではありません。独立した検証、安定性、現実的なコストが重要です。
「二十八ペアで試して四つで通用した」が根拠にならない理由。 並行した試行が十分多ければ、一部は偶然だけで好成績になります。事後的に良かったものを選び、戦略が機能する範囲として示すのは、結果に基づく選択であり、テストから得た結論ではありません。このデータマイニング・バイアスの仕組みは、 参考文献の9番 で説明されています。誠実な記録は、28銘柄を調べ、全結果を報告し、四つがプラスだった、となります。さらに、決済通貨が同じペアは独立標本ではありません。この依存の扱いは、 相関とポートフォリオリスクの記事で説明しています。
EUR/USD、GBP/USD、AUD/USDの仮の相関行列。
各買いポジションにはUSD売りが含まれます。相関が変動するため、ヘッジは保証されません。

5. コスト感応度テスト — 計算を順に確認する

多くの戦略が成立しなくなるのはここです。以下は実行したテストの結果ではなく、明示した前提に基づき電卓で確認できる構成例です。出所を追えない数値が一つもないため、仕組みを示すのに適しています。

計算の前提(例示値であり、テスト結果ではない)。
銘柄:EUR/USD、1 pip = 価格の0.0001。口座通貨:USD。
数量:1.00標準ロット、想定元本100,000 EUR。pip価値 = 100,000 × 0.0001 = 10.00 USD (EUR/USDは決済通貨がUSDなので、口座通貨でのpip価値は一定)。
コスト前の粗損益分布:1,000取引のうち、600が+8.00 pipsの利益、400が−9.00 pipsの損失。
粗利益合計:600 × 8.00 − 400 × 9.00 = 4,800 − 3,600 = 1,200 pips、すなわち 一取引1.20 pips.
粗プロフィットファクター = 4,800 / 3,600 = 1.33 (粗利益の合計を、粗損失合計の絶対値で割る)。
コストは新規と決済を合わせた往復分で計算し、各取引に加えます。
手数料をpipsに換算:片道一ロット3.50 USDなら往復7.00 USDなので、7.00 / 10.00 = 0.70 pips。手数料率はブローカーと口座種別次第です。ここでは実測値ではなく仮定値です。
スワップはゼロですが、これは実測ではなく仮定です。例は決済日の切り替えをまたがない日中完結戦略を扱っています。持ち越すならコスト列に別行を追加する必要があり、特定曜日の三倍分はスプレッドを上回ることもあります。
この表の数値は、実行したテスターや口座での測定から得たものではありません。すべて例示値であり、一取引の小さな優位性をコストがどれほど速く食い尽くすかを示すだけです。
同じ1,000取引に対するコストモデルの影響(例示値)
コストモデルスプレッド
(pips)
手数料
(pips)
スリッページ
(pips)
コスト合計
(pips)
純損益
(pips/取引)
純プロフィット
ファクター
1,000取引
(USD、1ロット)
コストなし0.000.000.000.00+1.201.33+12,000
スプレッドのみ0.300.000.000.30+0.901.24+9,000
スプレッドと手数料0.300.700.001.00+0.201.05+2,000
スプレッド、手数料、スリッページ0.300.700.201.200.001.000
前提より悪い条件0.600.700.501.80−0.600.86−6,000

各行の確かめ方。 「コスト合計」は左の三列の合計です。「純損益」は1.20 pipsからコスト合計を引いたものです。ドル列は純損益×10.00 USD×1,000取引です。純プロフィットファクターは、全取引にコストを加えた同じ分布から計算します。例えばコスト1.20 pipsなら、一取引の利益は8.00から6.80 pipsに減り、損失は9.00から10.20 pipsに増えます。利益は600 × 6.80 = 4,080 pips、損失は400 × 10.20 = 4,080 pipsで、プロフィットファクターはちょうど1.00です。この行の総コストは1,000 × 1.20 = 1,200 pipsで粗利益全体と一致するため、結果はセント単位までゼロになります。

コストモデル別の1,000取引の累積損益(例示値) +12,000 +8,000 +4,000 0 −4,000 −8,000 0 250 500 750 1,000 取引数 累積損益USD、EUR/USD 1.00ロット、pip価値10.00 USD コスト0.00 → +12,000 コスト0.30 → +9,000 コスト1.00 → +2,000 コスト1.20 → 0 コスト1.80 → −6,000
同じ1,000取引を五つの往復コストモデルで示しています。コストの単位はpips。1.20 pipsでは線がゼロ軸と重なり、粗利益全体がコストに消えます。表の上に示した前提から計算した例示値です。

この計算では二つの数値が参考になります。第一に、第三行と第四行の差はスリッページわずか0.20 pipsですが、最終損益では2,000 USDです。第二に、コストなしと、この例の水準のコストありの差は小さな補正ではなく、利益が出るシステムと出ないシステムの違いです。自分の戦略に1.20 pipsが現実的かどうかは、自分の口座での測定だけで決まります。ここでは市場から読み取った値ではなく、計算用に選んだ値です。一取引の平均粗損益が小さく、頻度が高いほど、この切り替わりは急になります。平均損益が数十pipsある保有型戦略なら、同じコスト変化の影響は小さくなります。したがって他人の例を使わず、自分の戦略のコスト感応度を計算する必要があります。

6. ルックアヘッドとデータ漏洩 — 未来からの情報混入

ルックアヘッド・バイアスは、判断時点でまだ利用できなかった情報を使うことです。データ漏洩はより広く、ルールの構築や評価に未来の知識が入り込むあらゆる経路を指します。どちらも誤りではなく好成績に見えるため、危険です。

漏洩が生じる箇所:

  1. シグナル足の終値でのエントリー。 第四節で説明しました。修正は、早くても次の足の始値で入るか、確定済みデータだけでシグナルを計算することです
  2. 過去に遡って再計算される指標。 Pine Scriptの資料は、スクリプトの「過去とリアルタイムの計算または描画」が異なる振る舞いになる状態をリペイントと定義します(参考文献の4番、参照日22.08.2026)。すべてがごまかしではありませんが、信頼できる結果として扱う前に、すべて説明しなければなりません。アラートの仕組みと過去・リアルタイムの違いについては、 TradingViewの記事で詳しく説明します
  3. 中心化された指標。 ある時点の値に、その先の観測値、すなわち t+k を使って t の値を求める仕組みは、過去チャートでどれほどよく見えても取引には使えません
  4. 改定後のマクロデータ。 数年後に改定された指標値は、発表時点で知られていた値ではありません。マクロデータを使うルールは、その時点で公表済みの改定を含め、判断時に利用できた版と実際の公表時刻を使う必要があります。発表内容自体の解釈については、 指標発表時の取引の記事で説明します
  5. 未来を知った上で銘柄を選ぶ。 現在まで存続した銘柄や、上昇したと分かっている銘柄だけでテストすると、未来に基づく選択が入ります。通貨では特にエキゾチックペアや為替制度変更期に関係します
  6. 標本を分ける前にデータを前処理する。 全データで計算した正規化、尺度調整、特徴量選択は、アウトオブサンプルの情報をインサンプルに持ち込みます。IS/OOSの分割は最後ではなく、最初の操作でなければなりません
シグナル遅延テスト — 感応度テストであり、決定的な判定ではない。
前提。 基準実行と同じルール、パラメータ、銘柄、期間、ティック生成方式、コストモデルを使います。変えるのはエントリー時点だけです。コード版、プラットフォーム版、両報告書の識別子を記録してください。なければ比較を再現できません。
手順。 シグナル全体を判断間隔の丸一期間分遅らせ、他を変えずに再実行します。二期間の遅延でも繰り返します。一点だけでは関係の形は分かりません。
観測結果。 比較するのは、遅延なし、一期間後、二期間後の一取引損益という三つの数値です。本記事のために実行したテストはないので具体値は示しません。自分の報告書の数値で三つの欄を埋めてください。
限界。 遅延後に成績が消えたことは、未来情報の漏洩の 証明にはならない ということです。数分で優位性を失う短命なシグナルや、一足の価格差が期待されるエントリーの優位性全体に相当する、執行価格に敏感なシグナルでも同じ形になります。このテストは、エントリー時点の変化に頑健なシステムとそうでないものを分けるだけです。
本当に決着をつけるもの。 漏洩を排除するのは利用可能性の監査です。判断に入る各変数の値がいつ分かったかを書き、判断時刻と比較します。タイムスタンプが判断より後なら、遅延テストの結果にかかわらず漏洩です。逆に、問題のない監査なら、遅延後に成績が下がってもこの問題は決着します。

7. インサンプル、アウトオブサンプル、ウォークフォワード

原則は一文で、例外を許しません。 調整に使ったデータを、同時に独立した検証に使うことはできない。他のすべてはここから導かれます。

インサンプル(IS)は、パラメータ選択、設定の試行、ルール変更に使ってよい過去区間です。アウトオブサンプル(OOS)は、その作業中に見ない区間です。時系列で分ける必要があります。全期間の観測をランダムに混ぜてもIS/OOS分割にはなりません。時系列には記憶があり、混ぜると情報が両方向に伝わるからです。

分割の最も重要な帰結: アウトオブサンプルの結果が後の変更に影響した時点で、独立性は失われる。OOS結果を見て弱いと判断し戦略を変えれば、その区間は以後の作業に対してOOSではなくなります。引き続き使えますが、独立した証拠ではなくISの一部としてです。実務でこの仕組みがどれほど頻繁に検証を壊すかのデータはなく、あるように装う必要もありません。効果は明白です。パラメータ変更に使ったOOS期間は、修正後のモデルの独立した証拠ではありません。

MetaTrader 5のテスターには、この分割が組み込まれています。 フォワード 設定には、 なし, 1/2, 1/3, 1/4 と カスタムがあり、常に期間の後半、時間的に後の部分を留保します(参考文献の2番)。OOSを誤ってのぞくことを防ぎやすい便利な仕組みですが、窓は自動移動しません。複数回のウォークフォワードは手動か外部ツールで組み立てる必要があります。資料の確認日は2026年8月22日です。

ウォークフォワード:移動する窓

ウォークフォワードは、過去区間を順にずらしながら同じ手順を繰り返します。一度の判定ではなく判定の列を得て、検証区間をつなぐことで、最適化処理が全体として一度も見ていない実績列を作るのが目的です。

  1. 最初の実行前に窓の長さを決める — 例えばISを12か月、OOSを3か月にします。結果を見てから長さを選ぶのは、別の調整です
  2. ISの窓だけで最適化する 調べた設定数も記録します
  3. 選んだパラメータをOOSの窓に適用する 一切変更しません
  4. 両方の窓をずらす OOSの窓の長さだけ進め、繰り返します
  5. つなぎ合わせた検証区間を評価する最適化結果ではありません。プラスの区間数、最悪区間の状態、各回で選ばれたパラメータが似ているかを確認します
ウォークフォワード:IS 12か月、OOS 3か月 IS:M1–M12 OOS M13–M15 IS:M4–M15 OOS M16–M18 IS:M7–M18 OOS M19–M21 第1回 第2回 第3回 インサンプル(調整) アウトオブサンプル(変更なし) 評価するのは接続したM13–M21であり、IS窓の最適化結果ではありません。
横方向は一か月25ピクセルです。IS窓は300ピクセル(12か月)、OOS窓は75ピクセル(3か月)。各回で両方を75ピクセル、すなわちOOS窓全体の長さだけずらします。そのため検証区間は正確に接続し、重なりません。

ウォークフォワード効率はPardoが導入した指標で(参考文献の7番)、IS外でどれほど成績を維持できるかを表す簡便な尺度として使われます。

WFE = OOSの年率換算リターンISの年率換算リターン × 100%

意味を持たせるには、両リターンを同じコスト控除後、同じ通貨、同じポジションサイズ規則で計算する必要があります。ISリターンがゼロなら比率は未定義、負なら正の優位性の維持を表す尺度にはなりません。リターンの定義が異なるシステム間でWFEを比較しても意味はありません。さらに重要なのは、WFEは合否を二分する門ではないことです。OOS十二取引の高いWFEは、四百取引の中程度のWFEより情報量が少なくなります。取引数、各回の結果分布、ドローダウン、コスト上昇時の挙動と合わせて見てください。

8. 最適化、パラメータの安定性、モンテカルロ法

最適化が答えるのは、このデータで最良の結果を出したパラメータはどれかです。今後よい設定がどれかには答えません。言葉の微妙な違いではなく、過去の記述と予測の違いです。運用記録がないため、本記事ではこの理由で失敗するシステム数を示せません。最適化処理は与えられたデータの結果を順位付けするだけで、将来成績を立証しません。

突出点と台地

順位表の首位だけでなく、その近傍を見ます。隣接するパラメータでも似た成績なら、小さな設定変化にルールの挙動があまり変わらない台地です。一段階動かすだけで崩れるなら突出点であり、過去データの構成に偶然合った可能性が高くなります。通常は頂点より台地の中央を選ぶ方が合理的です。この区別とウォークフォワード手法全体はPardoの研究に由来します(参考文献の7番)。

通常は最適化しないパラメータにも同じ確認をすると有用です。取引時間、最小ストップ距離、曜日フィルターなどです。サーバー時刻22:00までか23:00までかで成績が変わるなら、そのフィルターの経済的根拠と調整期間外の安定性を確認します。時間差だけで過剰適合は証明できません。

試した設定数も結果の一部

バックテストを報告するときは、成績とともに調べた組み合わせ数を示します。この習慣が、テストの記述と広告を分けます。多重検定の問題と、最高成績が探索の産物である確率の体系的な議論は、Bailey、Borwein、López de Prado、Zhuの論文にあります(参考文献の8番)。結果に基づく選択の体系的な説明はAronsonにあります(参考文献の9番).

予測ではなく頑健性テストとしてのモンテカルロ法

TomasiniとJaekleなどが説明する、単純で有用な方法です(参考文献の10番)。検証区間の取引損益を取り出し、順序を何度も無作為に変え、最大ドローダウンの分布を求めます。注目するのは、 その分布の右の裾 です。例えば最大ドローダウンの95パーセンタイル、すなわち模擬経路の95パーセントが超えない値です。それがリスク計画のドローダウン上限を超えるなら、平均が良く見えても、仮定したモデルと数量はそのリスク基準を満たしません。

二つの限界を明示する必要があります。順序の入れ替えは取引の独立を仮定しますが、相関したポジションを開く戦略や、直近成績で数量を変える戦略では成り立ちません。もう一つは、広く言いすぎられがちな点です。入れ替えは既発生の結果から抽出するため、観測分布の外の 個々の取引 は生成しません。ただし最大ドローダウンが制限されるわけではありません。むしろ、既存の損失を別順序で連続させ、観測値より大きなドローダウンを作り得ることが、このシミュレーションの狙いです。モンテカルロ法が調べるのは出来事の順序への感応度であり、個々の出来事の可能範囲ではありません。ドローダウン上限と取引停止の仕組みは、 ドローダウンとキルスイッチの記事で説明します。

指標を比較するために必要な定義。 プロフィットファクターは粗利益合計÷粗損失合計の絶対値で、無次元です。最大ドローダウンは残高か時価資産か、通貨額か%かを明示します。同じ取引列でも、種類により何倍も違うことがあります。期待値は一取引の通貨額かリスクR単位かを必ず示します。定義、履歴範囲、入出金の扱いを確認せず二つのツールの数値を比べるのは、別の量を比べることです。報告書の読み方と定義の違いは、 取引日誌と成績分析の記事で示します。

9. フォワードテスト、デモ、マーケットリプレイで何を確認できるか

フォワードテストは最終的な証拠と言われることがありますが、そうではありません。確認できるのは限定的で具体的な事柄です。

留保した過去区間でのフォワードテスト は、固定パラメータのルールが、最適化処理に見せていないデータで特定の成績を出したことを確認します。執行コストや別の相場局面での挙動は確認しません。

デモ口座でのリアルタイム・フォワードテスト は二つを加えます。端末の通常稼働で実装が正しく働くか、利用者が場当たり的な変更なくルールを適用できるかです。デモサーバーが再現しない範囲の執行コストは測れません。何を再現するかは一般論ではなく、該当ブローカーと口座種別の資料で決まります。確認するまでは、デモ成績は執行前提が未検証のシミュレーションを表します。

実資金口座で最小数量を使うフォワードテスト は、執行コストの測定を加えます。ただし第二節の留保通り、取引した数量に対する測定です。エクスポージャーを増やす判断はテスト手順ではなく、 リスク管理計画に属し、そもそも計画が許可している場合に限られます。

コスト前後の累積損益の仮のモデル。
コストの単位を統一し、スプレッドを二重計上しないでください。

マーケットリプレイ

リプレイでは、先を隠して過去を再生します。足を進め、判断し、その後で結果を見ます。裁量戦略なら、リアルタイムで待ったりルールをコード化したりせず、多くの反復を集められます。環境は注文パネルや統計を備えた専用シミュレーターと、チャート基盤内のモードに分かれます。後者も、もはや単なるチャート送りではありません。TradingViewは現在、独立したReplay Tradingモードについて「実際のブローカーと同じように、ポジションを開き、指値、逆指値、ストップリミット注文を置ける」と説明し、セッション結果を次のタブにまとめます。 概要, パフォーマンス, 取引分析, リスク/パフォーマンス比率 および 取引一覧。そのうち「パフォーマンスと取引一覧は、追加分析や記録用にエクスポートも可能」とされています(参考文献の5番、参照日22.08.2026)。

非標準チャートは、市場に存在しなかった価格で成績を計算する。 平均足、Renko、Kagi、Line Break、Point & Figureでルールをテストすると、エミュレーターの約定価格は市場価格ではありません。TradingViewの資料は「非標準チャートの価格水準は本質的に合成されたものなので、そこで計算するバックテスト結果は通常、実市場の条件を表さない」と明記しています(参考文献の15番、参照日22.08.2026)。平均足には回避策があり、戦略設定の 標準OHLCを使用 は、シグナルを合成データで計算し、注文は実価格で約定させます。他のチャート種別には回避策がありません。提供元は「決して」ではなく「通常はそうならない」と慎重に述べており、その留保を取り除くべきではありません。ただし実務判断は変わりません。自分の事例で合成価格と市場価格が一致したと示せるまでは、結果を金銭に換算できません。

リプレイで得られないもの。約定値はシミュレーター独自のルールで割り当てるため、実際の執行コストは得られません。セッションを単なる練習以上に扱う前に、そのルールを把握する必要があります。実損失のプレッシャーも得られません。固有の弱点は、気づかずにごまかしやすいことです。直前の判断を戻す、区間をやり直す、「今度は違って見えたのでもう一回」といった操作は、テストを物語に変えます。セッションをデータにするには、開始前の規則と、悪い判断も含む全判断の記録が必要です。

先の動きを隠し、判断を記録するチャートリプレイのモデル。
リプレイはルール適用を試すもので、実際の執行条件すべてを再現しません。
ティック出来高は市場の売買高ではない。 スポット為替に集中した売買高はないため、端末の出来高は特定配信内のレート変更回数です。提供元一社の活動の尺度であり、市場全体の売買高ではありません。この意味の出来高に基づくルールは、別ブローカーでは挙動が変わり、過去テストの記録も出所間で比較できません。

10. テストツール — 条件別の比較

全段階を完結できるツールはありません。以下は機能数ではなく、実際に選択を左右する条件で比較します。

選択条件別のテスト環境
ツールテスト対象データの出所IS / OOS分割コードの要否主な限界
MetaTrader 4 — ストラテジーテスター単一銘柄のMQL4自動売買三つのモデル方式: 始値のみ, コントロールポイント, 全ティック (参考文献の14番)日付範囲による手動分割必要(MQL4)足の中の動きは下位足データから計算し、ティック配信記録からは読まない。品質バーに使用時間足を表示
MetaTrader 5 — ストラテジーテスター複数銘柄にも対応するMQL5自動売買ブローカー収集ティックを含む五つの生成方式(参考文献の2番)内蔵(フォワード: 1/2, 1/3, 1/4, カスタム) (参考文献の2番)必要(MQL5)リアルティックの有無と深さはブローカー次第。欠落部には生成ティックを補う(参考文献の1番)。ウォークフォワードの窓は自動で移動しない
cTrader — cBotバックテストcTrader Algo環境の自動売買四つのモード: サーバーのティックデータ, サーバーのM1足, CSVファイルのM1足, サーバーのH1足 (参考文献の6番)日付範囲による手動分割必要手数料は取引百万単位当たりで設定。スプレッドは固定か指定範囲の無作為抽出。コストモデルは簡略化されているため、意識して設定する必要がある
TradingView — Pine戦略とReplay TradingPine Scriptのルールとチャートでの判断練習。ポジション記録とセッション結果の出力を含む(参考文献の5番)チャートで選択した提供元のデータ手動一部必要(戦略はPine、リプレイは不要)約定はエミュレーターが割り当て、過去とリアルタイムの挙動が異なる場合がある(参考文献の4番)。非標準チャートの約定価格は合成値で、通常は実市場を表さない(参考文献の15番)
専用リプレイシミュレーター判断を一つずつ行う裁量戦略ツール付属のデータパッケージ。確認した提供元一社の資料には可変スプレッドのティックデータとあるが、他社の範囲は別途確認が必要(参考文献の11番)手動不要可変スプレッドや手数料を設定できても、約定はエミュレーターが割り当てるため実際の執行コストは測れない。確認先の資料には約定ルール自体の説明もない(参考文献の11番)。区間をやり直して標本を汚しやすい
成績分析ツール(報告書取込)テスターや口座の完成済み報告書入力ファイルツール次第不要テスト自体は行わず、元データの誤りをすべて引き継ぐ
Python(バックテストライブラリ)任意のロジック、標本分割を全面管理任意。品質の責任も伴う任意の方式で完全管理必要方法論上の正しさはすべて利用者の責任 — 詳しくは、 取引におけるPythonの記事を参照
価格とプラン制限について。 ライセンス価格、無料プランの範囲、リプレイ機能の有無は、設計構造ではなく変動する製品条件であり、地域差もあります。そのため表には載せず、変更頻度も数えていないため数値を示しません。購入前に提供元の現行料金を確認し、下位時間足のリプレイや取引一覧の出力など、必要機能が選ぶプランに含まれるか確かめてください。テスト以外の取引プラットフォーム比較は、 MT4、MT5、cTraderの記事にあります。

選択は三つの問いに集約されます。ルールをコード化できるか。できなければテスターではなくリプレイ環境が必要です。リアルティックが必要か。足内の順序に依存するなら必要で、それが選択を決めます。標本分割方式を自分で管理したいか。そうなら、内蔵分割は意図的に単純なので、いずれ自作コードに行き着きます。

11. 再現手順と信頼性チェックリスト

再現できないテストは、数値で書いた意見です。以下は、半年後の自分や他の人が、全く同じ実行を再現するための最低限の項目です。復元できない項目があれば、飛ばさず限界として記載します。

テストの再現手順 — 必須項目。
1. ルールまたはコードの版と固定日。2. 全パラメータ。3. 銘柄と接尾辞を含むブローカー上の正確なシンボル。4. データの出所と取得方法。5. 日付範囲。6. データのタイムゾーンとサーバー時刻。7. 足の時刻表記規則。8. ティック生成方式。9. スプレッドモデル。10. 手数料率と徴収方法。11. 日をまたぐ場合のスワップ。12. 仮定するスリッページと執行遅延。13. ツールの待機注文約定ルール — 指値を約定済みとする時点、約定価格、ストップ注文での価格の飛びの扱い。14. 初期資金と口座通貨。15. ポジションサイズ規則。16. プラットフォームまたはテストライブラリの版。17. IS/OOS分割と境界日。18. 調べたパラメータ設定数。19. 報告書または出力ファイルの識別子。
検証手順:データ分割を調整より先に 1. ルールを固定 ルールとパラメータを テスト前に記録 2. データと分割 IS/OOS境界を 調整前に決定 3. テストと調整 調整はISだけで行う コストとデータを開示 4. アウトオブサンプル OOS、固定パラメータ 一度だけ確認 5. 安定性 パラメータの格子 突出点より台地 6. フォワード/デモ 調整期間の外で ルールを守れたか 7. エクスポージャー 最小限、任意 リスク計画が許す場合 リプレイ 裁量戦略の分岐 本手順の段階ではない 逸脱したらデータ分割に戻る データ分割とルール固定を調整より先に行います。逆ではありません。 リプレイは裁量戦略向けの独立した訓練分岐であり、フォワードテストの一部ではありません。
データ分割の原則に従う七段階です。テスト前にルール固定、調整前にIS/OOS境界決定、ISだけで調整、その後にOOS評価、パラメータ安定性、デモ口座のフォワードテスト、最後に任意の実口座最小エクスポージャー。リプレイはデータ段階から独立した破線の分岐に置きます。裁量戦略の訓練ツールであり、この手順の一段階でもフォワードテスト相当でもありません。戻り先は数量変更ではなくデータ分割です。

バックテストの信頼性チェックリスト

他人の結果にも自分の結果にも全く同じように問う十一項目です。「分からない」は否定の回答です。

  1. 銘柄、正確なシンボル、期間、データの出所が示されているか
  2. ティック生成方式が示され、戦略の時間軸に適合しているか
  3. 指値・逆指値をどの価格で約定させるか分かり、推測ではなくツール資料で確認したか
  4. スプレッド、手数料、スワップ、仮定したスリッページを含み、各単位を示しているか
  5. 口座で実測した平均スリッページ程度コストを増やしても成績が残るか
  6. 判断に使う全変数について、値が分かった時点を記録し、判断より後のものがないか。遅延エントリー試験はこの監査の補助であり、代替ではない
  7. IS/OOS分割と境界日が示されているか
  8. OOSを見たのはパラメータ固定後の一度だけか
  9. 調べたパラメータ設定数が示されているか
  10. 一点だけでなく、選んだパラメータの近傍でも成績が維持されるか
  11. 一般化する結論に対し、取引数と期間は複数の相場局面をカバーしているか

最悪の壊れ方は項目を一つ抜かすことではなく、結果を先に出し、後から正当化するという順序の逆転です。順序は好みでなく意味が成立する条件です。第七・第八項目は結果を見た後では誠実に決められません。事前にルールを書き、最適化前に境界日を決め、設定数をその都度記録するのは十五分程度です。それが検証と美しいグラフ探しを分けます。

手順を書いたら、次はテスターのクリック操作から、同じ処理を反復可能に実行し標本分割も管理するコードへ移すことがよくあります。そこから別記事のテーマである、 取引におけるPythonが始まります。環境の再現性は、テスト自体の再現性と同じほど重要です。

FAQ — 市場投入前の戦略テスト

デモ口座だけで戦略が利益を生むと判断できますか?
いいえ。心理ではなく仕組みの問題です。デモサーバーはブローカーが決めたルールで執行を模擬し、通常は実コストの一部を省略または簡略化します。ある提供元ではスリッページ、別の提供元では拒否や部分約定も対象です。その範囲は推測せず、該当口座の資料で確認します。例えばIGは自社デモの取引が「スリッページの対象にならず」、「数量や価格を理由に」拒否されないと明記しています(参考文献の16番、29.05.2026付の記事)。ただし一社の説明であり市場全体の規則ではありません。デモが答えるのは、実装が動くか、利用者がルールを適用できるかという別の問いです。デモモデルで省かれた執行コストは、実口座で注文を実際に執行して初めて観測できます。
結果に意味を持たせるには何取引必要ですか?
唯一の数値はなく、計算なしには示せません。必要標本は一取引の平均損益(m)と個別損益の標準偏差(s)の関係から求めます。平均の標準誤差はsをnの平方根で割った値なので、平均自体のk分の一未満にするには、nが(k × s/m)の二乗より大きい必要があります。第五節の例示分布では、+8.00 pipsの利益600回と−9.00 pipsの損失400回からm = 1.20 pips、s = 8.33 pipsとなり、k = 2ならnは(2 × 8.33 / 1.20)の二乗より大きく、約193取引です。分布を変えれば数値も変わり、まれな大勝と頻繁な小損の戦略ではsが増え、必要標本は二次的に増加します。この計算は取引の独立と分布の安定を仮定しますが、実務では両方とも成り立たないことがあります。閾値ではなく下限として扱ってください。数値では代替できない補助基準は、複数の相場局面を含むかどうかです。
ウォークフォワードは過剰適合をなくしますか?
なくすのではなく抑えます。各回で最適化処理に見せていないデータでの評価を強制しますが、枠組み自体は過剰適合し得ます。結果を見て窓の長さを選ぶ、うまくいくまで別の論理で全手順を繰り返す、検証区間を見て戦略を変える場合です。そのたびに、それまでの検証区間は独立性を失います。
バックテストがコストを含まないとは、具体的に何を意味しますか?
運用したいものとは別のシステムを表すということです。第五節の例示計算では、実行済みテスト由来の数値は一つもありませんが、同じ1,000取引がコストなしで+12,000 USD、スプレッド0.30 pips、手数料0.70 pips、スリッページ0.20 pipsを加えると0 USDです。決済日の切り替え前に閉じ、スワップはゼロと仮定しています。差を生むのは市場ではなくテスト前提です。一取引の平均粗損益が小さいほど、この作用は急になります。
マーケットリプレイは実資金口座のテストを代替できますか?
いいえ。リアルタイムで待たず多数の反復を集め、ルールをコード化せず裁量戦略を試せます。しかし約定はエミュレーター独自のルールで割り当てるため、執行コストは測れません。また判断を取り消せるので、規律がなければ標本は選別した断片の集まりになります。
リアルティックでバックテスト品質の問題は解決しますか?
改善するのは一つの側面です。実在する箇所では、足内の順序を推測せずに済みます。しかし生成がなくなるわけではありません。MetaTrader 5の資料は代替処理を明示し、「銘柄履歴に分足はあるが対応ティックがない場合、»全ティック«モードでティックを生成する」と説明しています(参考文献の1番、参照日22.08.2026)。ブローカーの保存データに穴があれば、一部区間は生成ティックで再現され、報告書には別の印が付きません。他の限界は解決しません。リアルティックは一社の配信記録であり、履歴の深さと収集方法に応じた品質を持ちます。自分の価格水準の流動性、拒否、接続遅延の情報はありません。執行コストモデルなしのリアルティックテストも、完全な執行を仮定したテストです。

出典と参考文献

  1. MetaQuotes — MetaTrader 5ヘルプ:リアルティックと生成ティック, metatrader5.com/en/terminal/help/algotrading/tick_generation (参照日22.08.2026)— ティック生成方式と、欠落したリアルティックを生成値で補う原則。「銘柄履歴に分足はあるが対応ティックがない場合、テスターは»全ティック«モードで生成する」
  2. MetaQuotes — MetaTrader 5ヘルプ:戦略テスト — 設定、フォワードテスト、遅延再現, metatrader5.com/en/terminal/help/algotrading/testing (参照日22.08.2026)— フォワード 設定の選択肢、 なし, 1/2, 1/3, 1/4, カスタム および「EAが待機注文を使う場合、遅延は発注のみに適用され、執行には適用されない」という原則
  3. MetaQuotes — MQL5リファレンス:取引戦略のテスト, mql5.com/en/docs/runtime/testing (参照日22.08.2026)—「テスト中、スプレッドはモデル化せず、過去データから取得する」
  4. TradingView — Pine Scriptユーザーマニュアル:リペイント, tradingview.com/pine-script-docs/concepts/repainting (参照日22.08.2026)
  5. TradingView — ヘルプセンター:過去データで取引を学ぶ(Replay Trading), tradingview.com/support/solutions/43000691889 (参照日22.08.2026)—「実際のブローカーと同じように、ポジションを開き、指値、逆指値、ストップリミット注文を置ける」。次の各タブ: 概要, パフォーマンス, 取引分析, リスク/パフォーマンス比率 および 取引一覧。「パフォーマンスと取引一覧は追加分析や記録用にエクスポートも可能」と説明
  6. Spotware — cTrader Algo:cBotのバックテスト, help.ctrader.com/ctrader-algo/documentation/cbots/backtest-a-cbot (参照日22.08.2026)— 四つのデータモード:「サーバーのティックデータ」「サーバーのM1足」「CSVファイルのM1足」「サーバーのH1足」。手数料は「取引百万単位当たりの料率」、スプレッドは「固定値」と「ランダム」
  7. Pardo, R. — 取引戦略の評価と最適化、Wiley、第2版、2008年 — ウォークフォワード、WFE、パラメータの台地、システム検証の方法論
  8. Bailey, D.H., Borwein, J.M., López de Prado, M., Zhu, Q.J. — バックテスト過剰適合の確率、Journal of Computational Finance、2017年 — 多重検定と、最良結果が探索の産物である確率
  9. Aronson, D.R. — 証拠に基づくテクニカル分析、Wiley、2007年 — データマイニング・バイアス、結果に基づく選択、統計的検証
  10. Tomasini, E., Jaekle, U. — 取引システム:システム開発とポートフォリオ最適化への新しいアプローチ、Harriman House、2009年 — ウォークフォワード、モンテカルロ法、ポートフォリオ単位のテスト
  11. Forex Tester Software — Forex Tester Online:サポートセンター, help.forextester.com (参照日22.08.2026)— 付属データの範囲:「ティックデータを提供し、それに基づいてローソク足を作成する」「毎分の価格変化データには始値、高値、安値、終値、出来高(取引活動)を含む。ティックデータは金融銘柄のすべての価格変化の詳細と変動スプレッドを提供する」。コスト設定:「Forex Tester Onlineは可変スプレッドと手数料での戦略テストに対応」。エミュレーターが約定価格を割り当てる規則は、この資料には説明がありません。以前の参照先、 forextester.com/documentationは404を返すため(確認日22.08.2026)、置き換えています
  12. Reserve Bank of Australia — 金融政策声明、2019年2月、囲みB:最近の円フラッシュイベント, rba.gov.au/publications/smp/2019/feb/box-b-the-recent-japanese-yen-flash-event.html (内容参照日22.08.2026)—「AEDT午前9:36、重要なニュースがない中、約30秒間で円が米ドルに対して3パーセント上昇」「bid-askスプレッドも約2 pipsから100–300 pipsへ大幅に拡大」「この時間帯、季節の市場流動性は低かった」
  13. MetaQuotes — MetaTrader 5ヘルプ:テストの特徴, metatrader5.com/en/terminal/help/algotrading/testing_features (参照日22.08.2026)— 注文の発動と執行 節の連続した二段落は、対象範囲が異なります。通貨市場に適用する第一段落:「非取引所銘柄では、すべての待機注文とSL/TPはBidとAskで発動し、発動時の現在の市場BidとAskで執行する」。取引所銘柄だけを扱う第二段落:「指値注文は指定価格で執行され(スリッページなし)、他の注文は現在の市場BidとAskで執行される(スリッページがあり得る)」。同ページの簡略モード説明:「»始値のみ«と»1分足OHLC«では、待機注文とSL、TPは注文の指定価格で執行される」
  14. MetaQuotes — MetaTrader 4ヘルプ:ストラテジーテスター — 設定, metatrader4.com/en/trading-platform/help/autotrading/tester/tester_parameters (参照日22.08.2026)— 始値のみ, コントロールポイント および 全ティック の各モード。最後の方式は「直近の下位時間足だけでなく、利用できるすべての近接時間足も生成に使う」。品質バーは使用時間足を示します
  15. TradingView — ヘルプセンター:非標準チャートで戦略の結果が非現実的になる, tradingview.com/support/solutions/43000481029 (参照日22.08.2026)—「非標準チャートの価格水準は本質的に合成されたものなので、そこで計算するバックテスト結果は通常、実市場の条件を表さない」
  16. IG — デモ口座と実口座はどう違うか, ig.com/uk/help-and-support/articles/687034 (記事日29.05.2026、参照日22.08.2026)— この提供元のデモ口座だけについての説明。「デモ取引はスリッページ、金利・配当調整、時間外の価格変動の対象にならない」「資金不足なら拒否され得るが、実口座と異なり、数量や価格を理由に拒否されることはない」

学習の進捗

このレッスンを終えたら、ご自身で完了にしてください。ページを開いたりスクロールしたりするだけでは完了になりません。

進捗の保存にはJavaScriptとブラウザのストレージが必要です。

このブラウザ内だけに保存されます。アカウント登録や端末間の同期はありません。サイトデータを削除すると進捗が消えることがあります。

Jarosław Wasiński (ヤロスワフ・ヴァシンスキ)

編集長、ForexMechanics.com • マクロ・FXアナリスト

金融市場で20年以上の経験を持つ独立系プロアナリスト。2007年からFX市場で活動し、ファンダメンタル分析・OTC市場構造・規律ある資本リスク管理を専門としています。

  • 2004年より信頼性の高い金融教育を提供するMyBank.plの創設者兼編集長。
  • 投資家・トレーダー向けに数百本の詳細な市場解説、構造分析、教育コンテンツを執筆。
  • 市場の透明性を支持し、具体的なデータと機関投資家レポート(BIS・ESMA・CFTC)に基づく教育を推進。

すべてのコンテンツは教育・情報提供のみを目的としており、投資アドバイスや推奨を構成するものではありません。レバレッジ取引(Forex/CFD)は急速な資本損失リスクを伴います。