セッション・ブレイクアウトはどう検証できますか?
テストする前に概念を定義する
セッション・ブレイクアウトは、定義したマーケット・セッションの開始(または終了)後に、価格が意味のある動きを見せることが期待されるという取引コンセプトです。検証では、まずその概念を具体的で反復可能な定義に落とし込む必要があります。
- セッション・ウィンドウ:選択したタイムゾーンにおける正確な開始/終了時刻。
- 参照レベル:セッションの「事前」期間において測定する対象(例:高値/安値レンジ、オープン価格、あるいは過去のレンジ)。
- ブレイクアウト・ルール:ブレイクアウトを示す条件(例:価格があるレベルをクロスし、その後もその状態を維持すること)。
- 評価ウィンドウ:ブレイクアウト・シグナル後に結果をどう測るか(例:固定ホライズンのバー、またはストップ/ターゲットのイベントが起きるまで)。
2人の独立した人が、同じ過去データから同じ「シグナル」を計算できるほど定義が正確でない限り、テストは意味を持ちません。
仮説を立て、ベースラインを選ぶ
検証の良い方法は、ブレイクアウトのメカニズムと無関係な要因を切り分ける仮説を明確にすることです。
仮説の例(構造)
仮説は、次のようにルールの下での期待される挙動として表現できます。
- 事前セッション・ウィンドウから定義したレベルを価格がブレイクした場合、平均の 方向性のある値動き(固定ホライズンで測定)が、同等の非ブレイクアウト条件のときよりも大きい。
交絡要因を制御するベースラインを作る
市場には時間帯によって変わるボラティリティのパターンがあります。そのため、セッションの時間構造は一致させつつ、ブレイクアウト依存を取り除くベースラインが必要です。ベースラインの選択肢(概念的に説明)は以下のとおりです。
- ノー・ブレイクアウト・ベースライン:ブレイクアウト・イベントだけを選別せずに、同じポスト・セッション・ウィンドウを評価する。
- ランダム化したレベル・ベースライン:セッションのタイミングは維持しつつ、参照レベルがどれかをランダム化する。これにより、「クロス」の条件が元のルールと結びつかないようにする。
- シャッフルした対応(マッピング)ベースライン:ブレイクアウト時刻の分布は保持しつつ、アウトカムをシャッフルして、ルールと値動きの間の体系的な関連が断たれるようにする。
ブレイクアウト・ルールが適切なベースラインに勝てない場合、その効果はブレイクアウト固有の優位性ではなく、一般的な日中のボラティリティによって説明できる可能性があります。
前提、コスト、テストの単位を指定する
検証は明示的な前提に基づいて行う必要があります。前提を省略すると、結果は独立して検証できません。
宣言すべき中核となる前提
- 時間の整合:ティック/バーをセッション境界にどう対応づけるか。
- 使用する価格:バーのオープン、高値/安値、クローズ、または約定の代理となる指標を使うか。
- 執行モデル:約定が次のバーのオープンで起きるのか、クロスした価格で起きるのか、あるいは保守的なスリッページ仮定を置くのか。
- コスト:スプレッド、コミッション、その他の摩擦要因で、1回の取引あたりの一般的なコストとして含めるもの。
実際の取引には摩擦と執行の不確実性があるため、コストは単一の数値ではなくレンジとして扱うべきです。たとえば、あり得る変動を反映する低/中/高コストの仮定のもとで同じロジックを実行してください。
テストの単位
「ケース」が何を指すかを決めます。
- 各ブレイクアウト・イベント、
- ブレイクアウトが起きた各日、
- あるいはブレイクアウトが起きるかどうかに関わらず、各セッション・ウィンドウ。
これらの選択は解釈を変えます。イベントベースの評価は「ブレイクアウトの後に何が起きるか?」に答えます。日次の評価は「セッションが条件を生み出す頻度はどれくらいで、ネットの効果はどうか?」に答えます。どちらも有効になり得ますが、混ぜてしまっても黙って解釈してはいけません。
データを分割し、リークを防ぐ
過学習は、時間ベースの戦略における重大な失敗パターンです。ルールのパラメータに、市場固有のパターンをうっかり織り込んでしまうことがあります。
時間で分割する
シンプルな方法は次のとおりです。
- トレーニング(インサンプル):ルールのパラメータを選び、計算を検証する。
- バリデーション:必要ならパラメータを調整する。
- テスト(アウト・オブ・サンプル):追加のパラメータ変更なしで1回実行する。
過去期間が1つしかない場合は、ローリング・ウィンドウを使えます。つまり、より前の時間ブロックで学習し、次のブロックで検証し、さらに後のブロックでテストします。
先読み(ルックアヘッド)に注意する
よくあるリークのリスクには次のようなものがあります。
- セッション・ウィンドウの後に得られる情報を使って参照レベルを定義してしまう、
- ブレイクアウト判断の時点を超えるデータを使って参照レベルを計算してしまう、
- テスト成績を見ながらパラメータを選んでしまう。
有用な規律として、ブレイクアウト・ルールが評価される瞬間に、その時点で知られていたはずのデータだけで、すべての参照レベルを計算するようにしてください。
複数のチェックで頑健性を測る
ある期間でルールが有望に見えても、別のレジームでは失敗するかもしれません。頑健性チェックは、その挙動が一般化するかどうかを答えるのに役立ちます。
1) レジームの変化
時間ベースのパーティションを使って、同じルールを異なる市場状況でテストします。たとえば:
- 高ボラティリティ vs 低ボラティリティの期間(独立に計算したボラティリティ指標で定義)、
- トレンド vs レンジの期間(独立に計算したトレンド指標で定義)。
パフォーマンスが1つのレジームでしか見られないなら、仮説は弱くなります。
2) パラメータ感度
結果が崩れるかどうかを見るために、主要なパラメータを少しずつ変えます。
- セッション・ウィンドウの境界、
- 参照レンジの定義、
- ブレイクアウトの閾値挙動(例:クローズを要求するのか、インターバーのクロスを要求するのか)、
- 評価ホライズン。
頑健なコンセプトは、極端に薄いパラメータ設定に依存すべきではありません。
3) 別の執行仮定
保守的な約定を含む複数の執行モデルのもとで評価を実行します。多くのブレイクアウト・テストは、ブレイクアウトの瞬間に理想的な約定が得られると仮定して、結果を過大評価してしまいます。
4) ベースラインとの統計的比較
生の平均だけに頼るのではなく、適切な統計要約(たとえば、不確実性推定付きの平均差、リターンの分布)を用いて、ルールのアウトカムをベースラインのアウトカムと比較してください。また、アウトカムが不利になるケースの割合も確認します。
少なくとも1つは重要な制限または失敗モードを含める
テストは、ブレイクアウトのロジックがどこで破綻し得るかを認める必要があります。
よくある失敗モード
- ボラティリティ・レジームの不一致:ブレイクアウトは頻繁に起きるかもしれませんが、ボラティリティのダイナミクスが変わるとフォロー・スルーが一貫しない可能性があります。
- コストとスリッページへの感度:小さな期待値の動きは摩擦で相殺され得ます。テストには、コスト仮定をレンジとして現実的に含めるべきです。
- セッション定義の誤り:タイムゾーンのミスや、セッション・ウィンドウの不整合は、参照レベルを無効にします。
- 執行タイミングの曖昧さ:ブレイクアウトがインターバーで測定されるのか、バーのクローズで測定されるのかによって、カウントされる「イベント」が変わります。
よく書かれたテスト報告書では、あなたのセットアップで最も起こりそうな制限がどれかを明記すべきです。
検証と次の質問
結果を独立して検証可能にするために、「計算チェックリスト」を文書化します。
- セッション・ウィンドウの正確な定義とタイムゾーン。
- 参照レベルのルールと、それが使うバー/ティック。
- ブレイクアウト検出ロジック(クロスかクローズか、そして持続条件があるかどうか)。
- 評価ウィンドウと、アウトカムの測定方法。
- 執行とコストの仮定(およびテストしたレンジ)。
- 時間分割の方法と、リークをどう防いだか。
- 使用したベースライン(複数可)と、実施した比較。
DOCUMENT END