क्रिप्टो में स्मार्ट ऑर्डर राउटिंग: एक ऑर्डर, बारह वेन्यू, कोई NBBO नहीं
आपको 400 BTC खरीदने हैं। Binance पर सबसे ज्यादा डेप्थ है। OKX और Bybit दोनों एक टिक चौड़े पर ठीक-ठाक साइज़ दिखा रहे हैं। Coinbase बेहतर हेडलाइन प्राइस कोट कर रहा है, लेकिन USD में, USDT में नहीं। Kraken का टॉप ऑफ बुक शानदार दिख रहा है और 400 मिलीसेकंड पुराना है। Upbit और भी बेहतर है, लेकिन कोरिया के लिए आपका कम्प्लायंस साइन-ऑफ मौजूद नहीं है, और न ही आपके पास KRW है। इस गड़बड़ को देखकर एक इक्विटी ट्रेडर स्मार्ट ऑर्डर राउटर की तरफ हाथ बढ़ाकर सोचना बंद कर देगा, क्योंकि इक्विटी में राउटिंग के मुश्किल हिस्सों को दो दशक पहले रेगुलेशन के जरिए प्लंबिंग में ही बिठा दिया गया था। क्रिप्टो में प्लंबिंग आप खुद हैं। यहां न कोई कंसॉलिडेटेड टेप है, न ऑर्डर-प्रोटेक्शन रूल, न फी कैप, न नेटेड सेटलमेंट — और, सबसे बुनियादी बात, आप वहां ट्रेड नहीं कर सकते जहां आपका कैपिटल पहले से मौजूद न हो।
यह लेख इसी उलझन के बावजूद राउटर बनाने के बारे में है: कंसॉलिडेटेड बुक, और नाइव बेस्ट-प्राइस राउटिंग इसके खिलाफ पैसा क्यों गंवाती है; एलोकेशन प्रॉब्लम को एक कॉन्वेक्स प्रोग्राम के रूप में, जिसे आप चाइल्ड-ऑर्डर डेडलाइन के भीतर वाकई सॉल्व कर सकते हैं; वह कैपिटल कंस्ट्रेंट जो क्रिप्टो SOR को ट्रेजरी मैनेजमेंट से अलग करना नामुमकिन बना देता है; वेन्यू के आर-पार मेकर-अवेयर राउटिंग; और वह TCA फीडबैक लूप जो बताता है कि इसमें से कुछ भी काम कर रहा है या नहीं। यह Rust में कॉम्प्लेक्स आर्बिट्राज एक्जीक्यूशन का इंजीनियरिंग भाई-बहन है — वह लेख नैनोसेकंड्स की बात करता है; यह लेख डिसीजन की बात करता है।
इक्विटी SOR को मुफ्त में क्या मिलता है
यह ठीक-ठीक समझना जरूरी है कि US इक्विटी राउटिंग को रेगुलेशन से क्या विरासत में मिलता है, क्योंकि इस लिस्ट का हर आइटम वह चीज़ है जिसे आपको या तो खुद से दोबारा बनाना होगा, या सोच-समझकर उसके बिना काम चलाना होगा।
Regulation NMS (SEC, 2005) ने यहां तीन अहम काम किए। रूल 611, यानी Order Protection Rule, किसी दूसरे एक्सचेंज पर दिखाई गई प्रोटेक्टेड कोट से बदतर कीमत पर एक्जीक्यूट करने से रोकता है — एक "ट्रेड-थ्रू" — जो हर ब्रोकर को या तो बेस्ट डिस्प्लेड प्राइस पर राउट करने, या इंटरमार्केट स्वीप ऑर्डर से उसे स्वीप करने पर मजबूर करता है। रूल 610 किसी भी वेन्यू द्वारा प्रोटेक्टेड कोट लेने पर वसूली जा सकने वाली एक्सेस फी को $0.003 प्रति शेयर पर कैप करता है, जिससे डिस्प्लेड प्राइस वेन्यू के आर-पार 30 मिल्स के भीतर तुलनीय बने रहते हैं। और कंसॉलिडेटेड टेप (SIPs) एक नेशनल बेस्ट बिड एंड ऑफर पब्लिश करता है — "मार्केट क्या है" इस सवाल का एक ही आधिकारिक जवाब।
इस आर्किटेक्चर पर अकादमिक फैसला यह है कि यह आश्चर्यजनक रूप से अच्छा काम करता है। O'Hara and Ye (2011), "Is market fragmentation harming market quality?" (Journal of Financial Economics 100(3), 459–474), ने अलग-अलग फ्रैगमेंटेशन लेवल पर US स्टॉक्स की जांच की और पाया कि ज्यादा फ्रैगमेंटेड स्टॉक्स में कम ट्रांजैक्शन कॉस्ट और तेज़ एक्जीक्यूशन थे, और कीमतें रैंडम वॉक के ज्यादा करीब थीं। उनका सारांश ही मुख्य पंक्ति है: US इक्विटी "एंट्री के कई पॉइंट्स वाले एक सिंगल वर्चुअल मार्केट" की तरह बर्ताव करती हैं। फ्रैगमेंटेशन तब हानिरहित है जब स्मार्ट राउटर्स प्लस ट्रेड-थ्रू प्रोटेक्शन उन टुकड़ों को वापस जोड़ देते हैं। Foucault and Menkveld (2008), "Competition for Order Flow and Smart Order Routing Systems" (Journal of Finance 63(1), 119–158), ने डच मार्केट में यह मैकेनिज्म दिखाया: जब Euronext के खिलाफ दूसरी लिमिट ऑर्डर बुक (LSE की EuroSETS) एंटर हुई, तो कंसॉलिडेटेड डेप्थ बढ़ी, और किसी वेन्यू पर लिक्विडिटी सप्लाई सीधे उसके ट्रेड-थ्रू रेट से दबती थी — जो राउटर किसी वेन्यू को नज़रअंदाज़ करते हैं, वे उसकी कोट करने की प्रेरणा ही खत्म कर देते हैं।
इस रेगुलेटेड दुनिया में भी, छोटे टाइम-होराइजन पर कंसॉलिडेटेड व्यू एक झूठ है। Ding, Hanna, and Hendershott (2014), "How Slow Is the NBBO? A Comparison with Direct Exchange Feeds" (Financial Review 49(2), 313–332), ने SIP NBBO को उसी डेटा सेंटर में डायरेक्ट एक्सचेंज फीड्स से बनाए गए NBBO के मुकाबले मापा और सक्रिय नामों में प्रति सेकंड कई बार डिस्लोकेशन पाए, जो आमतौर पर एक से दो मिलीसेकंड तक चलते थे — शुद्ध रूप से एग्रीगेशन और ट्रांसपोर्ट लेटेंसी। इस आंकड़े को याद रखें: यह उस समस्या का इक्विटी वर्ज़न है जो क्रिप्टो में एक से दो ऑर्डर-ऑफ-मैग्नीट्यूड ज्यादा खराब है।
अब यह सब मिटा दीजिए। क्रिप्टो में कोई NBBO नहीं है क्योंकि कोई SIP नहीं है। कोई ट्रेड-थ्रू रूल नहीं: कोई वेन्यू खुशी-खुशी आपको किसी दूसरे वेन्यू की कोट से पांच टिक दूर की कीमत पर प्रिंट कर देगा, और कोई इसकी शिकायत तक फाइल नहीं करेगा। कोई फी कैप नहीं: टेकर फीस सब-बेसिस-पॉइंट नेगोशिएटेड टियर से लेकर 10 bps के रिटेल शेड्यूल तक फैली है, इसलिए डिस्प्लेड प्राइस ऑर्डरिंग और नेट प्राइस ऑर्डरिंग अक्सर एक-दूसरे से असहमत होते हैं। और कोई कंसॉलिडेटेड क्लियरिंग नहीं: हर एक्सचेंज प्रीफंडेड बैलेंस के साथ अपना खुद का साइलो है। आप एक साथ SIP भी हैं, राउटर भी, और क्लियरिंग फर्म भी।
कंसॉलिडेटेड बुक बनाना, और नाइव बेस्ट-प्राइस राउटिंग क्यों फेल होती है
इंजीनियरिंग बेसलाइन बहुत ग्लैमरस नहीं है: N वेबसॉकेट L2 फीड्स, प्रति-वेन्यू सीक्वेंस-नंबर गैप हैंडलिंग, सिंबल और टिक-साइज़ नॉर्मलाइजेशन, और क्वोट-करेंसी नॉर्मलाइजेशन (एक BTC-USD बुक और एक BTC-USDT बुक USDT/USD रेट के हिसाब से अलग होती हैं, जो हमेशा ठीक 1.0 नहीं होता और कभी-कभी उससे बहुत दूर होता है)। नॉर्मलाइज़्ड बुक्स को एक प्राइस-सॉर्टेड लैडर में मर्ज करें, हर लेवल को उसके वेन्यू के साथ टैग करें और — यह सबसे ज़रूरी है — यह भी बताएं कि वह स्नैपशॉट कितना पुराना है। अगर आपकी मर्ज्ड बुक में प्रति-वेन्यू क्वोट-ऐज एक फर्स्ट-क्लास फील्ड की तरह मौजूद नहीं है, तो आपने स्क्रीनसेवर बनाया है, राउटर नहीं।

नाइव राउटर इस मर्ज्ड लैडर पर लालच से (greedily) चलता है: पहले बेस्ट नेट प्राइस। यह तीन अलग-अलग वजहों से फेल होता है, और इन्हें अलग-अलग समझना ज़रूरी है क्योंकि इनके फिक्स भी अलग-अलग हैं।
स्टेल कोट्स और लेटेंसी स्क्यू। आपके वेन्यू एक जैसी लेटेंसी पर डेटा डिलीवर नहीं करते। एक कोलोकेटेड फीड जब आप उस पर एक्ट करते हैं तब शायद सिर्फ 3 ms पुरानी हो; किसी दूसरे महाद्वीप के वेन्यू से आने वाला पब्लिक वेबसॉकेट शायद 300 ms पुराना हो। इसलिए मर्ज्ड टॉप ऑफ बुक अलग-अलग "अतीतों" का एक कंपोजिट है। जब BTC 200 ms में 10 bps मूव करता है — जो कि रूटीन बात है — तो स्टेल वेन्यू की कोट्स ठीक उसी गलत साइड पर सिस्टमैटिकली आकर्षक दिखती हैं। उन पर राउट करना मतलब एक ऐसी रेस खरीदना जो आप पहले ही हार चुके हैं: कोट गायब हो चुका है, आपका IOC खाली या आंशिक रूप से भरा हुआ वापस आता है, और जब तक आप दोबारा राउट करते हैं, फ्रेश वेन्यू फिर से रीप्राइस कर चुके होते हैं। यह Ding–Hanna–Hendershott की 1–2 ms वाली SIP डिस्लोकेशन प्रॉब्लम है, बस फर्क यह है कि आपके डिस्लोकेशन सैकड़ों मिलीसेकंड तक चलते हैं और किसी को भी कुछ भी मानने की बाध्यता नहीं है।
फैंटम लिक्विडिटी। वेन्यू के आर-पार डिस्प्लेड साइज़ को जोड़ना ओवरकाउंट करता है, क्योंकि एक ही मार्केट मेकर इन्वेंटरी को एक साथ कई जगह कोट किया जाता है। Van Kervel (2015), "Competition for Order Flow with Fast and Slow Traders" (Review of Financial Studies 28(7), 2094–2127), ने फ्रैगमेंटेड इक्विटी में इसे डॉक्यूमेंट किया: एक वेन्यू पर एक ट्रेड के बाद मिलीसेकंड्स के भीतर प्रतिस्पर्धी वेन्यू पर लिमिट ऑर्डर की काफी बड़ी कैंसिलेशन होती है, ठीक वैसे ही जैसा एक मॉडल भविष्यवाणी करता है जिसमें फास्ट लिक्विडिटी प्रोवाइडर हर जगह डुप्लिकेट साइज़ कोट करते हैं और एक जगह हिट होते ही बाकी कॉपियां वापस खींच लेते हैं। क्रिप्टो मार्केट मेकर्स Binance/OKX/Bybit पर यही खेल खेलते हैं, इसलिए एक्सेसिबल कंसॉलिडेटेड डेप्थ डिस्प्लेड कंसॉलिडेटेड डेप्थ से काफी कम होती है, और यह कमी उतनी ज्यादा बढ़ती है जितना ज्यादा आप वेन्यू को एक-एक करके (साथ में नहीं) हिट करते हैं। अगर आपका राउटर एक बार में एक वेन्यू पर चाइल्ड ऑर्डर भेजता है और हर फिल कन्फर्मेशन का इंतज़ार करता है, तो आप खुद अपने आप को "फार्म" कर रहे हैं: हर फिल बाकी बाज़ार को कैंसल करने का सिग्नल देता है।
फीस लैडर को दोबारा क्रमबद्ध कर देती हैं। जो वेन्यू 7.5 bps टेकर फी के साथ सबसे अच्छा रॉ प्राइस दिखा रहा है, वह अक्सर बुक में सबसे खराब नेट प्राइस होता है। यह कहना बहुत ओबवियस लगता है, फिर भी "बेस्ट डिस्प्लेड प्राइस" राउटिंग ठीक वही है जो ज्यादातर फर्स्ट-जेनरेशन क्रिप्टो राउटर्स (और कई वेंडर प्रोडक्ट्स) इम्प्लीमेंट करते हैं। नेट-ऑफ-फी तुलना न्यूनतम मानदंड है; मेकर-टेकर फीस और रिबेट्स वाला साथी लेख प्रति-वेन्यू फी मैथ, VIP-टियर डायनामिक्स, और क्यों आपका मार्जिनल फी टियर — न कि स्टिकर वाला — राउटर में होना चाहिए, इसे कवर करता है।
राउटिंग ऑप्टिमाइजेशन
चाइल्ड-ऑर्डर प्रॉब्लम को औपचारिक रूप दें। आपको अभी, मार्केटेबल रूप से, वेन्यू के आर-पार क्वांटिटी खरीदनी है। मान लीजिए वेन्यू की मार्जिनल आस्क प्राइस है, उसकी बुक से यूनिट खाने के बाद (L2 स्नैपशॉट से एक नॉन-डिक्रीज़िंग स्टेप फंक्शन), इसकी टेकर फी है, और वेन्यू पर स्टेलनेस और एडवर्स सिलेक्शन के लिए एक प्रति-यूनिट पेनल्टी है (आगे इसे आपके अपने मार्कआउट्स से कैलिब्रेट किया गया है)। एलोकेशन यह सॉल्व करता है
हर कॉन्वेक्स है (एक नॉन-डिक्रीज़िंग फंक्शन का इंटीग्रल, प्लस एक लीनियर टर्म), इसलिए यह प्रॉब्लम कॉन्वेक्स है, और KKT कंडीशन पूरी कहानी बता देती हैं: एक थ्रेशोल्ड मौजूद है जैसे कि
और उन वेन्यू के लिए जिन्हें कुछ नहीं मिलता। यानी: ऑर्डर को पानी की तरह वेन्यू के आर-पार डालें, जहां भी आप ट्रेड करें वहां मार्जिनल ऑल-इन कॉस्ट बराबर करते हुए। कोई वेन्यू तभी बाहर होता है जब उसकी पहली यूनिट — बेस्ट प्राइस, प्लस फी, प्लस स्टेलनेस पेनल्टी — कहीं और की मार्जिनल यूनिट से बदतर हो।

स्टेप-फंक्शन बुक्स के लिए, वॉटर-फिलिंग सॉल्यूशन फी-और-पेनल्टी-एडजस्टेड मर्ज्ड लैडर पर एक ग्रीडी वॉक से कंप्यूट किया जाता है — तो ग्रीडी डेप्थ-वॉक फी सी अपने आप में गलत नहीं है; यह सटीक सॉल्यूशन है, बशर्ते आप रॉ डिस्प्लेड प्राइस की बजाय हेयरकट साइज़ के साथ नेट मार्जिनल कॉस्ट्स पर ग्रीडी-वॉक करें। यही फर्क राउटर और स्क्रीनसेवर के बीच पूरा अंतर है।
इस सामान्य समस्या का कैनॉनिकल ट्रीटमेंट है Cont and Kukanov, "Optimal order placement in limit order markets" (Quantitative Finance 17(1), 21–39, 2017; arXiv:1210.1625)। वे वेन्यू के आर-पार ऑर्डर प्लेसमेंट को — जिसमें लिमिट और मार्केट ऑर्डर के बीच का स्प्लिट, फीस और रिबेट्स, और एक्जीक्यूशन रिस्क के लिए पेनल्टी शामिल है — एक कॉन्वेक्स ऑप्टिमाइजेशन के रूप में फॉर्मुलेट करते हैं, सिंगल-वेन्यू लिमिट/मार्केट स्प्लिट के लिए एक एक्सप्लिसिट क्लोज्ड फॉर्म डिराइव करते हैं, और मल्टी-वेन्यू केस के लिए एक स्टोकास्टिक-अप्रॉक्सिमेशन एल्गोरिदम देते हैं जो बारह एक्सचेंजों के आर-पार एलोकेशन को 200 ms से कम में कंप्यूट करता है। यह फ्रेमवर्क क्रिप्टो से पहले का है लेकिन लगभग बिना छेड़छाड़ के ट्रांसफर होता है, क्योंकि इसने कभी NBBO मान ही नहीं लिया था — इसने सिर्फ प्रति-वेन्यू बुक्स, प्रति-वेन्यू फीस, और फिल्स को लेकर अनिश्चितता मान ली थी, जो ठीक-ठीक क्रिप्टो की स्थिति है।
मार्केटेबल साइड का एक न्यूनतम, ईमानदार स्केच (स्टेलनेस हेयरकट्स के साथ कॉन्वेक्स वॉटर-फिल):
import math
from dataclasses import dataclass
@dataclass
class Venue:
name: str
asks: list[tuple[float, float]] # (price, displayed size), sorted
taker_fee: float # fractional, e.g. 0.0002 = 2 bps
quote_age_ms: float
kappa: float # phantom-liquidity decay rate, 1/ms
lam: float # staleness/toxicity penalty, $ per unit
def allocate(venues: list[Venue], Q: float):
ladder = [] # (marginal all-in cost, accessible qty, venue)
for v in venues:
surv = math.exp(-v.kappa * v.quote_age_ms) # P(level still there)
for price, size in v.asks:
cost = price * (1.0 + v.taker_fee) + v.lam
ladder.append((cost, size * surv, v.name))
ladder.sort()
fills, remaining = {}, Q
for cost, qty, name in ladder:
take = min(qty, remaining)
fills[name] = fills.get(name, 0.0) + take
remaining -= take
if remaining <= 1e-12:
break
return fills, remaining # remaining > 0 => book too thin: slice parent
लॉजिक की सोलह लाइनें; सारी इंटेलिजेंस इनपुट्स में रहती है। (डिस्प्लेड साइज़ क्वोट-ऐज के साथ कितनी तेज़ी से भाप बनकर उड़ जाता है) आपके अपने IOC फिल रेशियो से, सेंड टाइम पर क्वोट-ऐज के फंक्शन के रूप में कैलिब्रेट किया जाता है। प्रति-वेन्यू मार्कआउट्स से आता है (आखिरी सेक्शन)। दोनों ही मापे जाते हैं, अंदाज़ा नहीं लगाए जाते।
एक हल किया हुआ उदाहरण। तीन वेन्यू के आर-पार BTC खरीदें:
| वेन्यू | टेकर फी | क्वोट ऐज | आस्क (प्राइस × साइज़) |
|---|---|---|---|
| A (गहरा, फ्रेश) | 2.0 bps | 10 ms | 87,000 × 3.0; 87,010 × 4.0; 87,025 × 6.0 |
| B (सस्ती फी, स्टेल) | 1.0 bps | 250 ms | 86,995 × 1.5; 87,015 × 2.0 |
| C (बेस्ट हेडलाइन, मोटी फी) | 7.5 bps | 20 ms | 86,990 × 2.0; 87,000 × 3.0 |
रॉ टेप कहता है C का आस्क सबसे अच्छा है (86,990), फिर B। फी-एडजस्ट करते ही लैडर पूरी तरह दोबारा क्रमबद्ध हो जाता है: C का टॉप लेवल नेट होता है , जो स्क्रीन पर सबसे खराब लिक्विडिटी है। B का टॉप 87,004 नेट करता है, A का 87,017। B के डिस्प्लेड साइज़ पर 30% स्टेलनेस हेयरकट लगाएं () और वॉटर-फिल करें: B के पहले लेवल से 1.05 BTC, A के पहले से 3.0, B के दूसरे से 1.4, A के दूसरे से 4.0, A के तीसरे से 0.55। ऑल-इन एवरेज: **87,038.8 चुकाता है: 1.9 bps बदतर, एक 10-BTC चाइल्ड पर लगभग $166, जो दिन भर हर पैरेंट के हर चाइल्ड पर कंपाउंड होता जाता है। और यह पंचलाइन नोट करें: टेप पर सबसे अच्छे डिस्प्लेड प्राइस वाले वेन्यू को ऑप्टिमाइज़्ड राउटर से ज़ीरो फ्लो मिला। क्रिप्टो में कोई आपको वहां ट्रेड करने पर मजबूर नहीं करता — "प्रोटेक्टेड कोट" के जरिए राउट करना कोई कॉन्सेप्ट ही नहीं है — और सही एलोकेशन अक्सर दिखने वाली बेस्ट प्राइस को पूरी तरह नज़रअंदाज़ कर देता है।
कॉन्वेक्स प्रोग्राम अब भी जिन चीज़ों को नज़रअंदाज़ करता है: सिमल्टेनिटी (सारे वेन्यू चाइल्ड को एक ही मिलीसेकंड में फायर करें, वरना van Kervel की कैंसिलेशन एक्जीक्यूशन के बीच में वेन्यू को रीप्राइस कर देंगी), डिस्क्रीट लॉट साइज़ और मिनिमम नोशनल (कॉन्टिन्युअस सॉल्यूशन को राउंड करें, ग्रीडी तरीके से ठीक करें), और स्प्रेड को क्रॉस न करने का विकल्प — जो सेक्शन 5 का विषय है। बड़े पैरेंट को इस वेन्यू लॉजिक के चलने से पहले टाइम के साथ कैसे स्लाइस किया जाना चाहिए, इस गहरे सवाल के लिए देखें Almgren–Chriss ऑप्टिमल एक्जीक्यूशन; SOR यह तय करता है कि चाइल्ड कहां जाता है, यह नहीं कि चाइल्ड कब होते हैं।
कैपिटल कंस्ट्रेंट: SOR ही ट्रेजरी मैनेजमेंट है
ऊपर की हर बात ने चुपचाप मान लिया कि आप वेन्यू पर ट्रेड कर सकते हैं। इक्विटी में यह धारणा मुफ्त है: एक प्राइम ब्रोकर, नेटेड सेटलमेंट, अभी ट्रेड करें और पैसा बाद में मूव करें। क्रिप्टो में यह पूरे सिस्टम का बाइंडिंग कंस्ट्रेंट है। एक्सचेंज प्रीफंडेड बैलेंस मांगते हैं — आप Binance पर बैठे USDT से Kraken का आस्क नहीं लिफ्ट कर सकते। तो असली प्रॉब्लम यह है
जहां वेन्यू पर आपका उपलब्ध बैलेंस है (खरीद के लिए क्वोट एसेट में, बिक्री के लिए बेस में)। अब KKT कंडीशन पढ़ती हैं, जिसमें बैलेंस कैप पर मल्टीप्लायर है। कैप्ड वेन्यू पर, : वहां मार्जिनल डॉलर मार्केट-वाइड वॉटर लेवल से सस्ता एक्जीक्यूट होता है, और आप महंगे वेन्यू पर फ्लो धकेलने के लिए मजबूर होते हैं। यह मल्टीप्लायर कोई एब्सट्रैक्शन नहीं है — शाब्दिक रूप से वे डॉलर-प्रति-यूनिट हैं जो आप अभी बचा लेते अगर वेन्यू पर एक यूनिट और बैलेंस मौजूद होता। अपने फोरकास्ट फ्लो पर जोड़ें तो यह रीबैलेंसिंग ट्रांसफर के लिए आपकी विलिंगनेस-टू-पे है, और रीबैलेंस डिसीजन एक ऐसी तुलना बन जाता है जिसे कोई भी ट्रेजरी सिस्टम एक्जीक्यूट कर सकता है: इन्वेंटरी तब मूव करें जब
राइट-हैंड साइड न छोटी है, न कॉन्स्टेंट। ऑन-चेन BTC को एक्सचेंज द्वारा क्रेडिट किए जाने से पहले 2–6 कन्फर्मेशन (20–60 मिनट) चाहिए; ERC-20 ट्रांसफर में मिनट्स लगते हैं, प्लस ऐसा गैस जो ठीक तब स्पाइक करता है जब मार्केट बिज़ी होते हैं; TRC-20 और Solana रेल्स तेज़ और सस्ती हैं लेकिन हर जगह सपोर्टेड नहीं हैं; और हर एक्सचेंज अपनी खुद की विदड्रॉवल-प्रोसेसिंग क्यू जोड़ता है, जो ठीक वोलैटिलिटी इवेंट्स के दौरान मिनटों से घंटों तक फैल जाती है — यानी ठीक तब जब आपका राउटर इन्वेंटरी को सबसे ज्यादा मूव करना चाहता है। पूरा ट्रांसफर-कॉस्ट अरिथमेटिक — फीस, लेटेंसी डिस्ट्रीब्यूशन, और वह प्राइस रिस्क जो आप बीच रास्ते में ढोते हैं — फंडिंग-रेट आर्बिट्राज लेख में विस्तार से बताया गया है, और यह ज्यों का त्यों ट्रांसफर होता है: एक SOR रीबैलेंस उसी चीज़ का दूसरा रूप है जो आर्बिट्राज लेग ट्रांसफर है, कॉस्ट साइड सहित।
यही वजह है कि यहां आत्मसात करने लायक अकादमिक नतीजा कोई एक्जीक्यूशन पेपर नहीं, बल्कि Makarov and Schoar (2020), "Trading and Arbitrage in Cryptocurrency Markets" (Journal of Financial Economics 135(2), 293–319) है। उन्होंने क्रॉस-एक्सचेंज प्राइस डेविएशन डॉक्यूमेंट किए जो दिनों से हफ्तों तक बने रहते हैं — जिसमें 2018 की शुरुआत में 40% से ज्यादा तक गया कोरियाई "किमची प्रीमियम" शामिल है — और दिखाया कि ट्रांजैक्शन कॉस्ट इन्हें एक्सप्लेन नहीं कर सकती; धीमा, कैपिटल-कंट्रोल्ड आर्बिट्राज कैपिटल कर सकता है। क्रिप्टो वेन्यू O'Hara–Ye का "एंट्री के कई पॉइंट्स वाला सिंगल वर्चुअल मार्केट" नहीं हैं। ये धीमी, महंगी पाइपों से जुड़े आंशिक रूप से सेगमेंटेड पूल हैं, और आपका राउटर उसी सेगमेंटेशन के भीतर रहता है। बिना ट्रेजरी मॉडल वाला क्रिप्टो SOR दरअसल इक्विटी SOR की नकल भर है।

व्यवहार में यह एक टू-टाइमस्केल कंट्रोलर बन जाता है। फास्ट लूप (मिलीसेकंड्स) हर चाइल्ड ऑर्डर पर मौजूदा बैलेंस के भीतर कंस्ट्रेंड वॉटर-फिल सॉल्व करता है। स्लो लूप (मिनट्स से घंटे) शैडो प्राइस की टाइम सीरीज़ और फोरकास्ट फ्लो को देखता है, और तब ट्रांसफर शेड्यूल करता है जब का पर्सिस्टेंट कॉम्पोनेंट ट्रांसफर-कॉस्ट के हर्डल को पार कर जाए — हिस्टेरेसिस के साथ, क्योंकि नॉइज़ पर वेन्यू के बीच इन्वेंटरी को इधर-उधर उछालना ही वह तरीका है जिससे आप अपनी एज Tron नेटवर्क को दान कर देते हैं। इंस्टीट्यूशनल डेस्क ऑफ-एक्सचेंज सेटलमेंट (Copper ClearLoop, Ceffu MirrorX) से इस प्रॉब्लम को कंप्रेस करते हैं: कोलैटरल एक कस्टोडियन के पास रहता है और वेन्यू पर मिरर होता है, जो सपोर्टेड वेन्यू के लिए ट्रांसफर लेटेंसी को नाटकीय रूप से घटा देता है — यह कंस्ट्रेंट को संकरा करता है, मिटाता नहीं, और अपनी खुद की काउंटरपार्टी लाइन-आइटम भी जोड़ता है।
मेकर-अवेयर राउटिंग और क्रॉस-वेन्यू क्यू गेम्स
जो राउटर सिर्फ स्प्रेड क्रॉस करता है, वह सबसे सस्ती लिक्विडिटी बिना खरीदे छोड़ रहा है: आपकी अपनी। Cont–Kukanov फ्रेमवर्क में पहले से ही जवाब मौजूद है — उनका सिंगल-वेन्यू क्लोज्ड फॉर्म एक ऑर्डर को पोस्टिंग और टेकिंग के बीच फीस, क्यू पोज़िशन, और एक्जीक्यूशन-रिस्क एवर्जन के आधार पर बांटता है — और मल्टी-वेन्यू वर्ज़न इसे जनरलाइज़ करता है: उन वेन्यू पर पैसिवली पोस्ट करें जहां (मेकर फी, क्यू लेंथ, चाइल्ड डेडलाइन के भीतर फिल प्रोबेबिलिटी) हावी हैं, उन वेन्यू पर लें जहां तात्कालिकता सस्ती है, और अनफिल्ड पैसिव बाकी को उस फ्लो के रूप में ट्रीट करें जो डेडलाइन पर वापस टेकर ऑप्टिमाइजेशन में एंटर करता है।
दो क्रिप्टो-स्पेसिफिक झोल इसे इक्विटी वर्ज़न से ज्यादा गहरा बनाते हैं।
फी-चेज़िंग एक मापा हुआ जाल है। Battalio, Corwin, and Jennings (2016), "Can Brokers Have It All? On the Relation between Make-Take Fees and Limit Order Execution Quality" (Journal of Finance 71(5)), ने दिखाया कि जो US ब्रोकर सबसे ज्यादा रिबेट देने वाले वेन्यू पर लिमिट ऑर्डर राउट करते थे, उन्हें मापने लायक रूप से बदतर एक्जीक्यूशन मिलता था — कम फिल रेट, बदतर रियलाइज़्ड क्वालिटी — क्योंकि रिबेट वेन्यू वही जगह है जहां हर दूसरे रिबेट-सीकर का ऑर्डर भी बैठा होता है: सबसे लंबी क्यू, सबसे एडवर्स फिल्स। क्रिप्टो में यही बात हूबहू लागू होती है। जो वेन्यू सबसे अच्छा मेकर रिबेट देता है वह हर मार्केट मेकर के पैसिव कोट को खींचता है; आपका ऑर्डर एक गहरी क्यू में जुड़ता है और मुख्य रूप से तब फिल होता है जब कीमत आपके ऊपर से गुज़रने ही वाली हो। प्रति-वेन्यू नेट-ऑफ-मार्कआउट मेकर इकोनॉमिक्स (अगला सेक्शन) अक्सर वेन्यू को उनके फी शेड्यूल के ठीक उलट क्रम में रैंक करती है।
लेटेंसी स्क्यू एक दो-तरफा खेल है। जो क्रॉस-वेन्यू इन्फॉर्मेशन फ्लो van Kervel ने डिफेंसिव कैंसिलेशन के रूप में डॉक्यूमेंट किया, वही दूसरी तरफ से एक आक्रामक सिग्नल है: Binance के टॉप ऑफ बुक पर एक ट्रेड मिलीसेकंड्स के भीतर OKX के संगत लेवल पर ट्रेड और कैंसिलेशन की भविष्यवाणी करता है। इसलिए मेकर-अवेयर राउटर को (a) अपने रेस्टिंग ऑर्डर को दूसरे वेन्यू के इवेंट्स पर रीप्राइस करना चाहिए — लोकल मिड की बजाय क्रॉस-वेन्यू माइक्रोप्राइस से पेग करते हुए — वरना यह वह धीमी काउंटरपार्टी बन जाता है जिसे क्रॉस-वेन्यू आर्बिट्राजर्स चुनकर मारते हैं; और (b) यह जानबूझकर यह गेम खेल भी सकता है: जो वेन्यू पीछे रहता है वहां पोस्ट करें, फिल के पल जो वेन्यू आगे रहता है वहां हेज करें। यह क्रॉस-वेन्यू क्यू आर्बिट्राज है, और यह वही लेटेंसी स्ट्रक्चर है जिसका इस्तेमाल क्रॉस-एक्सचेंज आर्बिट्राज एक्जीक्यूशन में होता है, बस यह स्टैट-आर्ब बुक की बजाय एक एक्जीक्यूशन मैंडेट के भीतर एम्बेडेड है। ऑपरेशनल रिक्वायरमेंट बिल्कुल वही है: वेन्यू A पर फिल इवेंट और वेन्यू B को हेज ऑर्डर एक ही सिंगल-डिजिट-मिलीसेकंड कोड पाथ में रहने चाहिए, वरना एज किसी और की हो जाती है।
राउटिंग क्वालिटी मापना: मार्कआउट्स और लीग टेबल
इक्विटी राउटर Rule 605/606 डिस्क्लोज़र से अनुशासित होते हैं। आपके राउटर को आपकी अपनी TCA के अलावा कुछ भी अनुशासित नहीं करता — इम्प्लीमेंटेशन शॉर्टफॉल और TCA वाला फ्रेमवर्क स्कोरबोर्ड है; यहां इसका राउटर-स्पेसिफिक हिस्सा दिया गया है।
एटॉमिक मेज़रमेंट है प्रति-वेन्यू मार्कआउट: हर फिल के लिए, के लिए पर (कंसॉलिडेटेड, लेटेंसी-करेक्टेड) मिड रिकॉर्ड करें, इस तरह साइन किया हुआ कि नेगेटिव का मतलब हो मार्केट आपके फिल के खिलाफ मूव हुआ। इसे एक ऑल-इन लीग टेबल में एग्रीगेट करें:
| वेन्यू | टेकर फिल शेयर | इफेक्टिव स्प्रेड (bps) | फी (bps) | मार्कआउट 1s (bps) | ऑल-इन कॉस्ट (bps) |
|---|---|---|---|---|---|
| A | 46% | 1.4 | 2.0 | −0.6 | 4.0 |
| B | 31% | 1.9 | 1.0 | −2.1 | 5.0 |
| C | 23% | 1.2 | 7.5 | −0.4 | 9.1 |
फी कॉलम कहता है B सस्ता वेन्यू है। ऑल-इन कॉलम कहता है B महंगा वेन्यू है: इसकी स्टेल कोट्स आपको चुन-चुनकर तब फिल करती हैं जब मार्केट पहले से ही उनके पार जा रहा होता है, और 1-सेकंड मार्कआउट यह बिल वसूल लेता है। यह उलटफेर — फी रैंकिंग बनाम इफेक्टिव-कॉस्ट रैंकिंग — जब डेस्क पहली बार यह टेबल बनाते हैं तो सबसे कंसिस्टेंट फाइंडिंग होती है, और यही वह नंबर है जो वापस राउटर में जाना चाहिए: कॉन्वेक्स प्रोग्राम की पेनल्टी वही परसिस्टेंट प्रति-वेन्यू मार्कआउट डेफिसिट है, जिसे मापा, स्मूद किया और अपडेट किया गया है। राउटर और TCA मिलकर एक क्लोज्ड लूप बनाते हैं, वरना दोनों में से कोई काम नहीं करता।
एक मेथडोलॉजिकल जाल यह है: लाइव राउटर से बनी लीग टेबल सिलेक्शन बायस से दूषित होती हैं। अगर राउटर पहले से ही हार्ड, इन्फॉर्म्ड फ्लो को डीप वेन्यू पर और आसान फ्लो को सस्ते वेन्यू पर भेज रहा है, तो डीप वेन्यू के मार्कआउट अन्यायपूर्ण रूप से खराब दिखेंगे। साफ-सुथरा फिक्स है जानबूझकर रैंडमाइजेशन — कुछ प्रतिशत चाइल्ड को यूनिफॉर्मली रैंडम रूट करें (एक -ग्रीडी राउटर, जिसे क्वांट्स एक कॉन्वेक्स-ऑप्टिमाइजेशन प्रायर वाले बैंडिट के रूप में पहचान लेंगे) — ताकि एक काउंटरफैक्चुअल मौजूद रहे। इसकी कीमत रैंडमाइज़्ड स्लाइस पर कुछ बेसिस पॉइंट्स चुकानी पड़ती है, और यही एकमात्र तरीका है जिससे बाकी 95% फ्लो को साबित करने लायक ढंग से अच्छा राउट किया जाना दिखाया जा सकता है।
तो यह पूरा स्टैक है: एक लेटेंसी-ईमानदार कंसॉलिडेटेड बुक; मापे गए इवैपोरेशन और टॉक्सिसिटी पैरामीटर्स के साथ नेट मार्जिनल कॉस्ट पर एक कॉन्वेक्स वॉटर-फिल; एक बैलेंस-कंस्ट्रेंड फास्ट लूप जिसके शैडो प्राइस एक ट्रांसफर-कॉस्ट-अवेयर स्लो लूप को ड्राइव करते हैं; ऐसा पैसिव प्लेसमेंट जो क्यू और क्रॉस-वेन्यू इन्फॉर्मेशन फ्लो का सम्मान करे; और रैंडमाइज़्ड, मार्कआउट-बेस्ड TCA जो हर पैरामीटर को वापस फीड करे। इनमें से कोई भी कॉम्पोनेंट अकेले में गहरा नहीं है। पूरा सिस्टम गहरा है — क्योंकि क्रिप्टो में, इक्विटी के उलट, किसी रेगुलेटर ने आपके लिए इसकी कोई भी परत बनाकर नहीं दी, और मार्केट हर चाइल्ड ऑर्डर पर 2 bps वसूलता है, हमेशा के लिए, जब तक आप खुद यह न करें।
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.