バックテストとフォワードテストの違い — 同じEAで数字が変わる4つの理由

14 8月 2026, 01:17
Yuki Mizuno
0
3

EAを運用していれば、遅かれ早かれ誰もが同じ疑問にたどり着きます。ストラテジーテスターはある数字を示すのに、ライブ口座 — あるいはデモ口座でさえ — 別の数字を示す。同じプログラム、同じ設定、同じ銘柄なのに、なぜ結果が違うのか。

短い答えは、バックテストとライブ口座は同じ世界で動いていない、です。EAは同一でも、その周りにあるもの — 価格、コスト、時計 — は、見落としやすい形で食い違い得ます。その違いがどこから来るのかを知ってしまえば、このギャップは謎ではなくなり、測定して縮められる対象になります。

本記事では、私たちが自分たちのユーザー向けに文書化している4つのギャップ要因を順に見たうえで、フォワードテストが何を加えてくれるのか、何を教えてくれないのか、そして両者をフェアに比較する方法を説明します。

バックテストとは結局何なのか

バックテストはリプレイです。ストラテジーテスターは保存された価格履歴をEAに1ティックずつ流し込み、各注文をブローカーがどう処理したはずかをシミュレートします。出力は精密に見えます — 残高カーブ、プロフィットファクター、正確な価格つきの取引リスト。そしてその精密さこそが、バックテストを過信しやすくする張本人です。

レポートのすべての数字は、3つの入力に依存しています。保存された価格、シミュレートされた約定、想定されたコストです。どれかひとつを変えればレポートは変わります。少しだけのことも、まったく別物になることもあります。だからといってバックテストが無意味になるわけではありません。フォワードテストでは決して再現できない市場環境を戦略がどう乗り切るかを見る方法は、複数年のシミュレーション以外に存在しません。ただし、レポートの正直さは背後のデータの正直さまで、ということです。

実際のところ、同じEAのバックテストが公表値より悪く見えるとき、原因がEA自体であることはまれです。たいていは以下の4つのギャップのどれかです。私たちはその可能性が十分高いと考えて、4つすべてを自分たちのユーザー向けに事前に文書化しています。

ギャップ1: 価格履歴はどこまで深いか

標準的なブローカーのインストールに付いてくる履歴には、ふつう数年分の実ティックしか含まれていません。それより古い期間でもテスターはバーと約定を生成し続けますが、それは次第に粗いデータから組み立てられたものになり、レポートは「良いデータはここで終わり」とは警告してくれません。

これには見えにくい帰結があります。実ティックが直近3年分しかないなら、そのフィードでの「20年バックテスト」の実体は、3年のバックテストに17年分の近似が付いたものです。長期統計 — 最悪ドローダウン、連敗、過去の危機局面での振る舞い — は静かに意味を失っていきます。

これが最初に管理すべき項目です。私たちの公表テストが、約20年分のUSDJPYティックデータをカスタムシンボルとしてMetaTrader 5に取り込んで使っているのは、まさにデフォルトの履歴では長期の振る舞いについて結論を支えられなかったからです。どのデータソースを選ぶにせよ、自分の実ティックがどこから始まっているのかを確かめてください。その一点が、レポートのどこまでを真に受けてよいかを決めます。

ギャップ2: そのティックはどこから来たか

カバーされている期間の中でも、すべてのティックが等価なわけではありません。実ティックデータが欠けている区間では、テスターは1分足から擬似ティックを生成します。生成された系列はもっともらしい価格を通りますが、それは市場が実際に取引した系列ではありません。

数日ポジションを持つ戦略なら、影響は小さめです。しかしバー内の動きに反応するもの — ブレイクアウト、タイトなストップ、短期の決済 — では、実ティックと擬似ティックの差はそのまま約定に現れます。実際のスパイクに触れた注文が、生成データでは一度も発火しないことも、その逆もあります。

テスターは「履歴品質」のパーセンテージを報告しますが、この数字はもっと注目されるべきです。私たちの公表テストは「リアルティックに基づいたすべてのティック」モード・履歴品質98%で実行しており、この数字を明示しているのは、約定の信頼性はそれを生んだティックの信頼性まででしかないからです。自分のテストの品質値がずっと低いなら、その取引リストが語っているのは市場の物語ではなく、補間の物語です。

ギャップ3: シミュレーションの中で取引はいくらかかるか

コストは最も地味な入力であり、ライブ口座がシミュレーションに劣後する最もありふれた理由のひとつです。生スプレッド・手数料なしのバックテストはベストケースのシナリオです。実際の口座は、取引の瞬間に存在したスプレッドに加えて手数料を払い、ときにスリッページも被ります。

対策は複雑ではありません。現実的な総コストをテストに組み込み、それを明示することです。私たちの公表しているUSDJPYの結果では、スプレッド+手数料で約0.7pipsの総取引コストを想定しています。あなたのブローカーでの正確な数字は違うでしょう。重要なのは、想定が存在すること、明示されていること、そして実際に運用するつもりの口座とおおよそ一致していることです。

持っておく価値のある習慣をひとつ。2つのバックテストを比較するときは、利益を比較する前にコスト想定を比較してください。正直なコストを生き残る戦略は、決して受け取れないスプレッドで勝っている戦略よりも希少で、はるかに興味深いものです。

ギャップ4: タイムゾーンの罠

これは経験者でも引っかかります。セッションにロジックが依存するEA — 東京の朝、ロンドンオープン、ニューヨーククローズ — は、ブローカーのサーバー時計を通して時間を解釈します。一方、価格履歴は自前のタイムゾーンを持っており、データソースによってバーの時刻の刻み方は異なります。

EAが想定するサーバータイムゾーンとデータのタイムゾーンが食い違うと、すべてのセッション窓がずれます。ロジックは動き続け、注文も出て、レポートは正常に見えます。何もクラッシュしません。ただ、テストの全期間にわたって、間違った時間帯を取引しているだけです。

この罠には2層目があります。EAはライブ取引ではブローカーの時計を読んで、タイムゾーンが想定と合わないときに警告を出せます — 私たちのEAはまさにそうしています。しかしストラテジーテスターでは、テスター自身が時計そのものなので、この警告は表示されません。私たちはドキュメントでこの点を明示しています。このチェックが守るのはライブ口座であり、バックテストはあなた自身の責任範囲に残る、と。

道具のいらない簡単な確認方法があります。テストに使うデータの日足チャートを開いてください。ニューヨーククローズ型のフィードなら日足は週5本です。6本あったり、月曜のバーが中途半端な時刻に始まっていたりするなら、そのタイムゾーンはセッション型EAの想定と違います。

ギャップはパイプラインのどこに入り込むか

下の図は2つの経路を並べたものです。各ギャップ要因は特定の場所に座っています — これは朗報です。ひとつずつ個別に確認できるということだからです。

右側の経路を頭に置いて、左側のレポートを読んでください。右側にあって左側に対応物のない矢印はすべて、ライブの結果がシミュレーションから逸れていき得る場所です。

フォワードテストが実際に測っているもの

フォワードテスト — EAをデモ口座や小さなライブ口座でリアルタイムに走らせること — は、しばしば「本物の」テストと呼ばれます。それは半分だけ正しい表現です。フォワードテストが本当に測っているのは執行です。トレーディングのうち、どんなシミュレーションも完全には再現できない部分です。

執行品質は具体的で、測定可能です。私たちが自分のシステムをフォワードテストに移したとき、各成行注文を記録し、要求価格と約定価格を比較しました。最初の成行8件では、不利側の最大スリッページは0.1pips、平均的な約定はむしろ有利側でした。8件は小さなサンプルです — その点は率直に言いますし、これを根拠に統計的な主張を組み立てるつもりはありません。それでも小さなサンプルは、テスターには答えられない問いに答えてくれます。このブローカーは、この時間帯に、この戦略を、期待に近い価格で約定させるのか?

この「時間帯」という細部は、見かけ以上に重要です。上記の測定値は東京セッションのもので、USDJPYの流動性が厚く、スプレッドが安定している時間帯です。静かな時間帯を取引する戦略は、副作用として良い執行を受け継ぎます。ニューススパイクを取引する戦略はその逆を受け継ぎます。自分がどちら側にいるのかを知る方法が、フォワードテストです。

フォワードテストはまた、シミュレーションが決して見せてくれない地味な故障も捕まえます。注文拒否、リクオート、接続断、最悪のタイミングでのVPS再起動。どれもテスターのレポートには現れませんが、どれもライブの1か月を支配し得ます。

フォワードテストが教えてくれないこと

ここに居心地の悪い対称性があります。フォワードテストはバックテストの弱点を全部解決し、強みをひとつも受け継ぎません。

20年をカバーするバックテストには、金融危機も、金利サイクルも、パニック的な急変も、長い退屈なレンジも含まれています。フォワードテストがカバーするのは、あなたが走らせてきたまさにその数週間だけです。その数週間が穏やかなら、嵐については何も学べません。そして週に数回しか取引しない戦略なら、取引数が何らかの結論を支えるまでに数か月かかることもあります。

「フォワードテストは利益が出ている」と「フォワードテストは短い」はたいてい両方とも真であり、だからどちらか単独ではこの問題に決着がつかないのです。私たち自身の資料では、システムの現在地をあるがままに記述しています。20年のシミュレーション、ライブ環境での執行測定、そして構築中のライブ実績。数週間のフォワード結果が19年のシミュレーション履歴に勝ると装うのは、その逆と同じくらいミスリーディングでしょう。

2つのテストは別の問いに答えています。バックテストの問いは「このロジックは長年の市場環境を通じてエッジを持っていたか」。フォワードテストの問いは「現実世界は、シミュレーションが仮定した通りにこのロジックを執行するか」。戦略には両方のイエスが必要です。

両者をフェアに比較する

EAを検証したいなら — 自作でも、評価中の他人のものでも — 比較が意味を持つのは環境が揃っているときだけです。実務的には、短いルーチンに落ちます。

まずデータから。自分のテストに実ティックが何年分含まれているのかを確かめ、実行後にテスターの履歴品質値を確認します。次にコストを揃えます — これまで見た中で一番良い数字ではなく、実際に使うつもりの口座に似たスプレッドと手数料を。その次に時計の確認です。チャート上で日足が週5本であること、セッション時刻がEAのドキュメントの言う位置に来ていること。そこまで済んでから、フォワード比較に進みます。そして利益ではなく挙動を比較してください。最初の数週間の問いは「儲かったか」ではなく、「エントリー、決済、約定価格は、同じ日々についてシミュレーションが予測したものに近いか」です。

取引単位の比較が揃っているなら、残る差はたいてい執行であり、それは私たちがスリッページログでやったのと同じやり方で直接測定できます。揃っていないなら、原因はほぼ確実に4つのギャップのどれかです — そして今のあなたは、どこを見ればいいかを知っています。

おわりに

バックテストとフォワードテストは、対立する判定ではありません。片方は不完全なデータを通して何年分もの市場環境を見ており、もう片方は短い時間窓を通して本物の執行を見ています。4つのギャップ — 履歴の深さ、ティック品質、コスト、サーバーの時計 — がテスターのレポートと口座明細の差の大半を説明し、そのどれもが、数字を信じる前に個別に確認できます。

Origin-U Projectは、日本を拠点とする独立系のクオンツFXリサーチプロジェクトです。本記事で解説した考え方は、Origin-U Projectが開発した商用USDJPYポートフォリオEA「BUSHIDO」に実装されています — 上で述べたライブのタイムゾーンチェックと執行測定も含めて。

Origin-U リサーチノート — 全10回 第7回

← 前の記事: 堅牢なFX戦略の条件 — チャートではなく、プロセスを見る  |  次の記事: トレードのアイデアを実装前にどう評価するか — 86本の仮説を検証した手順

English version: The Difference Between Backtesting and Forward Testing

シリーズ全10回

  1. USDJPY向けマルチストラテジー・ポートフォリオEAの作り方 — 86本の仮説検証が教えてくれたこと
  2. アルゴリズムトレードで分散が重要になる本当の理由
  3. 利益よりも先にリスク管理 — トレーディングシステムは「負ける側」から設計する
  4. 私たちがマーチンゲールとグリッドを使わないと決めた理由 — 検証の記録
  5. モンテカルロ・シミュレーションでトレーディングシステムを評価する
  6. 堅牢なFX戦略の条件 — チャートではなく、プロセスを見る
  7. バックテストとフォワードテストの違い — 同じEAで数字が変わる4つの理由
  8. トレードのアイデアを実装前にどう評価するか — 86本の仮説を検証した手順
  9. 低ドローダウンのトレーディングシステム設計 — ドローダウンは「結果」ではなく「入力」である
  10. 長期USDJPYリサーチから学んだこと — 20年分のティックデータが教えてくれたもの