Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

ההבדלים בין נתוני ספר פקודות מסוג MBO ל-MBP

השוואה בין נתוני MBO ל-MBP בספר הפקודות. הסבר על ההבדלים בין זרם פקודות בודדות לבין עומק שוק מצטבר לפי רמות מחיר, עלויות תפעול ודרישות רוחב פס לכל שיטה.

ההבדל בין נתוני ספר פקודות מסוג MBO ל-MBP הוא הבחנה מהותית המסתתרת מאחורי תווית אחת. שני ספקים יכולים למכור לכם מוצר שנקרא "Level 2": בעוד ש-MBP (Market By Price) משדר את סך הכמות הממתינה בכל רמת מחיר, MBO (Market By Order) משדר כל פקודה בודדת כאירוע נפרד עם מזהה (ID) משלו. האחד הוא סיכום של הספר; השני הוא ספר החשבונות שממנו הספר נבנה, והוא דורש רוחב פס גדול בסדרי גודל כדי לשאת את התעבורה.

מה מכילים בפועל נתוני ספר פקודות מסוג MBP ו-MBO

MBP, או Market By Price, הוא עומק שוק מצטבר. כל עדכון מציין צד, רמת מחיר, סך הכמות המוצגת שם, ולעיתים את מספר הפקודות שמאחוריה. מוצר שנמכר כ-MBP-10 מספק לכם את עשר רמות המחיר הטובות ביותר בכל צד – הסולם שמופיע בפלטפורמות מסחר והמדרגות בכל גרף עומק.

MBO, או Market By Order, הוא זרם אירועים. כל הודעה מציינת פקודה אחת: המזהה שלה, הצד, המחיר, הכמות המוצגת, ומה בדיוק קרה לה. דבר אינו מצטבר מראש. אם ארבעים פקודות ממתינות באותו מחיר, ארבעים הודעות נפרדות הציבו אותן שם, ועליכם להחזיק את כל הארבעים בזיכרון כדי לדעת מהו הסך הכולל של אותה רמה.

המדריך שלנו ל-נתוני שוק Level 1 מול Level 2 מכסה את המשמעות של תוויות השוק הקמעונאי אצל ברוקרים. MBO ו-MBP הם השמות המדויקים למה שנמצא בתוך ה"קופסה" כשספק אומר "Level 2", ושם הסכימה הוא הפרט שכדאי לברר.

פעולות ההודעה שזרם MBO נושא

זרם MBO הוא טקסונומיה של פעולות המיושמות על מזהי פקודות. ארבע פעולות מרכיבות את רוב התעבורה:

  • Add (הוספה): פקודה חדשה מצטרפת לספר במחיר מסוים עם מזהה חדש.
  • Modify (שינוי): מזהה קיים משנה מחיר או כמות. הגדלת כמות או שינוי מחיר שולחים את הפקודה לסוף התור ברמה החדשה; הפחתת כמות בדרך כלל שומרת על המיקום.
  • Cancel (ביטול): מזהה עוזב את הספר, במלואו או בחלקו.
  • Trade or fill (ביצוע): פקודה אגרסיבית מתבצעת מול מזהה אחד או יותר שממתינים בספר, מה שמקטין או מסיר אותם.

MBP אינו נושא אף אחת מהפעולות הללו. עדכון MBP הוא הצהרה על רמה: מחיר זה מכיל כעת כמות זו. בין אם הכמות יצאה עקב ביטול או עקב ביצוע, העדכון נראה זהה. הפאנל להלן מציג את המגבלה הזו בספר הדליל ביותר האפשרי, ה-Top of Book המאוחד, רמת מחיר אחת לכל צד ו-MBP-1 במינוח זה.

שאילתהשינויים ברצף הודעות ה-top-of-book (AAPL, 10:00 עד 10:30 שעון ET, 16 ביוני 2026)
ה-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)
Run this yourself

במהלך חצי השעה ההיא, 17.6% מההודעות הזיזו את ה-Bid הטוב ביותר למחיר אחר, 17.4% הוסיפו כמות ב-Bid ללא שינוי, 12% הסירו כמות ב-Bid ללא שינוי, ו-53% הותירו את ה-Bid ללא שינוי בזמן שהצד השני זז. כל קבוצה היא הצהרה נטו על רמת מחיר. אף אחת מהן לא מציינת פקודה, ושום פעולה חשבונית לא יכולה לשחזר את המזהה שחסר.

מה כל סכימה יכולה ומה היא לא יכולה לענות

MBP-10 עונה על שאלות בנוסח "כמה כמות הייתה שם": צורת הסולם, חוסר איזון בספר, נזילות הממתינה ליד מחיר האמצע, וגרף העומק עצמו. רמות מצטברות הן כל מה שצריך עבור אלו.

MBO עונה על שאלות בנוסח "מה קרה לפקודה הזו": כמה כמות ישבה לפניך כשהצטרפת, כמה זמן פקודות שורדות לפני שהן מתבטלות, וההסתברות שפקודה פסיבית ב-Touch תתבצע לפני שהמחיר יזוז. כמויות אלו אינן קיימות בצורה מצטברת, וסיכום פקודות לסך רמה משמיד את הרצף שהגדיר אותן.

מיקום בתור הוא הדוגמה המובהקת ביותר, והוא נושא משמעות רק תחת עדיפות מחיר-זמן מול התאמה פרו-ראטה, שבה סדר ההגעה קובע מי מתבצע ראשון. מה שגורם לזה להיות חשוב הוא גודל הביצוע (Print): רמה מתמלאת על ידי ביצועים קטנים רבים, לא על ידי ביצוע אחד גדול.

שאילתהתמהיל גודל עסקאות באותו טווח זמן (AAPL, 10:00 עד 10:30 שעון ET, 16 ביוני 2026)
ה-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)
Run this yourself

ביצועים מתחת ל-100 מניות, Odd Lot, היוו 92.3% מהעסקאות באותו חלון, והקבוצה הגדולה ביותר שנכחה, 1000 or more shares, היוו 0.1%. שדרו ביצועים בגודל כזה לרמה שמציגה 4,000 מניות, ופקודה שהצטרפה לתור אחרונה יכולה לשבת דרך עשרות ביצועים מבלי להתבצע. MBP מראה לכם את ה-4,000. MBO מראה לכם את התור.

אף סכימה לא מראה כמות נסתרת. פקודת Iceberg מציגה קצה קטן ומתרעננת עם מזהה חדש בכל פעם שהקצה מתמלא, כך שהרזרבה לעולם לא מופיעה באף הודעה.

בנייה מחדש של ספר מ-MBO היא מכונת מצבים

עדכון MBP מגיש לכם את התשובה. עדכון MBO מגיש לכם את הקלטים ומצפה מכם להיות מדויקים לחלוטין:

  1. התחילו מ-Snapshot, או מספר ריק בתוספת הודעת איפוס מהבורסה.
  2. החילו כל הוספה, שינוי, ביטול וביצוע לפי סדר רציף, ממופתח לפי מזהה פקודה.
  3. החזיקו אינדקס שני לפי רמת מחיר, שכן זה מה שהאסטרטגיה שלכם קוראת.
  4. עקבו אחר מספרי הרצף, ובצעו סנכרון מחדש מ-Snapshot טרי בכל פעם שאחד חסר.

מצב הכשל הוא שקט. החמיצו ביטול אחד ופקודה "רפאים" תשב בספר שלכם לשארית היום, ותנפח את אותה רמה, ללא שום התראה. MBP מתדרדר בצורה מתונה בהרבה: כל עדכון מצהיר מחדש על סך הרמה, כך שערך פגום נדרס בתוך הודעות ספורות.

MBO קיים רק בזרמים ישירים מהבורסות, ספר אחד לכל בורסה, מה שאומר הרצה ומיזוג של כמה מהם. ה-Consolidated Tape הוא סיכום לפי הגדרה, פיצול המכוסה ב-SIP מול זרמי בורסה ישירים.

מה העלות של הפירוט הנוסף ברוחב פס

ספירת הודעות היא הדרך ההוגנת לתמחר את ההבדל. הפאנל להלן סופר הודעות Top of Book מאוחדות מול ביצועים בפועל באותה חצי שעה עבור חמישה שמות מוכרים.

שאילתהיחס הודעות top-of-book מול עסקאות, 10:00 עד 10:30 שעון ET, 16 ביוני 2026
ה-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 DESC
Run this yourself

SPY נשא את תעבורת הציטוטים הכבדה ביותר לביצוע, 9.6 הודעות לכל עסקה ו-510 אלף הודעות בשלושים דקות. הפיזור בין חמשת השמות רחב: בתחתית הפאנל, MSFT הריץ 0.7 הודעות ציטוט לביצוע, פחות מהודעה אחת לכל עסקה. זכרו מה העמודה הזו סופרת: רמת מחיר אחת לכל צד, בזרם שכבר איחד כל בורסה ל-Best Bid and Offer יחיד. מוצר עומק של עשר רמות מכפיל זאת, וזרם לפי פקודה מכפיל זאת שוב, שכן כל פקודה מאחורי כל רמה בכל בורסה מייצרת הוספה משלה, שינויים משלה וביטול משלה, בין אם היא מתבצעת ובין אם לא. אותה חשבונאות מופיעה בקנה מידה גדול יותר ב-גודל זרם ציטוטי האופציות.

איזה זרם ספר פקודות אסטרטגיה צריכה?

רוב העבודה רצה על MBP-10. גרפי עומק, מאפייני חוסר איזון, מדידת נזילות במחיר, מודלים של עלות ביצוע, וכמעט כל שאלת מחקר על כמה כמות המתינה איפה, ניתנים למענה מרמות מצטברות, בשבריר מנפח ההודעות.

MBO הוא דרישה כאשר התשובה תלויה בפקודה ספציפית: מיקום בתור, אורך חיי פקודה, התנהגות ביטול, הסתברות לביצוע פסיבי ב-Touch. אסטרטגיה שחיה או מתה על השאלה האם היא נמצאת 200 מניות או 20,000 מניות עמוק בתור לא יכולה להגיע לשם מנתונים מצטברים, והיא משלמת על כך בדמי רישוי, רוחב פס, אחסון, והנדסה כדי לשמור על ספר משוחזר תקין לאורך כל היום.

כיצד נבנו פאנלים אלו
  • הזרם מאחורי כל פאנל הוא ה-Top of Book המאוחד, רמת מחיר אחת לכל צד, בתוספת סרט העסקאות. זהו אינו זרם עומק ואינו זרם לפי פקודה, לכן פאנלים אלו ממחישים את הטיעון של נפח ההודעות ולא דגימה של MBO עצמו.
  • החלונות מקובעים לתאריך עבר קבוע, 10:00 עד 10:30 בבוקר ET ב-16 ביוני 2026, המאוחסן כ-14:00 עד 14:30 UTC. חלונות מקובעים שומרים על המספרים יציבים לאורך רענון.
  • פאנל הסיווג מתייג כל הודעה מול הקודמת לה ברצף. הוא אינו יכול להפריד ביטול מביצוע, המגבלה המדויקת שפוסט זה מתאר.

שאלות נפוצות

מה ההבדל בין נתוני שוק MBO ל-MBP?

MBP, או Market By Price, מצטבר את הכמות המוצגת בכל רמת מחיר ושולח עדכון אחד לכל רמה. MBO, או Market By Order, שולח כל פקודה בודדת עם מזהה משלה, יחד עם אירועי הוספה, שינוי, ביטול וביצוע שקורים לה.

האם נתוני Level 2 הם אותם נתונים כמו MBO?

בדרך כלל לא. "Level 2" אצל ברוקר קמעונאי אומר כמעט תמיד עומק מצטבר, כלומר MBP עם חמש עד עשרים רמות מחיר. ספקים בודדים משווקים זרם לפי פקודה תחת אותו שם שכבה, לכן שם הסכימה, ולא שם השכבה, הוא שקובע מה מגיע בקו.

כמה גדול זרם MBO לעומת זרם MBP?

בסדרי גודל, המשתנים לפי בורסה ולפי נייר ערך. ה-Top of Book המאוחד לבדו רץ ב-9.6 הודעות לביצוע עבור השם העמוס ביותר בפאנל לעיל. זרם לפי פקודה מוסיף כל הוספה, שינוי וביטול מאחורי כל רמה בכל בורסה, כולל הרוב המכריע של פקודות שלעולם לא מתבצעות.

האם ניתן לבנות מחדש ספר MBP מנתוני MBO?

כן, וזהו הצינור הרגיל: החילו כל אירוע פקודה על ספר הממופתח לפי מזהה פקודה, ולאחר מכן פרסמו את סכומי הרמות. ההפך הוא בלתי אפשרי: ברגע שפקודות מסוכמות לסך רמה, המזהים הבודדים וסדר הגעתם אבדו.


כל פאנל כאן נשלח עם ה-SQL המדויק שמתחתיו. כדי לספור את אותן הודעות על נייר ערך או סשן אחר, שאלו את השאלה באנגלית פשוטה בטרמינל של Strasmore.