क्रॉस-एक्सचेंज लिक्विडेशन
लिक्विडेशन टेप कैसे प्राप्त, नॉर्मलाइज़, साइज़ और पढ़ा जाता है: WebSocket फ़ीड, स्कीमा, साइड सिमेंटिक्स, अनुकूली बकेटिंग, क्लस्टर डिटेक्शन, फ्रेशनेस नियम।
लाइव विजेट यहाँ देखें: /perpetuals/liquidations.
डेटा स्रोत
तीन एक्सचेंज WebSocket फ़ीड, प्रति एसेट एक नॉर्मलाइज़्ड Redis स्ट्रीम। हर निष्पादित लिक्विडेशन प्रिंट टेप में आता है — हम ओपन इंटरेस्ट से लिक्विडेशन दबाव का अनुमान नहीं लगाते, स्टॉप ज़ोन का अनुमान नहीं लगाते, प्रिंट सिंथेसाइज़ नहीं करते।
- Binance।
wss://fstream.binance.com/market/ws/<symbol>@forceOrder— प्रति-सिंबल पब्लिक स्ट्रीम। पुराना/ws/पथ Binance द्वारा चुपचाप थ्रॉटल किया जाता है,/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 दोनों सतहों के लिए प्रति एसेट एक स्ट्रीम से पढ़ता है; कोई अलग pubsub चैनल नहीं है — स्ट्रीम स्वयं प्रसारण सतह है।
इवेंट स्कीमा
प्रति-इवेंट फ़ील्ड तीनों स्रोतों में समान हैं। दो टाइमस्टैम्प जानबूझकर अलग रखे गए हैं:
ts_ms— एक्सचेंज द्वारा स्टैंप किया गया ट्रेड टाइमस्टैम्प। एक्सचेंजों के बीच प्रिंट समयों की तुलना के लिए इसका उपयोग करें।producer_ts_ms— लेखन समय पर हमारे डेमन की वॉल-क्लॉक।producer_ts_ms − ts_msदृश्य फ़ीड लेटेंसी प्लस हमारे और एक्सचेंज के बीच कोई भी क्लॉक स्क्यू है। 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 धूल पर पठनीय हिट ज़ोन बनाए रखता है; ऊपरी 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-मिनट शासन तक स्केल होता है। इसके बाद, एक ही सेकंड में सैकड़ों छोटे प्रिंट एक समान चमक में मिल जाते हैं, और कैस्केड संरचना गायब हो जाती है। हम विंडो के अनुसार रेंडर मोड बदलते हैं:
- ≤ 15 m। कच्चा स्कैटर — प्रति इवेंट एक वृत्त। सबसे बड़े डॉट सबसे अंत में खींचे जाते हैं ताकि कैस्केड धूल के नीचे पठनीय रहें।
- 1 h–4 h। प्रति (समय, साइड) 1-मिनट बकेट। प्रति गैर-खाली बकेट एक वृत्त,
Σ usdद्वारा आकार दिया गया, बकेट के भीतर वॉल्यूम-भारित मूल्य पर प्लॉट किया गया। वृत्त के अंदर एक छोटाN×बैज दिखाता है कि बकेट ने कितनी अंतर्निहित घटनाओं को मर्ज किया। - 24 h। 5-मिनट बकेट के साथ वही तर्क।
हिट-टेस्टिंग, टॉप-N एनोटेशन और टूलटिप्स रेंडर की गई (बकेटेड) घटनाओं के विरुद्ध चलते हैं; क्लस्टर डिटेक्शन, संचयी पैन और रेट सब-पैन कच्ची घटनाओं को स्कैन करते हैं क्योंकि वे संकेत प्रति-इवेंट घनत्व और साइड फ़्लो के बारे में हैं, hover लक्ष्य के बारे में नहीं।
क्लस्टर डिटेक्शन
मूल्य-क्लस्टर बैंड सक्रिय विंडो की कच्ची घटनाओं पर पहचाने जाते हैं:
reference_price = वर्तमान mid (नवीनतम इवेंट मूल्य)
bin_width = reference_price * 0.001 // 0.1 %
round((price - reference) / bin_width) द्वारा घटनाओं को bin करें
प्रत्येक bin के लिए:
यदि Σ usd ≥ विंडो कुल का 15 % AND distinct events ≥ 3:
क्लस्टर के रूप में चिह्नित करें
cluster_price = bin की कीमतों का वॉल्यूम-भारित माध्य
Σ usd द्वारा शीर्ष 3 क्लस्टर रखेंप्रत्येक क्लस्टर को एक डैश्ड क्षैतिज रेखा + बैज $X cluster · N× @ price मिलता है। वॉल्यूम-भारित माध्य (नाममात्र bin मध्यबिंदु के बजाय) रेखा को उस गहराई पर रखता है जहाँ डॉलर वास्तव में केंद्रित थे।
टॉप-N इनलाइन एनोटेशन
विंडो के सबसे बड़े डॉट्स में से तीन तक को एक इनलाइन $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 s रिफ़्रेश होता है, 60 s TTL के साथ। बैकएंड इसे तीन स्थितियों में परिवर्तित करता है:
- ok — डेमन जीवित (स्थिति हैश 30 s के भीतर रिफ़्रेश) AND पिछले 2 मिनट के भीतर एक इवेंट आया।
- stale — डेमन जीवित, लेकिन एक्सचेंज ≥ 2 मिनट से चुप है। यह वास्तव में शांत एक्सचेंज हो सकता है या मूक फ़ीड; फ़्रंटएंड एम्बर रेंडर करता है।
- missing — डेमन मृत (स्थिति हैश समाप्त या कभी नहीं लिखा गया)। लाल रेंडर किया गया।
स्वास्थ्य टूलटिप में लेटेंसी p50 / p99 संख्याएँ डेमन के producer_ts_ms − ts_ms के रोलिंग 200-इवेंट रिंग बफ़र से नमूना ली जाती हैं।
खाली-समय बैंड
विंडो के सतत स्पैन जिनमें कोई लिक्विडेशन नहीं है, उन्हें एक सूक्ष्म पृष्ठभूमि रंग मिलता है। इसके बिना, 6 घंटे के स्थानीय डेटा वाला 24 h दृश्य “उस अवधि में कोई कैस्केड नहीं था” के बजाय एक टूटे हुए रेंडरर की तरह पढ़ा जाता है। थ्रेशोल्ड है gap ≥ विंडो का 5 % — 24 h दृश्य पर एक शांत 30 m को फ्लैग करने के लिए पर्याप्त छोटा, शांत सेकंडों के दौरान चार्ट को माइक्रो-बैंड से धारीदार करने से बचने के लिए पर्याप्त लंबा।
कैशिंग
- WebSocket। लाइव, कोई कैश नहीं। पूँछ Redis Streams
XREAD BLOCKद्वारा संचालित होती है ताकि WS टास्क पोलिंग के बिना नई प्रविष्टियों की प्रतीक्षा करता है। - /api/liquidations/recent। 5 s सार्वजनिक कैश — टेप को बासी बनाए बिना रिफ़्रेश तूफ़ान को सोखने के लिए पर्याप्त।
- /api/liquidations/health। 3 s सार्वजनिक कैश। लाइव दिखने के लिए पर्याप्त छोटा, इतना लंबा कि एक रिफ़्रेश तूफ़ान प्रति अनुरोध 18
HGETALLफ़ैन-आउट न करे।
सीमाएँ
- एक्सचेंज द्वारा स्व-रिपोर्ट किया गया। प्रत्येक एक्सचेंज तय करता है कि क्या लिक्विडेशन प्रिंट गिना जाता है। दुर्लभ स्पूफ़्ड प्रिंट (cancel-replace झिलमिलाहट, दो बार गिने गए आंशिक फ़िल) घुस सकते हैं। हम क्रॉस-वेन्यू डुप्लीकेशन का प्रयास नहीं करते: तीन एक्सचेंजों में फैला एक ही ट्रेडर का कैस्केड डिज़ाइन से तीन इवेंट है।
- स्ट्रीम गहराई।
MAXLEN ≈ 10 000प्रविष्टियाँ प्रति एसेट स्ट्रीम। व्यस्त दिन एक एसेट ~4 घंटे में स्ट्रीम भर सकता है; शांत दिन वही बफ़र पूरे 24 h समेटता है। 24 h विजेट विंडो कठोर ऊपरी सीमा है — कोई लंबे समय की रीप्ले सतह नहीं है। - मार्क प्राइस नवीनतम लिक्विडेशन है, सतत mid नहीं।क्षैतिज मार्क लाइन और प्राइस ट्रेस लिक्विडेशन प्रिंट से व्युत्पन्न हैं। विरल डेटा के साथ ट्रेस दाँतेदार होता है; सतत mid फ़ीड पर यह स्मूथ हो जाएगा। ट्रेस को सटीक mid इतिहास के रूप में न पढ़ें — इसे “प्रिंट कहाँ हुए?” के रूप में पढ़ें।
- क्रॉस-एक्सचेंज टेम्पोरल स्क्यू वास्तविक है। Binance 1-सेकंड ग्रैन्युलैरिटी पर स्टैम्प करता है, Bybit और OKX अधिक महीन; घड़ियाँ बह सकती हैं।
ts_msइंटर-वेन्यू संरेखण के लिए उपयोग करें;producer_ts_msकेवल लेटेंसी माप के रूप में उपयोगी है, सॉर्ट कुंजी के रूप में नहीं। - OKX फ्री-टियर कवरेज।
liquidation-ordersचैनल सार्वजनिक (बिना-auth) WS पर उपलब्ध है, लेकिन सबसे निचले VIP स्तर पर OKX का लिक्विडेशन firehose सिंक्रोनाइज़्ड कैस्केड के दौरान पिछड़ सकता है। उन विंडोज़ में स्वास्थ्य पिल stale पर पलट जाता है।
संस्करण
मेथडोलॉजी संस्करण v1.0.0 · अपडेट 2026-05-12। महत्वपूर्ण परिवर्तन (नए एक्सचेंज, सूत्र समायोजन, थ्रेशोल्ड परिवर्तन) संस्करण को बढ़ाते हैं और ऊपर के स्ट्रक्चर्ड डेटा में dateModified को अपडेट करते हैं।