MBO आणि MBP ऑर्डर बुक डेटा म्हणजे काय?
MBO आणि MBP ऑर्डर बुक डेटा मधील फरक जाणून घ्या. मार्केट बाय ऑर्डर आणि मार्केट बाय प्राईस डेटाचे स्वरूप, त्यांचे कार्य आणि अंमलबजावणीसाठी लागणारा खर्च यांची सविस्तर माहिती येथे दिली आहे.
MBO आणि MBP ऑर्डर बुक डेटा हे एका लहान लेबलच्या मागे दडलेले एक मोठे अंतर आहे. दोन विक्रेते तुम्हाला "Level 2" नावाचे उत्पादन विकू शकतात: MBP (market by price) प्रत्येक किंमत पातळीवर (price level) असलेली एकूण संख्या पाठवते, तर MBO (market by order) प्रत्येक वैयक्तिक ऑर्डरला त्याच्या स्वतःच्या ID सह एक स्वतंत्र इव्हेंट म्हणून पाठवते. एक म्हणजे बुकचा सारांश आहे; दुसरे म्हणजे ते लेजर आहे ज्यावरून बुक तयार केले जाते आणि ते वाहून नेण्यासाठी अनेक पटींनी जास्त ट्रॅफिक लागते.
MBP आणि MBO ऑर्डर बुक डेटामध्ये नक्की काय असते
MBP, म्हणजेच market by price, हा एकत्रित (aggregated) डेटा असतो. प्रत्येक अपडेटमध्ये एक बाजू, किंमत पातळी, तिथे असलेली एकूण प्रदर्शित संख्या आणि कधीकधी त्यामागील ऑर्डर्सची संख्या दिली जाते. MBP-10 म्हणून विकले जाणारे उत्पादन तुम्हाला प्रत्येक बाजूला दहा सर्वोत्तम किंमत पातळ्या देते, जे ट्रेडिंग प्लॅटफॉर्ममधील लॅडर आणि प्रत्येक डेप्थ चार्टमधील पायऱ्या दर्शवते.
MBO, म्हणजेच market by order, हा इव्हेंटचा प्रवाह (event stream) आहे. प्रत्येक मेसेज एका ऑर्डरचे नाव सांगतो: त्याचा ID, बाजू, किंमत, प्रदर्शित संख्या आणि त्या ऑर्डरसोबत नेमके काय घडले. काहीही आधीच एकत्रित केलेले नसते. जर एकाच किमतीवर चाळीस ऑर्डर्स असतील, तर चाळीस स्वतंत्र मेसेज त्यांना तिथे ठेवतात आणि त्या पातळीवर एकूण किती संख्या आहे हे जाणून घेण्यासाठी तुम्हाला त्या चाळीस ऑर्डर्स मेमरीमध्ये ठेवाव्या लागतात.
आमचे Level 1 विरुद्ध Level 2 मार्केट डेटा मार्गदर्शक ब्रोकरकडे असलेल्या रिटेल टियर लेबल्सचा अर्थ स्पष्ट करते. जेव्हा एखादा विक्रेता "Level 2" म्हणतो, तेव्हा त्या बॉक्समध्ये काय असते याची अचूक नावे MBO आणि MBP आहेत, आणि स्कीमाचे नाव काय आहे हे विचारणे महत्त्वाचे असते.
MBO फीडमध्ये असणाऱ्या मेसेज ॲक्शन्स
MBO फीड हे ऑर्डर ID वर लागू केलेल्या क्रियांचे वर्गीकरण आहे. चार क्रिया बहुतेक ट्रॅफिक व्यापतात:
- Add: एक नवीन ऑर्डर नवीन ID सह एका किमतीला बुकमध्ये जोडली जाते.
- Modify: अस्तित्वात असलेला ID आपली किंमत किंवा संख्या बदलतो. संख्या वाढवणे किंवा किंमत बदलणे यामुळे ऑर्डर त्या नवीन पातळीवर रांगेच्या शेवटी जाते; संख्या कमी केल्यास सामान्यतः तिचे स्थान कायम राहते.
- Cancel: एक ID पूर्णपणे किंवा अंशतः बुकमधून बाहेर पडतो.
- Trade किंवा fill: एक आक्रमक ऑर्डर एका किंवा अधिक अस्तित्वात असलेल्या ID विरुद्ध एक्झिक्युट होते, ज्यामुळे त्यांची संख्या कमी होते किंवा ते बुकमधून निघून जातात.
MBP मध्ये यापैकी कोणतीही शब्दावली नसते. MBP अपडेट हे एका पातळीबद्दलचे विधान असते: या किमतीवर आता इतकी संख्या आहे. ती संख्या रद्द झाल्यामुळे (cancel) गेली की पूर्ण झाल्यामुळे (fill), अपडेट दिसायला सारखेच असते. खालील पॅनेल सर्वात पातळ बुकवर, म्हणजेच एकत्रित टॉप-ऑफ-बुकवर, ही मर्यादा दर्शवते, जिथे प्रत्येक बाजूला एक किंमत पातळी आणि या नामकरणानुसार 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% मेसेजेसनी सर्वोत्तम बिड (best bid) वेगळ्या किमतीवर हलवली, 17.4% ने न बदललेल्या बिडवर संख्या वाढवली, 12% ने न बदललेल्या बिडवर संख्या कमी केली आणि 53% ने बिड तशीच ठेवून दुसरी बाजू हलवली. प्रत्येक गट हा एका किंमत पातळीबद्दलचे निव्वळ विधान आहे. कोणीही ऑर्डरचे नाव घेत नाही आणि कोणतीही गणिती प्रक्रिया गहाळ झालेला ID पुन्हा मिळवू शकत नाही.
प्रत्येक स्कीमा काय उत्तरे देऊ शकतो आणि काय नाही
MBP-10 "तिथे किती संख्या होती" या प्रश्नांची उत्तरे देते: लॅडरचा आकार, बुक असंतुलन, मध्यभागाजवळ असलेली तरलता (liquidity), आणि स्वतः डेप्थ चार्ट. या सर्वांसाठी एकत्रित पातळ्या पुरेशा असतात.
MBO "या ऑर्डरचे काय झाले" या प्रश्नांची उत्तरे देते: तुम्ही सामील झालात तेव्हा तुमच्या पुढे किती संख्या होती, रद्द होण्यापूर्वी ऑर्डर्स किती काळ टिकतात आणि किंमत बदलण्यापूर्वी टचवर असलेली पॅसिव्ह ऑर्डर ट्रेड होण्याची शक्यता किती आहे. या राशी एकत्रित स्वरूपात अस्तित्वात नसतात आणि ऑर्डर्सची बेरीज करून पातळीची एकूण संख्या काढल्यास, त्यांना परिभाषित करणारा क्रम नष्ट होतो.
रांगेतील स्थान (Queue position) हे याचे सर्वात स्पष्ट उदाहरण आहे आणि ते केवळ price-time priority विरुद्ध pro-rata matching अंतर्गत अर्थपूर्ण ठरते, जिथे येण्याचा क्रम ठरवतो की आधी कोण ट्रेड करेल. प्रिंटची संख्या (print size) याला महत्त्वाचे बनवते: एक पातळी अनेक लहान एक्झिक्युशन्सद्वारे भरली जाते, एका मोठ्या एक्झिक्यूशनद्वारे नाही.
प्रत्येक आकड्यामागील अचूक 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 तुम्हाला ती रांग दाखवते.
कोणताही स्कीमा लपलेली संख्या (hidden size) दाखवत नाही. एक iceberg order एक लहान टोक दाखवते आणि प्रत्येक वेळी ते टोक भरल्यावर नवीन ID सह रिफ्रेश होते, त्यामुळे रिझर्व्ह कधीही कोणत्याही मेसेजमध्ये दिसत नाही.
MBO वरून बुक पुन्हा तयार करणे ही एक स्टेट मशीन आहे
MBP फीड तुम्हाला उत्तर देते. MBO फीड तुम्हाला इनपुट देते आणि तुम्ही अगदी अचूक असावे अशी अपेक्षा करते:
- स्नॅपशॉटपासून किंवा रिकाम्या बुकपासून आणि व्हेन्यूच्या क्लियर मेसेजपासून सुरुवात करा.
- प्रत्येक ॲड, मॉडिफाय, कॅन्सल आणि फिल ऑर्डर ID नुसार काटेकोर क्रमाने लागू करा.
- किंमत पातळीनुसार दुसरे इंडेक्स राखून ठेवा, कारण तुमची स्ट्रॅटेजी तेच वाचते.
- सिक्वेन्स नंबर्सवर लक्ष ठेवा आणि जेव्हा एखादा नंबर गहाळ असेल तेव्हा ताज्या स्नॅपशॉटवरून पुन्हा सिंक करा.
यातील अपयश शांतपणे घडते. एक कॅन्सल मेसेज गहाळ झाला तर एक फँटम ऑर्डर उर्वरित सत्रासाठी तुमच्या बुकमध्ये राहते, ज्यामुळे ती पातळी फुगते आणि कुठेही एरर येत नाही. MBP अधिक चांगल्या प्रकारे काम करते: प्रत्येक अपडेट पातळीची एकूण संख्या पुन्हा सांगते, त्यामुळे दूषित मूल्य काही मेसेजेसमध्ये ओव्हरराईट होते.
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 कोट मेसेजेस चालवले, जे प्रत्येक ट्रेडसाठी एका मेसेजपेक्षा कमी आहेत. लक्षात ठेवा की तो कॉलम काय मोजतो: प्रत्येक बाजूला एक किंमत पातळी, अशा फीडवर ज्याने आधीच प्रत्येक व्हेन्यूला एका सर्वोत्तम बिड आणि ऑफरमध्ये विलीन केले आहे. दहा-पातळीचे डेप्थ उत्पादन याला अनेक पटींनी वाढवते आणि प्रति-ऑर्डर फीड याला पुन्हा वाढवते, कारण प्रत्येक व्हेन्यूवर प्रत्येक पातळीच्या मागे असलेली प्रत्येक ऑर्डर स्वतःची ॲड, मॉडिफाय आणि कॅन्सल जनरेट करते, मग ती ट्रेड होवो किंवा न होवो. हेच गणित मोठ्या प्रमाणावर 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 द्वारे की (key) असलेल्या बुकवर लागू करा, त्यानंतर पातळीची एकूण संख्या प्रकाशित करा. उलट प्रक्रिया अशक्य आहे: एकदा ऑर्डर्सची बेरीज करून पातळीची एकूण संख्या काढली की, वैयक्तिक ID आणि त्यांचा येण्याचा क्रम नष्ट होतो.
येथील प्रत्येक पॅनेल त्याच्या खाली असलेल्या अचूक SQL सह येतो. वेगळ्या सिम्बॉल किंवा सत्रावर समान मेसेजेस मोजण्यासाठी, Strasmore टर्मिनलवर साधा प्रश्न विचारा.