売買方向の推定方法:Quoteルール、Tickテスト、Lee–Ready
Quoteルール、Tickテスト、Lee–Readyで流動性を取る側をどう推定するかを解説し、精度、時刻合わせ、データの限界を整理します。
このガイドの内容Buyとは流動性を取る側の買いを指す
短い要約
取引方向とは通常、流動性を取って約定を始めた側を指します。取引には必ず買い手と売り手の両方がいます。分類で「buy」「sell」と表示するのは、どちら側がアグレッサーだったかという推定であり、参加者の身元、動機、最終的なポジションではありません。Tick、Quote、Lee–Readyは価格や気配から方向を推定するため、誤分類や判定不能な取引も生じます。
Buyとは流動性を取る側の買いを指す
注文板で約定が成立すると、片側が買い、もう片側が売ります。方向分類におけるbuyer-initiatedは、待機中の売り注文に対して買い注文がスプレッドを越えて約定したと推定されるケースです。seller-initiatedは、売り注文が待機中の買い注文にぶつかったケースです。つまり「buy trade」といっても売り手が取引にいないわけではなく、どちら側が流動性を取ったかを表します。
Time and Salesのデータには価格や数量があっても、そのまま使えるアグレッサー側の欄がない場合があります。分類ルールは、たとえば買い・売りの売買高を集計するために、利用可能なデータから推定ラベルを付けます。これは観測値そのものではなく推論です。Futuresの注文板とTime and Salesの違いを見ると、待機中の注文と成立済み取引の記録を区別できます。
Tickテストは取引価格の変化を見る
Tickテストは現在の取引価格を直前の取引価格と比べます。価格が上がればbuyer-initiated、下がればseller-initiatedと分類します。同じ価格で約定したzero tickは、最後に発生したゼロではない価格変化の方向を引き継ぎます。たとえば価格が一度上昇した後、同じ価格の取引が続けば、価格が反転するまではbuyラベルが続きます。
価格しか利用できないときに便利な規則ですが、価格自体から参加者の意図を読み取ることはできません。データがすでに進行中の時間帯から始まり、前のnonzero tickがない場合、同じ価格の最初の取引はunresolved(判定不能)として残すのが適切です。推測で買いか売りを決めると、誤差を追加します。また、取引の報告順が入れ替わっている場合や特殊な条件が付いている場合は、フィードの時間規則に従って直前の取引を決める必要があります。
Quoteルールは気配のmidpointと比べる
Quoteルールは約定時点のbidとaskを使います。midpointは最良bidと最良askの平均です。約定価格がmidpointより高ければbuyer-initiated、低ければseller-initiatedと推定します。価格がmidpointと一致する場合、このルールだけでは方向を決められません。実装によっては未分類にし、Lee–ReadyではTickテストで補います。
考え方は簡単ですが、取引に対応する気配を正しく選ぶ必要があります。Quoteがすでに更新されている、時刻精度が異なる、取引とは別のvenueを含む、といった状況があり得ます。また、spreadの内側の約定は曖昧です。spread内に待機する指値注文があると、約定価格がmidpoint近くでも、どちら側が流動性を取ったかは一目で分からない場合があります。midpointからの位置は手掛かりであって、spreadを越えた側の直接証拠ではありません。
Lee–ReadyはQuoteとTickを組み合わせる
Lee–Readyは約定価格を対応するQuoteのmidpointと比べます。midpointより上か下ならQuoteルールと同様に分類し、midpointならTickテストを使います。直近の価格変化が上昇ならbuyer-initiated、下落ならseller-initiatedです。先行するnonzero tickが利用できない場合はunresolvedのままでも構いません。価格がmidpointから離れているときはQuote、中心にあるときは価格履歴を使う組み合わせです。
もう一つの要素はQuoteの時刻調整です。LeeとReadyは1988年のNYSEデータを調べ、取引の直前に記録されたQuoteが、その取引によって生じた更新である場合を示しました。そこで取引時刻より少なくとも5秒前のQuoteも検討しました。この5秒は当時の市場と記録方式に基づく値であり、現在のすべての市場に適用する決まりではありません。LeeとReadyの原著はQuoteと取引の対応付け、Tickテストを説明しています。
同じ価格例でもルールによってラベルが異なる
最良bidが100.00、askが100.04なら、midpointは100.02です。直前の約定価格を100.00とします。次の価格100.01は1セント上昇しているため、Tickテストではbuyです。しかしmidpointの100.02より低いので、Quoteルールではsell、Lee–Readyもmidpoint未満としてsellになります。ラベルの違いは、どちらかの参加者がいないという意味ではなく、ルールが異なる手掛かりを使うためです。
その次が100.02ならmidpointちょうどです。fallbackとしてTickテストを使い、100.01から上昇したためbuyになります。100.04での約定はaskと一致し、通常は買い手が流動性を取ったケースと整合します。ただし、この読み方には有効で同期されたQuoteが必要です。Quoteが古い、取引が訂正された、複数フィードの時刻が揃っていない場合は、ラベルが変わる可能性があります。この例は計算方法だけを示し、市場の成績やシグナルを主張するものではありません。

正解率は研究対象のサンプルに限られる
Ellis、Michaely、O’Haraは取引方向が記録されたNasdaqの独自データを使って分類ルールを評価しました。そのサンプルでは、Quoteルールの正解率が76.4%、Tickルールが77.66%、Lee–Readyが81.05%でした。一方で、Quoteの内側で成立した取引ではいずれのルールも成功が限定的でした。これらは研究で使われたデータと設計における数値であり、別の市場、時期、データ提供者にも当てはまる保証値ではありません。Journal of Financial and Quantitative Analysis掲載論文は、大口取引やeffective spreadの評価に生じ得る偏りも扱っています。
評価前に何を「正解」と数えるかも決めてください。約定ごとに一件ずつ数えるか、取引数量で重み付けするかで、同じ予測でも集計値が変わります。未分類を分母から外した場合は、その除外割合も併記します。カバレッジが違う二つの方法を正解率だけで比べると、判定を避けた手法が有利に見えることがあります。
全体の正解率だけでは、重要な場面に偏る誤りが隠れることがあります。bidまたはaskで成立した取引が多ければ、spread内の取引が難しくても全体の割合は良く見えるかもしれません。評価時は、分類できた割合、unresolvedの件数、spread内の位置、取引量、時間帯、venueごとの精度を示すとよいでしょう。昔のNasdaqデータにおける数値を、同じルールが先物、他の株式、暗号資産でも同じように働く証拠として扱わないでください。
現代のデータではより多くの対応情報を使えることがある
Jurkatisのfull-information algorithmは、直前のQuoteを機械的に一つ選ぶ代わりに、取引の執行跡と注文板の変化を照合します。その対応関係を見つけてから取引方向を分類する考え方です。Nasdaqデータを使った評価では、比較対象の手法より良い結果を示し、特にtimestampの精度が低いときに差がありました。時刻が秒単位のデータでは、Lee–Readyに比べて誤分類がおよそ半分だったと論文は報告しています。これは当該データ構造と試験条件での結果であり、どのフィードでも常に最良という主張ではありません。Jurkatisの研究は、時刻精度と板の構造が結果に影響することを説明しています。
一部のフィードにはアグレッサー側の専用フィールドがありますが、venue、商品、メッセージ種別ごとに仕様を確かめる必要があります。CME MDP 3.0 Trade SummaryにはAggressorSideがあり、アグレッサーなしの状態も表せます。その仕様ではコード1がbid aggressor、2がask aggressorです。値の意味を読む前に対象商品の最新版とメッセージを確認してください。Nasdaq TotalView-ITCHは追加注文メッセージに待機注文側を記録し、約定メッセージには注文参照番号などを含みます。板を再構成して約定と待機注文を照合できることはありますが、すべてのNasdaqフィードにアグレッサー欄が直接あるわけではありません。CMEの解説とNasdaq ITCH仕様書で各形式を確認できます。
時刻の同期と例外処理が分類品質を左右する
分類を始める前に、時刻が取引所時刻、受信時刻、またはベンダー時刻のどれかを確認します。メッセージ順序、約定とQuoteが同じvenueを対象にしているかも重要です。高頻度市場では、時刻精度が粗いと複数のQuote更新と取引が同じtimestampを共有することがあります。根拠なくすべてのQuoteを5秒遅らせると、対応付けを悪化させる場合があります。入手可能な最も細かい時刻とメッセージ順を使い、候補Quoteが複数ある場合の規則を記録します。
オークション、約定訂正、取消、順不同のprint、有効なQuoteがない取引は別に扱います。すべての行を無理にbuyかsellに決めず、unresolvedとして残すほうがデータを忠実に表すことがあります。手計算できる例で実装を確認し、順番と単位を点検して、複数ルールの結果を比較してください。Implementation shortfallの解説は別の問い、つまり推定方向ではなく実際に発生した執行コストを扱います。
方向ラベルはSigned volumeやOFIとは別物
取引にラベルを付けた後、signed volumeは通常、buy数量を正、sell数量を負として一定時間内で合計します。誤分類が少数でも積み重なれば、imbalance、effective spread、価格インパクトの指標に偏りが出ることがあります。結果を報告するときは、どの分類ルールを使ったか、midpointと方向不明の取引をどう扱ったかを書いてください。
Order flow imbalance(OFI)は別の指標で、最良bid/askの数量や価格の変化を使います。取引にならない注文追加や取消も含むため、各約定に方向を付けて数量を合計することとは同じではありません。注文板のOFIガイドで入力データの違いを確認できます。方向ラベル、signed volume、OFIはいずれも市場データの要約であり、参加者の動機や利益につながる予測を証明するものではありません。
よくある質問
Q1すべての取引をbuyかsellに分類できますか?
できるとは限りません。先行tickのないmidpoint取引、対応するQuoteがない取引、特殊条件付きのメッセージなどは、無理に方向を付けずunresolvedとして残せます。
Q2Lee–Readyの5秒ラグを常に使うべきですか?
いいえ。5秒は1988年のNYSEデータにおける時刻問題から選ばれました。現代のフィードでは実際に利用できる時刻とメッセージ順序を使い、方法を記録してください。
Q3方向ラベルから価格変動の原因を特定できますか?
できません。ラベルは流動性を取る側を推定するだけです。取引参加者や動機を特定せず、その側が後の価格変化を引き起こしたと証明するものでもありません。 主要な出典 - Lee、Ready「Inferring Trade Direction from Intraday Data」(1991) - Ellis、Michaely、O’Hara「The Accuracy of Trade Classification Rules: Evidence from Nasdaq」(2000) - Jurkatis「Inferring Trade Directions in Fast Markets」(2022) - CME MDP 3.0 Trade Summary - Nasdaq TotalView-ITCH仕様書
出典
問題を報告
この記事のリンクを含むメールを準備します。送信すると Mark に報告が届きます
クイックチェック
記事を読み終えたら、3問で確認しましょう
問題 01
取引方向分類でbuyer-initiatedとは何を指しますか?
答えを選ぶと解説を確認できます