クロス取引所ロスカット
ロスカット・テープのソーシング・正規化・サイジング・読み方:WS フィード、スキーマ、サイド意味論、適応バケッティング、クラスター検出、鮮度ルール。
ライブ・ウィジェットを見る: /perpetuals/liquidations.
データソース
3 取引所の WebSocket フィード、資産別の正規化された Redis ストリーム。実行されたすべてのロスカット・プリントがテープに入る — オープン・インタレストからロスカット圧力を推定せず、ストップ・ゾーンを推測せず、プリントを合成しない。
- Binance.
wss://fstream.binance.com/market/ws/<symbol>@forceOrder— シンボル別公開ストリーム。旧/ws/パスは Binance が静かに throttle。/market/ws/パスが実際にアクティブ。 - Bybit.
wss://stream.bybit.com/v5/public/linearのliquidationトピック。 - OKX.
wss://ws.okx.com:8443/ws/v5/publicのliquidation-ordersチャンネル、instTypeSWAP。
各デーモンがイベントを資産別 Redis Stream prod:liq:<asset>:events に書く。上限 MAXLEN ≈ 10 000(約 4 時間カスケード密集データ、静かな日は 24 時間全体)。バックエンドは REST と WebSocket の両表面で資産あたり 1 ストリームから読む。別の pubsub チャンネルなし — ストリーム自体がブロードキャスト表面。
イベント・スキーマ
イベント別フィールドは 3 ソースで同一。2 つのタイムスタンプは意図的に区別:
ts_ms— 取引所が打った取引タイムスタンプ。取引所間のプリント時間比較にはこのフィールドを使用。producer_ts_ms— 我々のデーモンが書いた時の wall clock。producer_ts_ms − ts_msは可視フィード遅延 + 取引所との clock skew。p50/p99 報告のための 200 イベント・ローリング・リング・バッファにサンプリング。exchange∈{binance, bybit, okx}。side∈{long, short}— 以下の意味論参照。qty— 基礎資産単位(BTC、ETH …)。price— クォート通貨の執行価格。usd=qty × price。資産間の比較は USD で。BTC と DOGE の原生 qty 比較は無意味。
サイド意味論
ロスカット・ストリームは取引所のクローズ注文の視点からサイドをエンコード、トレーダーのポジションと逆。負けたポジション方向に正規化:
side: "long"— ロング・ポジションが強制決済(価格がロスカット水準を下抜け)。Binance ではSELLforceOrder、Bybit ではside: "Buy"のポジションがロスカット、OKX ではposSide: "long"。side: "short"— ショート・ポジションが強制決済(価格上昇)。Binance ではBUYforceOrder、Bybit ではside: "Sell"のポジション、OKX ではposSide: "short"。
テープ色はこれに従う:赤ドット = ロングが飛んだ(価格下落)、緑ドット = ショートが飛んだ(価格上昇)。
サイズ・スケーリング
viewBox-px のドット半径は clamp(√(usd / $10 000) × 2, 4, 22)。sqrt が面積による線形スケーリングを抑制し、$1 M イベントが $100 K イベントの約 ~3.16 倍に見える(10 倍ではない)。単一カスケード・プリントが周囲すべてを覆わない。下限 clamp が $10 K 未満の小イベントに読みやすい hit 領域を維持。上限 clamp が最大のカスケードがパネルから溢れないようにする。
r = clamp(sqrt(usd / 10_000) * 2, 4, 22) // viewBox-px # 参照値(サイズ凡例) $10 K → r ≈ 4 $100 K → r ≈ 6.3 $1 M → r = 20 $10 M+ → r = 22 (clamped)
適応レンダリング
生散布図は ~15 分体制までしかスケールしない。それを超えると 1 秒以内の数百の小プリントが均一な光に溶け、カスケード構造が消える。ウィンドウに応じてレンダリング・モードを切り替える:
- ≤ 15 分。 生散布 — イベントあたり 1 円。最大ドットを最後に描き、カスケードが塵の上で読めるように。
- 1 h–4 h。 (時間, サイド)あたり 1 分バケット。非空バケットあたり 1 円、
Σ usdでサイジング、バケット内の出来高加重価格にプロット。円内の小N×バッジがそのバケットがマージした基礎イベント数を示す。 - 24 h。 5 分バケットで同じロジック。
ヒット・テスト、top-N アノテーション、ツールチップはレンダリングされた(バケット化された)イベントに対して実行。クラスター検出、累積パン、レート・サブパンは生イベントをスキャン — これら信号はホバー・ターゲットでなくイベントあたり密度とサイド・フローに関するため。
クラスター検出
価格クラスター帯はアクティブ・ウィンドウの生イベントで検出:
reference_price = 現在 mid (最新イベント価格)
bin_width = reference_price * 0.001 // 0.1 %
イベントを round((price - reference) / bin_width) で bin
各 bin について:
if Σ usd ≥ ウィンドウ総額の 15 % AND distinct events ≥ 3:
クラスターとしてマーク
cluster_price = bin 価格の出来高加重平均
Σ usd で上位 3 クラスター保持各クラスターは点線水平線とバッジ $X cluster · N× @ price を取得。出来高加重平均(bin の名目中点でなく)が線をドルが実際に集中する深さに置く。
Top-N インライン・アノテーション
ウィンドウの最大ドットのうち最大 3 つがインライン $amount · time · venue|N× ラベルを取得し、視線が即座に最大カスケードへ向く。$50 K フロアが塵へのラベリングを防ぐ。ラベル・アンカーはドットがチャート左半分か右半分かに応じて反転し、テキストが右軸を超えたり左端を下回ったりしない。
ロスカット速度サブパン
累積パンの下にミラーされたバー・チャートが時間バケットあたり Σ usd をサイド別に分割表示:ショートはベースラインから上(緑)へ、ロングは下(赤)へ。バケット・サイズは散布図の適応閾値に従う(≤ 15 m で 30 s、1–4 h で 1 min、24 h で 5 min)で、棒が上のドットと視覚的に整列する。
フィード健康
(資産, 取引所)別ステータス・ハッシュ prod:liq:status:<asset>:<exchange> が 5 秒ごとに更新、TTL 60 秒。バックエンドがこれを 3 ステートに変換:
- ok — デーモン生存(ステータス・ハッシュが 30 秒以内に更新)AND 直近 2 分以内にイベント到着。
- stale — デーモン生存、しかし取引所が ≥ 2 分静か。実際に静かな取引所か、無音フィードの可能性。FE はアンバーでレンダリング。
- missing — デーモン死亡(ステータス・ハッシュ期限切れまたは書かれていない)。赤でレンダリング。
健康ツールチップの遅延 p50 / p99 数値はデーモンの producer_ts_ms − ts_ms ローリング 200 イベント・リング・バッファからサンプリング。
空時間帯
ウィンドウのロスカットが全くない連続スパンに微妙な背景色を付ける。そうしないと 24 h ビューが 6 時間ローカル・データのみのとき、「その期間にカスケードなし」ではなく壊れたレンダラーのように読まれる。閾値 gap ≥ ウィンドウの 5 % — 24 h ビューの静かな 30 m をフラグするのに十分に小さく、静かな秒の間にチャートをマイクロ帯でストライプ化しないのに十分に大きい。
キャッシング
- WebSocket. ライブ、キャッシュなし。テールは Redis Streams の
XREAD BLOCKが駆動 — WS タスクがポーリングなしで新エントリ到着までブロック待機。 - /api/liquidations/recent. 5 秒公共キャッシュ — リフレッシュ・ストームを吸収しつつテープを stale にしないのに十分。
- /api/liquidations/health. 3 秒公共キャッシュ。ライブに見えるのに十分短く、リフレッシュ・ストームが要求あたり 18
HGETALLファンアウトしないのに十分長い。
限界
- 取引所自己報告。 各取引所が何がロスカット・プリントとしてカウントされるか決定。稀にスプーフされたプリント(cancel-replace 点滅、2 度カウントされた部分約定)が紛れ込む。クロス取引所重複排除は試みない — 3 取引所にまたがる単一トレーダーのカスケードは設計上 3 イベント。
- ストリーム深さ。
MAXLEN ≈ 10 000エントリ/資産ストリーム。忙しい日は 1 資産が ~4 時間でストリームを満たせる。静かな日は同じバッファが 24 h 全体を覆う。24 h ウィジェット・ウィンドウはハード上限 — より長いリプレイ表面なし。 - Mark 価格は最新ロスカット、連続 mid ではない。 水平 mark ラインと価格トレースはロスカット・プリントから派生。データが疎なときトレースはギザギザ。連続 mid フィードでは滑らかになる。トレースを正確な mid 履歴として読まないでください — 「プリントがどこで発生したか?」として読んでください。
- クロス取引所時間 skew は実在。 Binance は 1 秒粒度でスタンプ、Bybit と OKX はより細かい。時計が漂流する可能性。
ts_msは取引所間整列に使用。producer_ts_msはソート・キーでなく遅延測定としてのみ有用。 - OKX 無料ティア・カバレッジ。
liquidation-ordersチャンネルは公開(無認証)WS で利用可能だが、最低 VIP ティアでは OKX のロスカット firehose が同期化カスケード中に遅れる可能性。そのウィンドウでヘルス pill が stale に反転。
バージョン管理
方法論バージョン v1.0.0 · 更新 2026-05-12。重要な変更(新取引所、公式微調整、閾値変更)はバージョンを上げ、上の構造化データの dateModified を更新。