価格が急落する直前、板が急に薄くなり、成行売りばかりが続くことがある。こうした「情報を持つ側との取引で流動性供給者が不利になる状態」を注文フローの毒性と呼ぶ。VPINは、その可能性を出来高の偏りから定量化しようとする指標である。
ただしVPINは暴落予知器ではない。計算方法によって値が大きく変わり、強いトレンドや寄り付きの出来高集中でも上昇する。売買シグナルにする前に、何を測り、何を測れないかを理解する必要がある。
時間ではなく出来高で区切る
通常の5分足は、活発な時間も閑散時間も同じ長さで区切る。VPINでは一定出来高ごとにバケットを作る。例えば一日出来高100万株を50分割するなら、一バケット2万株である。
寄り付きに2万株が30秒で成立すれば一バケット、昼間に同量へ20分かかっても一バケットだ。情報到来の速さを、時計時間ではなく取引量の進み方で見る。

買い出来高と売り出来高を推定する
全取引に買い手と売り手がいるため、「買い出来高」は買い手主導の成行注文と考える。約定価格が売気配側なら買い主導、買気配側なら売り主導と分類する方法が直感的である。
気配データがなければ価格変化や正規分布近似から分類する方法もあるが、推定誤差が増える。ゼロティック、気配内約定、複数市場の時刻ずれをどう処理したか記録する。
数値例
一バケット2万株で、買い主導1万6,000株、売り主導4,000株なら不均衡は1万2,000株である。直近50バケットの不均衡絶対値合計が40万株なら、VPINは40万÷(2万×50)=0.40となる。
0.40は売買方向の不均衡が平均40%だったことを示すが、「40%の確率で暴落」という意味ではない。絶対水準より、その銘柄自身の過去分布で何パーセンタイルかを見る。
ローリング窓の更新
新しいバケットが完成するたび、最古の一つを落として再計算する。窓が短いほど急変へ速く反応するがノイズが増え、長いほど安定するが警告が遅れる。
25、50、100バケットを並べ、どの窓でも上位10%へ入る場合と、短期だけ急騰する場合を分ける。結果を見て都合のよい窓だけ採用しない。

流動性供給者の視点
VPINが高いとき、指値で待つ参加者は情報を持つ注文と取引する可能性を警戒し、気配を広げたり数量を減らしたりする。そのため高VPINとスプレッド拡大が同時に観測されることがある。
しかし因果は逆かもしれない。価格急変が買い売り分類を偏らせ、その結果VPINが上がることもある。指標が変動を予測したのか、変動を追認したのか、時刻順序を厳密に調べる。
誤検知しやすい場面
寄り付き、引け、指数リバランス、大口クロス、決算直後は方向出来高が偏りやすい。これは必ずしも情報優位者の取引ではなく、機械的な資金移動かもしれない。
上昇トレンド中の買い偏りを毎回危険と判定すると、最も流動性のある局面で売買を止める。通常日、イベント日、オークションを別母集団にする。
バックテストの設計
各バケット完成時点のVPIN、スプレッド、板数量を保存し、その後5分・30分・60分の絶対リターンと最大逆行幅を測る。未来の約定を含む未完成バケットを使わない。
VPINを十分位に分け、上位10%と中位の将来変動を比較する。取引回数ではなく日付単位でも集計し、一日の急変が大量サンプルとして有意性を水増ししないようにする。
執行ルールへの変換
上位10%で指値数量を半分、上位5%で新規指値を停止するなど、まずは売買方向ではなく執行強度へ使う。成行へ切り替えると逆に高いスプレッドを支払うため、緊急度と比較する。
通常スプレッド2円、危険帯6円、注文1万株なら追加コストは最大4万円規模になる。待つ間の価格変化も含め、実行ショートフォールで評価する。
データ上の落とし穴
複数取引所の約定と気配を統合するとき、ミリ秒単位の時計ずれで買い売り分類が逆転する。訂正取引、取消、場外取引も除外規則を固定する。
株式分割や呼値変更で過去分布が不連続になる場合がある。出来高バケットを固定株数ではなく、直近平均出来高の一定割合にすると銘柄間比較がしやすい。
運用チェック
- バケット容量と窓数を事前に固定する
- 売買方向推定法を明記する
- 未完成バケットを使わない
- 寄り・引け・イベントを分離する
- 価格変動より先に上昇したか確認する
- 費用と未約定を含めて評価する
VPINの価値は相場の方向を当てることではなく、指値が不利になりやすい環境を識別することにある。単独の閾値へ依存せず、スプレッド、板の回復、約定後リターンと組み合わせて使うのが現実的だ。
日次レビュー表
最大VPIN、危険帯滞在時間、同時点スプレッド、30分後絶対リターン、注文の平均滑りを一行に保存する。指標が高かったのに何も起きなかった日も残し、成功例だけを集めない。
月次で上位帯と中位帯の差が縮小したら、閾値をその場で変更せず新規利用を停止する。次期間で分類法やバケット容量の改定案を評価する。
買い偏りと売り偏りを分けて残す
標準的なVPINは不均衡の絶対値を使うため、買い主導か売り主導かを失う。危険度と方向を混同しないよう、符号付き不均衡も別列へ保存する。売り偏りで高VPINの後に下落幅が増えたか、買い偏りでも同じく変動が増えたかを比較する。
符号付き値で方向予測まで行う場合は、絶対値VPINによる執行管理とは別モデルにする。方向モデルが外れても、流動性低下の判断まで同時に無効にしない。
バケット容量の決め方
一日の平均出来高を50分割する方法は分かりやすいが、出来高が急減した銘柄では一バケット完成に数日かかる。過去20日中央値を分母にし、日をまたぐか、日次でリセットするかを固定する。
日をまたぐと夜間ニュース前後の注文を同じバケットへ混ぜる。日次リセットでは未完成分を捨てるため朝の値が不安定になる。両方式を並べ、実運用時間に合う方を選ぶ。
分類誤差のストレステスト
買い売り分類の10%をランダムに反転させ、VPIN順位がどの程度変わるか試す。少しの誤分類で危険帯が全面的に入れ替わるなら、閾値運用には脆い。
気配ベース分類とティックルール分類で共通して上位へ入る区間だけを強い警告とする方法もある。シグナル数は減るが、データ仕様への依存を抑えられる。
他指標との役割分担
スプレッドは現在の取引コスト、板デプスは瞬間的容量、レジリエンスはショック後の回復、VPINは直近フローの偏りを表す。四つを同じ意味の流動性指標として平均しない。
例えばVPIN高・スプレッド狭なら、危険が価格へまだ反映されていない仮説になる。VPIN高・スプレッド広なら、警戒が既に気配へ反映済みかもしれない。状態ごとに約定結果を比べる。
ポジション保有者の使い方
新規発注だけでなく、既存ロングのヘッジ緊急度にも使える。ただし高VPINを見て成行売りすると、最も薄い瞬間にコストを払う可能性がある。価格リスクと執行コストを二軸で判断する。
資産1,000万円、通常滑り0.05%、危険帯0.20%なら全売却の追加費用は1万5,000円。想定下落がそれ以下なら急いで売る合理性は乏しい。金額換算して比較する。
閾値の固定方法
絶対値0.6のような共通線より、各銘柄の過去60日90パーセンタイルを使う方が市場差を調整しやすい。ただし過去窓に危機が含まれると閾値が上がり、危機後に鈍感になる。
長期基準と短期基準を併記し、どちらか一方を都合よく選ばない。更新頻度を月初などへ固定し、当日の急変を含めて閾値を動かさない。
収益ではなく損失削減を測る
VPIN利用日の売買を除外した結果だけを見ると、機会損失が消える。停止により回避した滑りと、逃した利益、未約定の両方を記録する。
指標導入前後で相場環境が違うため、同時期にVPINを使わない仮想注文を走らせる。実注文との差が執行改善の純効果に近い。
モデル停止条件
危険帯と通常帯の将来滑り差が3カ月連続でゼロ以下、分類不明率が20%超、データ欠損が連続した場合は新規利用を停止する。停止中は直近結果へ合わせて閾値を微調整しない。
再開条件は次の完全な評価期間で差が戻ることとし、過去期間の再最適化だけで復帰させない。
銘柄横断で比較する場合
大型株と小型株では約定頻度も気配更新も異なる。VPINをそのまま横並びにせず、各銘柄の過去分布で標準化し、同じ売買代金階層の中で比較する。
一バケットの完成時間も併記する。VPINが同じ0.6でも、10秒で完成した市場と3時間かかった市場では緊急度が違う。
架空の一日を追う
午前10時にVPINが過去90パーセンタイルへ入り、スプレッドが2円から4円、デプスが半減したとする。予定していた2万株の買いを5,000株ずつへ分け、各回の回復を待つ。
結果として平均滑りが0.12%から0.08%へ下がった一方、残り5,000株が未約定で価格が0.3%上昇したなら、機会損失込みでは改善していない。完了率まで含めて判断する。
初心者向けの最小実装
最初はティックデータがなくても、1分足の上昇出来高・下落出来高を近似し、一定出来高バケットを作れる。ただしこれは正式なVPINではなく、方向分類の粗い代理指標として表示する。
代理版で将来滑りとの関係がなければ、高価なデータを購入して精密化する前に仮説を見直す。精密さより、用途と評価指標を先に決める。
最終的な評価軸
予測正解率ではなく、危険帯での滑り削減額、未約定による機会損失、停止で回避できた最大損失を同じ円単位へ変換する。三つの合計が導入コストを上回るか確認する。
指標値を公開記録へ残し、後から危険帯の定義を変えない。運用者の裁量を入れた場合は理由も保存し、機械ルールとの差を監査する。


コメント