ダイバージェンス・リバーサルはどのように検証できますか?
直接の答え
ダイバージェンス・リバーサルは、その考えを反証可能な仮説に落とし込み、ダイバージェンス発生後に一貫した「リバーサルのような」結果が起きるかを測定し、観測された優位性が選択バイアス、コスト、執行(エクセキューション)効果、あるいは市場レジームの変化によって説明できないことを確認することで検証できます。ここではリアルタイムデータは不要なので、検証アプローチは、明確に定義された過去のイベント定義、明示的な前提、再現可能な評価手順に依拠すべきです。
実践的なテストには5つの要素があります:(1) ダイバージェンス・リバーサルのメカニズムを運用上の用語で定義する、(2) ダイバージェンス条件がない場合に起きることを表すベースラインを選ぶ、(3) 先読みバイアスを防ぐデータ分割を指定する、(4) すべての計算に現実的な取引コストとトレーディング上の摩擦を含める、(5) 頑健性チェックと失敗モード分析を行う、です。
メカニズムと定義
コード化でき、独立検証が可能なほど精密な定義から始めてください。「ダイバージェンス・リバーサル」は一般に、価格アクションとインジケータが逆方向に動く状況(ダイバージェンス)を指し、その後価格が元に戻る(リバーサル)ことが期待されます。これをテストするには、次の2つの運用上の要素が必要です。
- イベント定義(「ダイバージェンス」のトリガー)。
- 使用する価格系列(例:終値同士の変化)と時間軸を指定する。
- インジケータとダイバージェンスのルールを指定する。例えば:「一定のローックバック期間において、インジケータはより安値を作るが、価格はより高い安値を作る」。すべてのパラメータを明記する(ウィンドウ長、高値または安値を使うか、等しい値をどう扱うか)。
- 「イベントのタイムスタンプ」を決める(例:ダイバージェンス条件が真になるバーの終値時点)。
- アウトカム定義(「リバーサル」の測定)。
- 市場データと同じ単位系で「リバーサル」が何を意味するかを定義する。例:次のN本バーにおけるリターン、次の値動きの符号、最大逆行(最大の不利な変動)と最大順行(最大の有利な変動)、あるいは価格がある閾値を超えるかどうか。
- 評価ホライズンNを決める。Nが結果を見た後に選ばれる場合、それを変数として扱い、アウト・オブ・サンプルのチェックで検証する。
重要な分離は、安定したメカニクスと変動する条件の間にあります。安定したメカニクスとは、イベントルールとアウトカム測定です。変動する条件とは、市場状態、ボラティリティ、スプレッド、手数料水準、流動性、そして執行の質です。あなたのテストでは、これらの変動要因に対して結果がどれほど敏感かを定量化しなければなりません。
エビデンスと例:テスト設計
以下は、ダイバージェンス・リバーサルに測定可能な傾向があるかどうかを、過去データで評価するために適用できる非助言的な設計図です。
1) 検証可能な仮説を述べる
例の仮説(一般的な表現):「ルールRによって定義されたダイバージェンス・イベントの後、次のホライズンにおける平均の価格変化は、同等の文脈を持つ全時点から計算したベースライン期待値よりも有利である。」
隠れた前提を避けるために、次を書き出してください:
- ダイバージェンス・ルールRの正確な内容。
- アウトカム指標(例:平均フォワード・リターン、またはある閾値を超える確率)。
- ホライズンと任意の閾値。
- 推定した取引コストの後のリターンを測るのか、あるいは生のリターンを測るのか。
2) ベースラインを選ぶ
ベースラインとは、比較対象です。一般的なベースラインの選択肢には次があります:
- ノン・ダイバージェンスのベースライン: ダイバージェンス条件が起きない時点で、同じアウトカム指標を評価する。
- カレンダー/時間ベースのベースライン: 該当する場合、時刻(time-of-day)、曜日(day-of-week)などのカレンダー属性によりランダムな時点をマッチさせて比較する。
- 文脈マッチのベースライン: ボラティリティ・レジーム(過去のボラティリティの代理指標を用いる)でイベントをグループ化し、同じレジーム内でダイバージェンス・イベントをノン・ダイバージェンス時点と比較する。
目的は、ダイバージェンス・イベントが特定の市場状態で単により頻繁に起きているだけなのに、「ダイバージェンスがリバーサルを引き起こした」と結論づけてしまうことを防ぐことです。
3) データ分割とリーク防止
ルールが実際に使われる状況を反映する分割を使ってください。典型的なアプローチ:
- トレーニング期間: 設計とパラメータ選定。
- バリデーション期間: テスト期間に触れずにパラメータを調整する。
- テスト期間: 最終評価のみ。
リアルタイムデータがなくても、時間順の分割を使うべきです。未来のイベントが、より早い時点で評価に使われるダイバージェンス・ルールのパラメータに影響を与えることを決して許してはいけません。これは、結果が過大に見える最も一般的な原因です。
4) コストと摩擦のモデリング(公平性のために必須)
ダイバージェンス・ルールはコストの前では利益に見え、コストの後では消えることがあるため、すべての評価にコストを含めてください。コストには次が含まれ得ます:
- 1取引あたりのスプレッド、または想定されるビッド・アスクの影響。
- 手数料やフィーの仮定(それらがある場合)。
- スリッページ(特にボラティリティが高い局面での追加ペナルティ)。
仮定の例:コストモデルが往復(ラウンドトリップ)あたりの固定ペナルティを使うなら、それを明記し、もっともらしいペナルティの範囲を試して感度をテストしてください。現実的なコスト入力がない場合は、想定したコスト・バッファの前後の両方で結果を報告し、結論を不確実なものとして扱ってください。
5) 頑健性チェック
単一のパラメータ設定で止めないでください。最低限の頑健性チェックには次が含まれます:
- ウォークフォワードの頑健性: 複数のローリングしたテストウィンドウにわたって評価を繰り返す。
- パラメータの安定性: 近いウィンドウ長やダイバージェンス定義を複数テストする。
- 指標の頑健性: 効果が異なるアウトカム指標(例:平均リターンと勝率)にまたがって成り立つことを検証する。ある指標での見かけの改善が、別の指標での損失を隠すことがあるためです。
6) 重大な限界と失敗モード分析
失敗モードを能動的に探さなければなりません。少なくとも1つの重大な限界をテストし、説明してください。例えば:
- レジーム依存: ダイバージェンス・リバーサルは平均回帰的な条件では機能するかもしれないが、トレンド中では失敗する。
- インジケータのアーティファクト: ノイズの多いデータでは、一部のインジケータがより頻繁にダイバージェンスを作り、「イベント頻度」を押し上げる一方で予測力は改善しないことがある。
- 閾値への感度: 定義をわずかに変えるだけで、イベント集合が大きく変わる可能性がある。
- 過学習: 過去データでの成績を最大化するようにパラメータを選ぶと、アウト・オブ・サンプルで誤解を招く結果になることがある。
これらのストレス下で結果がどう変わるかを文書化してください。定義を少し変えただけで効果が消えるなら、バックテストが強く見えていても主張は弱いです。
限界と、あなたが独立に検証できること
ダイバージェンス・リバーサルのテストは原理的には簡単ですが、結論は不確実性によって制限されます。主な限界:
- 歴史的な関係は将来の結果を保証しない。 過去にダイバージェンス・リバーサルのパターンが存在していたとしても、市場のミクロ構造や振る舞いは変わり得ます。
- アウトカムは市場状況と実装の詳細で変わる。 結果はボラティリティ、流動性、執行タイミング、そしてコスト仮定の正確さに依存します。
- インジケータは保証ではない。 ダイバージェンスとリバーサルは記述的な概念です。運用上のルールと測定可能なアウトカムに翻訳されたときにのみ、テスト可能になります。