تفاوت دادههای دفتر سفارشات MBO و MBP در معاملات
بررسی تفاوتهای فنی میان جریان دادههای MBO و MBP در بازارهای مالی. این مقاله به تحلیل ساختار رویدادها، هزینههای عملیاتی و کاربرد هر یک در تحلیل عمق بازار میپردازد.
دادههای دفتر سفارشات MBO در مقابل MBP، یک تفاوت بزرگ است که پشت یک برچسب کوچک پنهان شده است. دو فروشنده داده میتوانند هر دو محصولی با نام «Level 2» به شما بفروشند: MBP (بازار بر اساس قیمت) مجموع حجم موجود در هر سطح قیمتی را ارسال میکند، در حالی که MBO (بازار بر اساس سفارش) هر سفارش فردی را به عنوان یک رویداد مجزا با شناسه (ID) اختصاصی خود ارسال میکند. اولی خلاصهای از دفتر سفارشات است؛ دومی دفتری است که دفتر سفارشات از آن ساخته میشود و انتقال آن به ترافیک دادهای به مراتب سنگینتری نیاز دارد.
محتوای واقعی دادههای دفتر سفارشات MBP و MBO
MBP یا بازار بر اساس قیمت، عمق تجمیعشده بازار است. هر بهروزرسانی شامل یک سمت (خرید یا فروش)، یک سطح قیمتی، مجموع حجم نمایشدادهشده در آن سطح و گاهی تعداد سفارشهای پشت آن است. محصولی که با نام MBP-10 فروخته میشود، ده سطح قیمتی برتر در هر سمت را به شما میدهد؛ همان چیزی که در پلتفرمهای معاملاتی به صورت نردبان قیمت و در نمودارهای عمق بازار به صورت پلکانی دیده میشود.
MBO یا بازار بر اساس سفارش، یک جریان رویداد است. هر پیام یک سفارش را معرفی میکند: شناسه، سمت، قیمت، حجم نمایشدادهشده و آنچه برای آن رخ داده است. هیچچیز از پیش تجمیع نمیشود. اگر چهل سفارش در یک قیمت مشابه قرار داشته باشند، چهل پیام مجزا آنها را در آنجا ثبت میکند و شما باید هر چهل مورد را در حافظه نگه دارید تا بدانید مجموع آن سطح چقدر است.
ما در راهنمای دادههای بازار Level 1 در مقابل Level 2 توضیح دادهایم که برچسبهای سطح خردهفروشی در کارگزاریها به چه معناست. MBO و MBP نامهای دقیق برای محتوای داخل بستهای هستند که فروشنده آن را «Level 2» مینامد و نام طرحواره (Schema) همان چیزی است که ارزش پرسیدن دارد.
اقدامات پیام در فید MBO
فید MBO طبقهبندی اقداماتی است که روی شناسههای سفارش اعمال میشود. چهار مورد، بیشترین حجم ترافیک را به خود اختصاص میدهند:
- افزودن (Add): یک سفارش جدید با یک شناسه جدید به دفتر سفارشات در یک قیمت اضافه میشود.
- اصلاح (Modify): یک شناسه موجود، قیمت یا حجم خود را تغییر میدهد. افزایش حجم یا تغییر قیمت، سفارش را به انتهای صف در سطح جدید میفرستد؛ کاهش حجم معمولاً جایگاه سفارش را حفظ میکند.
- لغو (Cancel): یک شناسه به طور کامل یا بخشی از آن از دفتر سفارشات خارج میشود.
- معامله یا تکمیل (Trade or fill): یک سفارش تهاجمی با یک یا چند شناسه موجود در دفتر سفارشات اجرا شده و باعث کاهش یا حذف آنها میشود.
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% از پیامها بهترین قیمت خرید (Bid) را به قیمت دیگری تغییر دادند، 17.4% حجم را در قیمت خرید بدون تغییر افزایش دادند، 12% حجم را در قیمت خرید بدون تغییر کاهش دادند و 53% قیمت خرید را بدون تغییر گذاشتند در حالی که سمت دیگر بازار حرکت کرد. هر گروه، یک بیانیه خالص درباره یک سطح قیمتی است. هیچکدام نامی از یک سفارش نمیبرند و هیچ محاسباتی نمیتواند شناسه ازدسترفته را بازیابی کند.
هر طرحواره به چه پرسشهایی پاسخ میدهد
MBP-10 به پرسشهایی که با «چه مقدار حجم وجود داشت» مطرح میشوند پاسخ میدهد: شکل نردبان قیمت، عدم تعادل دفتر سفارشات، نقدینگی نزدیک به قیمت میانه و خودِ نمودار عمق بازار. سطوح تجمیعشده برای تمام این موارد کافی هستند.
MBO به پرسشهایی که با «چه اتفاقی برای این سفارش افتاد» مطرح میشوند پاسخ میدهد: هنگام ورود شما چه مقدار حجم جلوتر از سفارش شما بود، سفارشها قبل از لغو شدن چقدر دوام میآورند و احتمال اینکه یک سفارش منفعل در قیمت جاری قبل از حرکت قیمت معامله شود چقدر است. این مقادیر در فرم تجمیعشده وجود ندارند و جمع کردن سفارشها در یک مجموع سطحی، توالیای که آنها را تعریف میکرد از بین میبرد.
جایگاه در صف، بارزترین مثال است و تنها در اولویت قیمت-زمان در مقابل تطبیق تناسبی معنا پیدا میکند، جایی که ترتیب ورود تعیین میکند چه کسی زودتر معامله کند. آنچه این موضوع را مهم میکند، حجم معاملات (Prints) است: یک سطح با بسیاری از معاملات کوچک پر میشود، نه یک معامله بزرگ.
کد دقیق 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 سهم (Odd lot)، 92.3% از کل معاملات آن بازه را تشکیل دادند و بزرگترین دسته موجود، یعنی 1000 or more shares، سهم 0.1% را داشت. اگر چنین معاملاتی به سطحی ارسال شود که 4000 سهم را نمایش میدهد، سفارشی که آخرین نفر به صف پیوسته است میتواند دهها معامله را بدون اجرا شدن پشت سر بگذارد. MBP به شما عدد 4000 را نشان میدهد، اما MBO به شما صف را نشان میدهد.
هیچکدام از این طرحوارهها حجم پنهان را نشان نمیدهند. یک سفارش کوه یخی (Iceberg order) بخش کوچکی را نمایش میدهد و هر بار که آن بخش پر شود، با یک شناسه جدید بازسازی میشود، بنابراین حجم ذخیره هرگز در هیچ پیامی ظاهر نمیشود.
بازسازی دفتر سفارشات از MBO یک ماشین حالت است
فید MBP پاسخ را به شما میدهد، اما فید MBO ورودیها را به شما میدهد و انتظار دارد که دقیقاً درست عمل کنید:
- از یک اسنپشات یا یک دفتر خالی به همراه پیام پاکسازی صرافی شروع کنید.
- هر اقدام افزودن، اصلاح، لغو و تکمیل را به ترتیب دقیق و با کلید شناسه سفارش اعمال کنید.
- یک شاخص دوم بر اساس سطح قیمت نگهداری کنید، زیرا استراتژی شما بر این اساس خوانده میشود.
- شماره توالی پیامها را زیر نظر داشته باشید و در صورت مفقود شدن هر پیام، از یک اسنپشات جدید دوباره همگامسازی کنید.
حالت شکست در اینجا بیصدا است. اگر یک پیام لغو را از دست بدهید، یک سفارش خیالی تا پایان جلسه در دفتر شما باقی میماند و آن سطح را به اشتباه بزرگتر نشان میدهد، بدون اینکه هیچ خطایی صادر شود. MBP بسیار ملایمتر تخریب میشود: هر بهروزرسانی، مجموع یک سطح را بازنویسی میکند، بنابراین یک مقدار خرابشده در عرض چند پیام با مقدار درست جایگزین میشود.
MBO همچنین تنها در فیدهای مستقیم صرافیها وجود دارد (یک دفتر برای هر صرافی)، که به معنای نیاز به اجرا و ادغام چندین فید است. نوار تجمیعشده (Consolidated tape) ذاتاً یک خلاصه است که در SIP در مقابل فیدهای مستقیم صرافی پوشش داده شده است.
هزینه پهنای باند برای جزئیات بیشتر
تعداد پیامها، صادقانهترین روش برای قیمتگذاری این تفاوت است. پنل زیر تعداد پیامهای بالای دفتر تجمیعشده را در مقابل معاملات واقعی در همان نیم ساعت برای پنج نماد معروف مقایسه میکند.
کد دقیق 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 سنگینترین ترافیک مظنه (Quote) به ازای هر معامله را داشت، با 9.6 پیام برای هر معامله و مجموع 510 هزار پیام در سی دقیقه. تفاوت بین این پنج نماد زیاد است: در پایین پنل، MSFT تنها 0.7 پیام مظنه به ازای هر معامله داشت، یعنی کمتر از یک پیام برای هر معامله. به یاد داشته باشید که این ستون چه چیزی را میشمارد: یک سطح قیمت در هر سمت، در فیدی که قبلاً تمام صرافیها را در یک بهترین قیمت خرید و فروش ادغام کرده است. یک محصول با عمق ده سطح، این عدد را چند برابر میکند و یک فید بر اساس سفارش، آن را باز هم بیشتر میکند، زیرا هر سفارش پشت هر سطح در هر صرافی، پیامهای افزودن، اصلاح و لغو خود را تولید میکند، فارغ از اینکه معامله شود یا خیر. همین محاسبات در مقیاس بزرگتر در حجم فید مظنه اختیار معامله دیده میشود.
کدام فید دفتر سفارشات برای یک استراتژی لازم است؟
بیشتر کارها با MBP-10 انجام میشود. نمودارهای عمق، ویژگیهای عدم تعادل، اندازهگیری نقدینگی در قیمت، مدلهای هزینه اجرا و تقریباً هر پرسش پژوهشی درباره اینکه چه مقدار حجم در کجا قرار داشته، از سطوح تجمیعشده و با کسری از حجم پیامها قابل پاسخگویی است.
MBO زمانی مورد نیاز است که پاسخ به یک سفارش خاص بستگی داشته باشد: جایگاه در صف، طول عمر سفارش، رفتار لغو سفارش و احتمال تکمیل منفعل در قیمت جاری. استراتژیای که موفقیت یا شکست آن به 200 سهم یا 20,000 سهم بودن در صف بستگی دارد، نمیتواند با دادههای تجمیعشده به نتیجه برسد و هزینه آن را در قالب حق اشتراک، پهنای باند، فضای ذخیرهسازی و مهندسی لازم برای حفظ صحت دفتر سفارشات بازسازیشده در طول روز میپردازد.
نحوه ساخت این پنلها
- فید پشت هر پنل، بالای دفتر تجمیعشده (یک سطح قیمت در هر سمت) به اضافه نوار معاملات است. این یک فید عمق یا فید بر اساس سفارش نیست، بنابراین این پنلها استدلال حجم پیام را نشان میدهند نه نمونهبرداری از خودِ MBO.
- بازهها به یک تاریخ ثابت در گذشته محدود شدهاند: 16 ژوئن 2026، از ساعت 10:00 تا 10:30 صبح به وقت ET، که به صورت 14:00 تا 14:30 UTC ذخیره شده است. بازههای ثابت باعث پایداری اعداد در بازسازیهای مجدد میشوند.
- پنل طبقهبندی، هر پیام را نسبت به پیام قبلی در توالی برچسبگذاری میکند. این پنل نمیتواند لغو را از تکمیل جدا کند، که همان محدودیت دقیق توصیفشده در این مطلب است.
پرسشهای متداول
تفاوت دادههای بازار MBO و MBP چیست؟
MBP (بازار بر اساس قیمت)، حجم نمایشدادهشده در هر سطح قیمتی را تجمیع کرده و یک بهروزرسانی برای هر سطح ارسال میکند. MBO (بازار بر اساس سفارش)، هر سفارش فردی را با شناسه اختصاصیاش به همراه رویدادهای افزودن، اصلاح، لغو و تکمیل مربوط به آن ارسال میکند.
آیا دادههای Level 2 همان دادههای MBO است؟
معمولاً خیر. «Level 2» در کارگزاریهای خردهفروشی تقریباً همیشه به معنای عمق تجمیعشده است، یعنی MBP با پنج تا بیست سطح قیمتی. تعداد کمی از فروشندگان، فید بر اساس سفارش را با همان نام سطح بازاریابی میکنند، بنابراین نام طرحواره (Schema)، نه نام سطح، تعیینکننده چیزی است که دریافت میکنید.
فید MBO چقدر بزرگتر از فید MBP است؟
چندین مرتبه بزرگتر، که بسته به صرافی و نماد متفاوت است. تنها بالای دفتر تجمیعشده برای شلوغترین نماد در پنل بالا، 9.6 پیام به ازای هر معامله داشت. یک فید بر اساس سفارش، تمام پیامهای افزودن، اصلاح و لغو پشت هر سطح در هر صرافی را اضافه میکند، از جمله اکثریت بزرگی از سفارشها که هرگز معامله نمیشوند.
آیا میتوان دفتر سفارشات MBP را از دادههای MBO بازسازی کرد؟
بله، و این مسیر معمولِ کار است: اعمال هر رویداد سفارش روی دفتری که با شناسه سفارش کلیدگذاری شده و سپس انتشار مجموع سطوح. عکس این کار غیرممکن است: هنگامی که سفارشها در مجموع یک سطح جمع میشوند، شناسههای فردی و ترتیب ورود آنها از بین میرود.
هر پنل در اینجا به همراه کد SQL دقیق زیر آن ارائه شده است. برای شمارش همان پیامها روی یک نماد یا جلسه معاملاتی دیگر، پرسش خود را به زبان انگلیسی ساده در ترمینال Strasmore مطرح کنید.