MBO बनाम MBP ऑर्डर बुक डेटा: मुख्य अंतर और उपयोग
MBO और MBP ऑर्डर बुक डेटा के बीच के अंतर को समझें। यह लेख बताता है कि मार्केट बाय ऑर्डर और मार्केट बाय प्राइस डेटा स्ट्रीम कैसे काम करते हैं, उनके उपयोग क्या हैं और उनकी लागत कितनी है।
MBO और MBP ऑर्डर बुक डेटा एक बड़ा अंतर है जो एक छोटे से लेबल के पीछे छिपा होता है। दो वेंडर आपको "Level 2" नाम से कुछ भी बेच सकते हैं: MBP (market by price) प्रत्येक मूल्य स्तर पर मौजूद कुल आकार (size) भेजता है, जबकि MBO (market by order) प्रत्येक व्यक्तिगत ऑर्डर को उसके अपने ID के साथ एक अलग इवेंट के रूप में भेजता है। एक बुक का सारांश है; दूसरा वह लेजर है जिससे बुक बनती है, और इसे ले जाने के लिए कई गुना अधिक ट्रैफिक की आवश्यकता होती है।
MBP और MBO ऑर्डर बुक डेटा में वास्तव में क्या होता है
MBP, यानी market by price, एकत्रित गहराई (aggregated depth) है। प्रत्येक अपडेट एक साइड, एक मूल्य स्तर, वहां मौजूद कुल प्रदर्शित आकार और कभी-कभी उसके पीछे के ऑर्डरों की संख्या बताता है। MBP-10 के रूप में बेचा जाने वाला उत्पाद आपको प्रत्येक साइड पर दस सर्वोत्तम मूल्य स्तर देता है, जो ट्रेडिंग प्लेटफॉर्म में लैडर और हर डेप्थ चार्ट में सीढ़ी की तरह दिखता है।
MBO, यानी market by order, एक इवेंट स्ट्रीम है। प्रत्येक संदेश एक ऑर्डर का नाम बताता है: उसका ID, साइड, मूल्य, प्रदर्शित आकार और उसके साथ अभी क्या हुआ। कुछ भी पहले से एकत्रित (pre-aggregated) नहीं होता है। यदि एक ही मूल्य पर चालीस ऑर्डर मौजूद हैं, तो चालीस अलग-अलग संदेश उन्हें वहां रखते हैं, और उस स्तर का कुल योग जानने के लिए आपको उन सभी चालीस को मेमोरी में रखना होगा।
हमारा Level 1 बनाम Level 2 मार्केट डेटा गाइड बताता है कि ब्रोकर के पास रिटेल टियर लेबल का क्या अर्थ है। जब कोई वेंडर "Level 2" कहता है, तो MBO और MBP उन बॉक्स के अंदर की सटीक जानकारी के नाम हैं, और स्कीमा का नाम ही वह है जिसके बारे में पूछना सार्थक है।
MBO फीड द्वारा किए जाने वाले संदेश कार्य
MBO फीड ऑर्डर ID पर लागू होने वाले कार्यों का एक वर्गीकरण है। चार कार्य अधिकांश ट्रैफिक का वहन करते हैं:
- Add: एक नया ऑर्डर एक नए ID के साथ एक मूल्य पर बुक में जुड़ता है।
- Modify: एक मौजूदा ID मूल्य या आकार बदलता है। आकार बढ़ाने या मूल्य बदलने पर ऑर्डर नए स्तर पर कतार के अंत में चला जाता है; आकार घटाने पर सामान्यतः वह अपनी जगह बनाए रखता है।
- Cancel: एक ID पूरी तरह या आंशिक रूप से बुक से बाहर हो जाता है।
- Trade या fill: एक आक्रामक ऑर्डर एक या अधिक मौजूदा ID के खिलाफ निष्पादित होता है, जिससे वे कम या समाप्त हो जाते हैं।
MBP में इस शब्दावली का कोई स्थान नहीं है। एक MBP अपडेट एक स्तर के बारे में एक कथन है: इस मूल्य पर अब इतना आकार है। चाहे आकार कैंसिल होने से निकला हो या ट्रेड होने से, अपडेट एक जैसा ही दिखता है। नीचे दिया गया पैनल सबसे पतली संभव बुक, यानी समेकित टॉप-ऑफ-बुक पर उस सीमा को दिखाता है, जिसमें प्रति साइड एक मूल्य स्तर और इस नामकरण में MBP-1 है।
हर आंकड़े के पीछे का पूरा SQL
WITH
ordered AS
(
SELECT
row_number() OVER (ORDER BY sip_timestamp, sequence_number) AS msg_index,
bid_price,
bid_size,
lagInFrame(bid_price) OVER (ORDER BY sip_timestamp, sequence_number) AS prev_bid_price,
lagInFrame(bid_size) OVER (ORDER BY sip_timestamp, sequence_number) AS prev_bid_size
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
AND bid_price > 0
),
classified AS
(
SELECT multiIf(
bid_price != prev_bid_price, 'best bid price changed',
bid_size > prev_bid_size, 'size joined at the best bid',
bid_size < prev_bid_size, 'size left the best bid',
'bid untouched, ask side updated') AS message_type
FROM ordered
WHERE msg_index > 1
)
SELECT
message_type,
count() AS message_count,
round(100 * count() / sum(count()) OVER (), 1) AS share_pct
FROM classified
GROUP BY message_type
ORDER BY indexOf(['best bid price changed', 'size joined at the best bid', 'size left the best bid', 'bid untouched, ask side updated'], message_type)उस आधे घंटे के दौरान, 17.6% संदेशों ने सर्वोत्तम बिड को एक अलग मूल्य पर स्थानांतरित किया, 17.4% ने अपरिवर्तित बिड पर आकार जोड़ा, 12% ने अपरिवर्तित बिड पर आकार हटाया, और 53% ने बिड को वैसे ही छोड़ दिया जबकि दूसरी साइड स्थानांतरित हो गई। प्रत्येक समूह एक मूल्य स्तर के बारे में एक शुद्ध कथन है। कोई भी किसी ऑर्डर का नाम नहीं लेता है, और कोई भी अंकगणित उस गायब ID को पुनः प्राप्त नहीं कर सकता है।
प्रत्येक स्कीमा क्या उत्तर दे सकता है और क्या नहीं
MBP-10 उन सवालों के जवाब देता है जो "वहां कितना आकार था" के रूप में पूछे जाते हैं: लैडर का आकार, बुक असंतुलन, मिड के पास मौजूद लिक्विडिटी, और स्वयं डेप्थ चार्ट। एकत्रित स्तर इन सभी के लिए पर्याप्त हैं।
MBO उन सवालों के जवाब देता है जो "इस ऑर्डर के साथ क्या हुआ" के रूप में पूछे जाते हैं: जब आप शामिल हुए तो आपके आगे कितना आकार था, ऑर्डर कैंसिल होने से पहले कितने समय तक जीवित रहते हैं, और मूल्य के दूर जाने से पहले टच पर एक पैसिव ऑर्डर के ट्रेड होने की संभावना क्या है। वे मात्राएं एकत्रित रूप में मौजूद नहीं होती हैं, और ऑर्डरों को एक स्तर के कुल योग में जोड़ने से वह क्रम नष्ट हो जाता है जिसने उन्हें परिभाषित किया था।
कतार की स्थिति (Queue position) इसका सबसे स्पष्ट उदाहरण है, और इसका अर्थ केवल price-time priority बनाम pro-rata matching के तहत होता है, जहां आगमन का क्रम यह तय करता है कि पहले कौन ट्रेड करेगा। जो बात इसे महत्वपूर्ण बनाती है वह है प्रिंट साइज: एक स्तर कई छोटे निष्पादनों से भरता है, न कि एक बड़े निष्पादन से।
हर आंकड़े के पीछे का पूरा SQL
SELECT
multiIf(size < 100, '1 to 99 shares',
size < 200, '100 to 199 shares',
size < 500, '200 to 499 shares',
size < 1000, '500 to 999 shares',
'1000 or more shares') AS trade_size_bucket,
count() AS trade_count,
round(100 * count() / sum(count()) OVER (), 1) AS share_pct,
round(avg(size)) AS avg_shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
AND size > 0
GROUP BY trade_size_bucket
ORDER BY min(size)100 शेयरों से कम के प्रिंट, यानी एक ऑड लॉट, ने उस विंडो में 92.3% ट्रेड बनाए, और सबसे बड़ा मौजूद बकेट, 1000 or more shares, ने 0.1% बनाया। यदि आप उस आकार के प्रिंट को 4,000 शेयरों को प्रदर्शित करने वाले स्तर पर भेजते हैं, तो कतार में सबसे अंत में शामिल हुआ ऑर्डर ट्रेड किए बिना दर्जनों निष्पादनों के दौरान बैठा रह सकता है। MBP आपको 4,000 दिखाता है। MBO आपको लाइन दिखाता है।
कोई भी स्कीमा छिपा हुआ आकार नहीं दिखाता है। एक iceberg order एक छोटा हिस्सा प्रदर्शित करता है और हर बार जब वह हिस्सा भर जाता है तो एक नए ID के साथ रिफ्रेश होता है, इसलिए रिजर्व कभी किसी संदेश में दिखाई नहीं देता है।
MBO से बुक को फिर से बनाना एक स्टेट मशीन है
एक MBP फीड आपको उत्तर देता है। एक MBO फीड आपको इनपुट देता है और आपसे बिल्कुल सही होने की अपेक्षा करता है:
- स्नैपशॉट से शुरू करें, या एक खाली बुक और वेन्यू के क्लियर संदेश से।
- ऑर्डर ID द्वारा कुंजीबद्ध (keyed), प्रत्येक ऐड, मॉडिफाई, कैंसिल और फिल को सख्त क्रम में लागू करें।
- मूल्य स्तर के अनुसार एक दूसरा इंडेक्स बनाए रखें, क्योंकि आपकी रणनीति यही पढ़ती है।
- अनुक्रम संख्याओं (sequence numbers) पर नज़र रखें, और जब भी कोई गायब हो तो एक नए स्नैपशॉट से पुनः सिंक करें।
विफलता का मोड शांत होता है। एक कैंसिल को छोड़ दें और एक फैंटम ऑर्डर सत्र के बाकी समय के लिए आपकी बुक में बैठा रहेगा, जो उस स्तर को बढ़ा देगा, और कहीं भी कोई अपवाद (exception) नहीं उठेगा। MBP बहुत अधिक धीरे-धीरे खराब होता है: प्रत्येक अपडेट एक स्तर के कुल योग को फिर से बताता है, इसलिए एक दूषित मान कुछ ही संदेशों के भीतर अधिलेखित (overwrite) हो जाता है।
MBO केवल प्रत्यक्ष वेन्यू फीड पर भी जीवित रहता है, प्रति एक्सचेंज एक बुक, जिसका अर्थ है उनमें से कई को चलाना और मर्ज करना। समेकित टेप संरचना के अनुसार एक सारांश है, SIP बनाम direct exchange feeds में एक विभाजन शामिल है।
अतिरिक्त विवरण की बैंडविड्थ लागत
संदेशों की गिनती अंतर को आंकने का ईमानदार तरीका है। नीचे दिया गया पैनल पांच घरेलू नामों के लिए उसी पिन किए गए आधे घंटे में वास्तविक प्रिंट के मुकाबले समेकित टॉप-ऑफ-बुक संदेशों की गिनती करता है।
हर आंकड़े के पीछे का पूरा SQL
WITH
quote_load AS
(
SELECT ticker, count() AS quote_messages
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO')
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
GROUP BY ticker
),
trade_load AS
(
SELECT ticker, count() AS trades
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'MSFT', 'KO')
AND sip_timestamp >= '2026-06-16 14:00:00'
AND sip_timestamp < '2026-06-16 14:30:00'
GROUP BY ticker
)
SELECT
q.ticker AS ticker,
round(q.quote_messages / 1000, 1) AS quote_messages_thousands,
round(t.trades / 1000, 2) AS trades_thousands,
round(q.quote_messages / t.trades, 1) AS quotes_per_trade_ratio
FROM quote_load AS q
INNER JOIN trade_load AS t ON t.ticker = q.ticker
ORDER BY quotes_per_trade_ratio DESCSPY ने प्रति प्रिंट सबसे भारी कोट ट्रैफिक वहन किया, हर ट्रेड के लिए 9.6 संदेश और तीस मिनट में 510 हजार संदेश। पांच नामों के बीच प्रसार व्यापक है: पैनल के निचले भाग में, MSFT ने प्रति प्रिंट 0.7 कोट संदेश चलाए, जो हर ट्रेड के लिए एक संदेश से भी कम है। याद रखें कि वह कॉलम क्या गिनता है: प्रति साइड एक मूल्य स्तर, एक ऐसी फीड पर जिसने पहले ही हर वेन्यू को एक एकल सर्वोत्तम बिड और ऑफर में समेट दिया है। दस-स्तरीय डेप्थ उत्पाद इसे गुणा करता है, और प्रति-ऑर्डर फीड इसे फिर से गुणा करती है, क्योंकि प्रत्येक वेन्यू पर प्रत्येक स्तर के पीछे का प्रत्येक ऑर्डर अपना ऐड, अपना मॉडिफाई और अपना कैंसिल उत्पन्न करता है, चाहे वह कभी ट्रेड हो या न हो। यही अंकगणित बड़े पैमाने पर the size of the options quote feed में दिखाई देता है।
रणनीति को किस ऑर्डर बुक फीड की आवश्यकता है?
अधिकांश कार्य MBP-10 पर चलते हैं। डेप्थ चार्ट, असंतुलन विशेषताएं, मूल्य-पर-लिक्विडिटी माप, निष्पादन लागत मॉडल, और इस बारे में लगभग हर शोध प्रश्न कि कहां कितना आकार मौजूद था, एकत्रित स्तरों से उत्तर दिए जा सकते हैं, जो संदेश वॉल्यूम के एक अंश पर होते हैं।
MBO की आवश्यकता तब होती है जब उत्तर किसी विशिष्ट ऑर्डर पर निर्भर करता है: कतार की स्थिति, ऑर्डर का जीवनकाल, कैंसिल व्यवहार, टच पर पैसिव फिल की संभावना। जो रणनीति इस पर टिकी है कि वह लाइन में 200 शेयर गहरी है या 20,000 शेयर, वह एकत्रित डेटा से वहां नहीं पहुंच सकती, और इसके लिए वह लाइसेंस शुल्क, बैंडविड्थ, स्टोरेज और एक पुनर्निर्मित बुक को पूरे दिन सही रखने के लिए इंजीनियरिंग में भुगतान करती है।
ये पैनल कैसे बनाए गए
- हर पैनल के पीछे की फीड समेकित टॉप-ऑफ-बुक है, प्रति साइड एक मूल्य स्तर, प्लस ट्रेड टेप। यह डेप्थ फीड नहीं है और न ही प्रति-ऑर्डर फीड है, इसलिए ये पैनल MBO को स्वयं सैंपल करने के बजाय संदेश-वॉल्यूम तर्क को दर्शाते हैं।
- विंडोज़ को एक निश्चित पिछली तारीख, 16 जून, 2026 को सुबह 10:00 से 10:30 बजे ET पर पिन किया गया है, जिसे 14:00 से 14:30 UTC के रूप में संग्रहीत किया गया है। पिन की गई विंडोज़ संख्याओं को पुनर्जीवन के दौरान स्थिर रखती हैं।
- वर्गीकरण पैनल प्रत्येक संदेश को अनुक्रम में पिछले वाले के मुकाबले लेबल करता है। यह कैंसिल को फिल से अलग नहीं कर सकता, जो कि इस पोस्ट में वर्णित सटीक सीमा है।
FAQ
MBO और MBP मार्केट डेटा के बीच क्या अंतर है?
MBP, यानी market by price, प्रत्येक मूल्य स्तर पर प्रदर्शित आकार को एकत्रित करता है और प्रति स्तर एक अपडेट भेजता है। MBO, यानी market by order, प्रत्येक व्यक्तिगत ऑर्डर को उसके अपने ID के साथ भेजता है, साथ ही उसके साथ होने वाले ऐड, मॉडिफाई, कैंसिल और फिल इवेंट्स भी भेजता है।
क्या Level 2 डेटा MBO डेटा के समान है?
आमतौर पर नहीं। रिटेल ब्रोकर पर "Level 2" का अर्थ लगभग हमेशा एकत्रित गहराई होता है, इसलिए पांच से बीस मूल्य स्तरों वाला MBP। कुछ वेंडर एक ही टियर नाम के तहत प्रति-ऑर्डर फीड का विपणन करते हैं, इसलिए स्कीमा का नाम, टियर का नाम नहीं, यह तय करता है कि वायर पर क्या आता है।
MBO फीड MBP फीड से कितनी बड़ी होती है?
कई गुना, जो वेन्यू और सिंबल के अनुसार बदलती रहती है। केवल समेकित टॉप-ऑफ-बुक ऊपर दिए गए पैनल में सबसे व्यस्त नाम के लिए प्रति प्रिंट 9.6 संदेशों पर चली। एक प्रति-ऑर्डर फीड हर वेन्यू पर हर स्तर के पीछे हर ऐड, मॉडिफाई और कैंसिल को जोड़ती है, जिसमें उन ऑर्डरों का बड़ा बहुमत शामिल है जो कभी ट्रेड नहीं होते।
क्या आप MBO डेटा से MBP बुक को फिर से बना सकते हैं?
हां, और यह सामान्य पाइपलाइन है: ऑर्डर ID द्वारा कुंजीबद्ध बुक पर प्रत्येक ऑर्डर इवेंट को लागू करें, फिर स्तर के कुल योग को प्रकाशित करें। इसका उल्टा असंभव है: एक बार जब ऑर्डरों को एक स्तर के कुल योग में जोड़ दिया जाता है, तो व्यक्तिगत ID और उनके आगमन का क्रम समाप्त हो जाता है।
यहां हर पैनल उसके नीचे के सटीक SQL के साथ आता है। किसी अलग सिंबल या सत्र पर उन्हीं संदेशों को गिनने के लिए, Strasmore टर्मिनल पर सादे अंग्रेजी में प्रश्न पूछें।