順方向テスト(フォワードテスティング)の「実例」とは?
端的な答え
順方向テストの「実例」とは、ルール一式を使って、後から得られる(見ていない)データに対して評価する、完全に書き下ろされたシナリオのことです。重要な要件は、計算に使うすべての前提が明記されていることです。そうすることで、手順を独立して再現でき、計算の整合性(算術)を確認でき、結果が市場の変化に依存しているのか、あるいは自分が選んだ前提に依存しているのかを見極められます。
順方向テストが意味するもの(仕組み)
順方向テストは、設計やフィッティングに使ったデータの後に来る時間帯を用いて、取引アプローチを評価します。実務では、しばしば次のように比較します。
- バックテスト: 過去データでのパフォーマンス(しばしば選択肢を調整するために使われます)。
- 順方向テスト: チューニングに使われなかった、後の期間でのパフォーマンス。
「実例」には通常、次の入力が含まれます。
- ルール(意思決定ロジック): エントリーとエグジットのための、明確で検証可能な条件。
- タイムラインの分割: ルールを開発するために使う日付/時刻と、順方向テストに確保する日付/時刻。
- 順方向期間で使うデータ: 後の時間窓における価格/観測値。
- 執行モデルの前提: 注文がどのように約定すると仮定するか(例:特定の価格慣行を使う)。
- コスト: 手数料、スプレッド、その他の摩擦を、一定の方法でモデル化すること。
順方向テストは概念的には安定していますが、実際の執行は単純化した前提と異なるため、細部は変動します。
前提を明示した「実例」
以下は、簡略化した数値例です。実際の結果を予測する意図はなく、仕組みを示すものです。
セットアップ
- 目的: 同時に最大1つのポジションしか持たないルールを評価する。
- ルール(例): シグナルがあるときにロングポジションをエントリーし、2本分の保有時間が経過したら退出する。
- 順方向期間: 1〜5とラベル付けされた、連続する5本のバー。
前提(すべて明記)
- レバレッジ制約はモデル化しません(キャッシュのP&Lのみ)。
- ポジションサイズ: 取引ごとに $1,000 の名目相当。
- 契約価格慣行: 単一の「価格」系列のパーセンテージ変化を使って利益を計算する。
- エントリー/エグジット価格: エントリーもエグジットも、バーの提示されたクローズで約定すると仮定する。
- コスト: 取引あたり一律 $2(スプレッド/手数料を1つの数値としてカバーする)。
- シグナルのスケジュール: ルールは バー1 のみによって発動する。
順方向テストデータ(価格)
順方向期間の価格値は次のとおりだと仮定します。
- バー1のクローズ:100
- バー3のクローズ(退出、保有時間が2バーなので):104
- バー2、4、5のクローズは無関係(ルールは1回だけ発動するため)。
計算
- 取引回数: 1回(バー1で発動)。
- グロスリターン(パーセンテージ): (104 − 100) / 100 = 0.04 = 4%
- グロス利益: $1,000 の4% = $40
- コスト控除後のネット利益: $40 − $2 = $38
結果の記録
このシナリオの最小限の順方向テスト記録には、次が含まれるでしょう。
- 期間の日付(開発ウィンドウと順方向ウィンドウの分割)
- ルール定義
- バーから価格へのエントリー/エグジット対応
- ポジションサイズ
- コストの前提
- ネットP&Lと、あなたが計算したい任意のリスク指標(数式付き)
「実例」のポイントは、前提を受け入れるなら同じ算術を再実行できることです。
限界とよくある失敗パターン
順方向テストは、特定のリスク(すでにチューニングに使ったデータで評価してしまうこと)を減らしますが、信頼性を保証するものではありません。
主な限界と失敗パターンには次が含まれます。
- 前提の不一致: モデル上の「クローズでの約定」は、実際の執行と一致することは稀です。スリッページ、スプレッドの変化、レイテンシが結果を変え得ます。
- 市場レジームの変化: 順方向ウィンドウは、先行する期間とは異なるボラティリティや相関を反映している可能性があり、その場合結果が反転します。
- 繰り返しの試行による過学習: 順方向の結果を見た後にルールを何度も調整していると、実質的に順方向ウィンドウから情報が漏れます。
- コストへの感度: 想定コストがわずかに変わるだけで収益性が反転することがあります。特にエッジが小さいときです。
- 少数サンプル効果: 短い順方向期間や取引回数が少ないと結果がノイズっぽくなります。1回の取引が支配的になることもあります。
これらの問題のいずれも、順方向テスト「だけ」で解決することはできません。前提を慎重に定義し、一貫した検証が必要です。
順方向テストを独立に検証する方法
独立した検証とは、説明された入力から同じロジックと計算を再現できることを意味します。実務的なチェックリスト(ただし助言ではありません)は次のとおりです。
- タイムスプリットを確認する:開発データは順方向ウィンドウから除外されている必要があります。 2. ルールが曖昧でないことを確認する(何が発動し、何が退出するのか)。 3.
DOCUMENT END