トリプルバリア法による金融イベントのラベリング
ボラティリティに応じた価格水準と保有期限からイベントのラベルを決める方法、初回到達の例、記録すべきデータと検証上の注意を解説します。
このガイドの内容ラベルを価格経路で決める理由
短い要約
トリプルバリア法では、各イベントに上側の価格バリア、下側の価格バリア、時間の上限となる垂直バリアを設定します。この記事の規約では、上側に先に到達すれば +1、下側なら −1、どちらの価格バリアにも先に触れず期限を迎えた場合のみ 0 です。ボラティリティの尺度はイベント開始時点で確定し、その後の価格経路はラベルの作成に使います。特徴量には使いません。
ラベルを価格経路で決める理由
固定期間のラベルは、途中で利益または損失のしきい値に達していても、あらかじめ決めた本数後の結果だけを見ます。トリプルバリア法では、代わりに三つの終了条件を置きます。イベント開始から見て、どの境界に最初に到達したかを問う方法です。
この考え方は『*Advances in Financial Machine Learning*』第3章で説明されています。mlfinpy のラベリング資料では、動的なしきい値とメタラベリングも扱っています。これは教師あり学習の目的変数を設計する方法であり、それ自体が売買ルールや利益の保証になるわけではありません。
イベント開始時にイベントと尺度を決める
イベント i の開始時刻を tᵢ、開始価格を P₀ とし、σᵢ をその時点までに利用できる情報だけで推定した目標ボラティリティとします。σᵢ がリターンの割合で表されるなら、ロング方向の上側価格は P₀(1 + m_PTσᵢ)、下側価格は P₀(1 − m_SLσᵢ) です。m_PT と m_SL は別々に指定できるため、二つのバリアの距離は対称でなくても構いません。
さらに、最大保有時間または何本先のバーまで見るかを垂直バリアとして決めます。tᵢ より後の各バーで二つの水平バリアに触れたかを確認し、どちらにも触れなければ垂直バリアまで進みます。σᵢ はイベント開始時の値に固定します。将来のボラティリティで尺度を再計算すると、予測時に分からない情報で目的変数を変えることになります。
イベントのトリガーとラベルは別のものです。CUSUM のようなフィルターはイベントを開始する時点を選べますが、結果を +1、−1、0 のどれにするかは決めません。開始時刻 tᵢ が定まった後、トリプルバリア法が将来の価格経路を初回到達または期限まで追います。mlfinpy の資料でも、CUSUM などで選ばれるイベント時刻、ボラティリティ目標、垂直バリア時刻は別々に扱われています。
ラベルの規約と数値例
この記事で使う三クラスの規約では、上側バリアへの初回到達が +1、下側が −1、垂直バリアが 0 です。ただし、0 は水平バリアに先に触れていない場合に限ります。一部の実装は期限到達時の終端リターンの符号でラベルを決めます。したがって、数値の意味を実装に任せず、研究とデータセットで採用する規約を明記してください。mlfinpy のラベリングコードには、初回到達の処理と垂直バリア用の別ロジックがあります。
簡単な例を考えます。P₀ = $100、σᵢ = 2% とします。利益側の倍率 m_PT = 2 なら上側は $104、損失側の倍率 m_SL = 1.5 なら下側は $97 です。垂直バリアは三つ目の将来バーに置きます。
- $100 → $104.50 は最初の未来バーで上側に触れるため、ラベルは +1 です。
- $100 → $96.50 は最初の未来バーで下側に触れるため、ラベルは −1 です。
- $100 → $101 → $102 → $101.50 は $104 にも $97 にも触れず三つ目のバーで期限を迎えます。この規約では、終端リターンが +1.5% でもラベルは 0 です。
最後の経路は、初回到達に基づくラベルが固定期間後のリターンの符号と同じとは限らないことを示しています。別の定義を選ぶこともできますが、クラスと意味を明示する必要があります。
特徴量と将来の結果を分ける
各特徴量行 Xᵢ は、σᵢ の推定を含め、tᵢ 時点で利用できた情報だけを使います。tᵢ から終了時点までの価格経路は yᵢ を作るために必要ですが、イベント開始時から既知だったかのように特徴量、正規化、しきい値選択へ混ぜてはいけません。
メタラベリングでは、一次モデルがロングかショートかというポジションの方向を選びます。二次モデルはその方向を前提にシグナルを採用するか見送るかを学び、通常は方向を再予測せず二値のラベルを出します。メタラベリングでも、特徴量に利用できるのはイベント開始時点の情報です。

価格データとコストで目的変数の意味が変わる
終値だけではバー内でバリアに触れたか分かりません。同じ OHLC バーの高値と安値が上下両方のバリアを越えている場合、そのバーだけでは到達順を復元できません。より細かい価格データを使うか、あらかじめ一貫した保守的ルールを定めてください。たとえば不利な側に先に触れたと扱う方法があります。結果を見てから順序を選ぶのは避けます。
ラベルでネット損益を表したい場合は、手数料、スプレッド、スリッページ、市場インパクト、必要に応じて資金調達費用や借株料を含めます。価格水準に触れたことは、その価格で約定する保証ではありません。ギャップでストップを飛び越えることもあり、実際の約定価格は異なります。ラベルが価格経路のグロス値か、具体的な執行条件を仮定したネット損益かを記録してください。
重複するイベントには適切な検証が必要
近い時刻に始まったイベントは、共通する将来価格を使うことがあります。一方のラベルを学習データに、同じ結果に依存する別のラベルをテストデータに入れると、独立していない目的変数のためにスコアが高く見えることがあります。各ラベルの開始時刻と解決時刻を保存し、テストの結果期間と重なる学習サンプルを除く purged 検証を使います。金融時系列の purged cross-validation と embargo の解説も参照してください。
価格データと粒度、特徴量の利用可能時刻、σᵢ の推定方法、倍率、垂直バリア、バー内の順序規則、期限切れラベルの規約を記録します。モデル評価の前に決めておきます。トリプルバリア法で目的変数を明確にしても、別の特徴量リーク、戦略の繰り返し選択、非現実的な約定仮定、市場環境の変化までは解決しません。
よくある質問
Q1σ はバーごとに再計算できますか?
イベント開始時に使える情報で σᵢ を推定し、そのイベントのバリア幅を決める値として固定します。将来データで尺度を更新すると、最初の判断時点にはなかった情報が入り込む可能性があります。
Q2ラベル 0 は常にリターンゼロを意味しますか?
いいえ。この記事では、価格バリアに先に触れず期限に達したことを表します。そのときのリターンは正にも負にもなり得ます。終端リターンの符号を使う実装もあるため、採用した規約を確認して記録してください。
Q3トリプルバリア法で戦略の利益を証明できますか?
できません。価格経路から教師あり学習の目的変数を作る方法です。特徴量の妥当性、検証方法、コスト、約定、市場環境も結果を左右します。ラベルは利益の保証ではありません。
出典
問題を報告
この記事のリンクを含むメールを準備します。送信すると Mark に報告が届きます
クイックチェック
記事を読み終えたら、3問で確認しましょう
問題 01
この記事の規約でラベル 0 になるのはどの時点ですか?
答えを選ぶと解説を確認できます