Perbedaan Data Order Book MBO dan MBP dalam Trading
Memahami perbedaan data MBO dan MBP untuk order book. Analisis mendalam mengenai aliran event per order versus agregasi harga, fungsi, serta biaya operasional infrastrukturnya.
Data order book MBO vs MBP adalah perbedaan besar yang tersembunyi di balik label kecil. Dua vendor dapat menjual produk yang sama-sama disebut "Level 2": MBP (market by price) mengirimkan total size yang ada di setiap level harga, sementara MBO (market by order) mengirimkan setiap order individu sebagai event tersendiri dengan ID unik. Yang satu adalah ringkasan dari book; yang lain adalah buku besar (ledger) tempat book tersebut dibangun, dan membutuhkan trafik yang jauh lebih besar untuk mengirimkannya.
Apa isi sebenarnya dari data order book MBP dan MBO
MBP, market by price, adalah kedalaman pasar yang diagregasi. Setiap pembaruan menyebutkan sisi, level harga, total size yang ditampilkan di sana, dan terkadang jumlah order di belakangnya. Produk yang dijual sebagai MBP-10 memberikan sepuluh level harga terbaik di setiap sisi, yaitu ladder di platform trading dan tangga di setiap chart kedalaman pasar.
MBO, market by order, adalah aliran event. Setiap pesan menyebutkan satu order: ID-nya, sisi, harga, size yang ditampilkan, dan apa yang baru saja terjadi padanya. Tidak ada yang diagregasi sebelumnya. Jika empat puluh order berada di harga yang sama, empat puluh pesan terpisah menempatkan mereka di sana, dan Anda harus menyimpan keempat puluh order tersebut di memori untuk mengetahui total level tersebut.
Panduan data pasar Level 1 vs Level 2 kami membahas arti label tingkat ritel di broker. MBO dan MBP adalah nama yang tepat untuk apa yang ada di dalam kotak ketika vendor menyebut "Level 2", dan nama skema adalah hal yang perlu ditanyakan.
Aksi pesan yang dibawa oleh feed MBO
Feed MBO adalah taksonomi aksi yang diterapkan pada ID order. Empat aksi membawa sebagian besar trafik:
- Add: order baru bergabung ke dalam book di suatu harga dengan ID baru.
- Modify: ID yang sudah ada mengubah harga atau size. Menaikkan size atau mengubah harga akan mengirim order ke antrean paling belakang di level baru tersebut; mengurangi size biasanya mempertahankan posisinya.
- Cancel: ID keluar dari book, baik sebagian maupun seluruhnya.
- Trade atau fill: order agresif dieksekusi terhadap satu atau lebih ID yang ada, sehingga mengurangi atau menghapus order tersebut.
MBP tidak membawa kosakata tersebut. Pembaruan MBP adalah pernyataan tentang suatu level: harga ini sekarang memiliki size sekian. Apakah size tersebut berkurang karena cancel atau karena fill, pembaruan tersebut terlihat identik. Panel di bawah menunjukkan limit tersebut pada book yang paling tipis, yaitu consolidated top of book, satu level harga per sisi dan MBP-1 dalam penamaan ini.
SQL tepat di balik setiap angka
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)Selama setengah jam tersebut, 17.6% pesan memindahkan bid terbaik ke harga yang berbeda, 17.4% menambahkan size pada bid yang tidak berubah, 12% menghapus size pada bid yang tidak berubah, dan 53% membiarkan bid tetap sementara sisi lainnya bergerak. Setiap grup adalah pernyataan bersih tentang suatu level harga. Tidak ada yang menyebutkan order, dan tidak ada aritmatika yang dapat memulihkan ID yang hilang.
Apa yang dapat dan tidak dapat dijawab oleh setiap skema
MBP-10 menjawab pertanyaan yang dirumuskan sebagai "berapa size yang ada di sana": bentuk ladder, ketidakseimbangan book, likuiditas yang ada di dekat mid, dan chart kedalaman pasar itu sendiri. Level yang diagregasi adalah semua yang dibutuhkan untuk hal-hal tersebut.
MBO menjawab pertanyaan yang dirumuskan sebagai "apa yang terjadi pada order ini": berapa size yang ada di depan Anda saat Anda bergabung, berapa lama order bertahan sebelum dibatalkan, dan probabilitas bahwa order pasif di touch akan tereksekusi sebelum harga bergerak menjauh. Kuantitas tersebut tidak ada dalam bentuk agregat, dan menjumlahkan order ke dalam total level akan menghancurkan urutan yang mendefinisikannya.
Posisi antrean adalah contoh paling tajam, dan hanya memiliki makna di bawah prioritas harga-waktu versus pencocokan pro-rata, di mana urutan kedatangan menentukan siapa yang tereksekusi lebih dulu. Yang membuatnya penting adalah size print: suatu level diisi oleh banyak eksekusi kecil, bukan satu eksekusi besar.
SQL tepat di balik setiap angka
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)Print di bawah 100 saham, yaitu odd lot, mencakup 92.3% dari total trade dalam jendela waktu tersebut, dan bucket terbesar yang ada, 1000 or more shares, mencakup 0.1%. Jika feed mengirimkan size tersebut ke level yang menampilkan 4.000 saham, maka order yang bergabung di antrean terakhir bisa bertahan melalui puluhan eksekusi tanpa tereksekusi. MBP menunjukkan 4.000 tersebut. MBO menunjukkan antreannya.
Tidak ada skema yang menunjukkan hidden size. Iceberg order menampilkan bagian kecil (tip) dan diperbarui dengan ID baru setiap kali tip tersebut terisi, sehingga cadangan (reserve) tidak pernah muncul dalam pesan apa pun.
Membangun kembali book dari MBO adalah state machine
Feed MBP memberikan jawabannya kepada Anda. Feed MBO memberikan inputnya dan mengharapkan Anda untuk benar-benar tepat:
- Mulai dari snapshot, atau dari book kosong ditambah pesan clear dari bursa.
- Terapkan setiap add, modify, cancel, dan fill dalam urutan yang ketat, berdasarkan ID order.
- Pertahankan indeks kedua berdasarkan level harga, karena itulah yang dibaca oleh strategi Anda.
- Perhatikan nomor urut, dan lakukan sinkronisasi ulang dari snapshot baru setiap kali ada yang hilang.
Mode kegagalan bersifat senyap. Jika satu cancel terlewat, order hantu akan tetap ada di book Anda selama sisa sesi, menggelembungkan level tersebut, tanpa ada pengecualian yang muncul di mana pun. MBP terdegradasi dengan jauh lebih halus: setiap pembaruan menyatakan kembali total level, sehingga nilai yang rusak akan ditimpa dalam beberapa pesan.
MBO juga hanya tersedia pada feed langsung dari bursa, satu book per bursa, yang berarti Anda harus menjalankan dan menggabungkan beberapa feed. Consolidated tape adalah ringkasan berdasarkan konstruksi, sebuah pemisahan yang dibahas dalam SIP versus feed bursa langsung.
Berapa biaya bandwidth untuk detail tambahan tersebut
Jumlah pesan adalah cara jujur untuk menentukan harga perbedaannya. Panel di bawah menghitung pesan consolidated top-of-book dibandingkan dengan print aktual selama setengah jam yang sama untuk lima nama besar.
SQL tepat di balik setiap angka
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 membawa trafik quote terberat per print, 9.6 pesan untuk setiap trade dan 510 ribu pesan dalam tiga puluh menit. Spread di antara kelima nama tersebut lebar: di bagian bawah panel, MSFT menjalankan 0.7 pesan quote per print, lebih sedikit dari satu pesan untuk setiap trade. Ingat apa yang dihitung kolom tersebut: satu level harga per sisi, pada feed yang telah menggabungkan setiap bursa menjadi satu bid dan offer terbaik. Produk kedalaman sepuluh level akan melipatgandakannya, dan feed per-order akan melipatgandakannya lagi, karena setiap order di belakang setiap level di setiap bursa menghasilkan add-nya sendiri, modify-nya sendiri, dan cancel-nya sendiri, terlepas dari apakah order tersebut tereksekusi atau tidak. Aritmatika yang sama muncul dalam skala yang lebih besar di ukuran feed quote opsi.
Feed order book mana yang dibutuhkan oleh suatu strategi?
Sebagian besar pekerjaan berjalan pada MBP-10. Chart kedalaman, fitur ketidakseimbangan, pengukuran likuiditas-pada-harga, model biaya eksekusi, dan hampir setiap pertanyaan riset tentang berapa banyak size yang ada di mana, dapat dijawab dari level yang diagregasi, dengan volume pesan yang jauh lebih kecil.
MBO adalah persyaratan ketika jawabannya bergantung pada order tertentu: posisi antrean, masa hidup order, perilaku cancel, probabilitas fill pasif di touch. Strategi yang hidup atau mati berdasarkan apakah ia berada 200 saham atau 20.000 saham di dalam antrean tidak bisa mencapainya dari data agregat, dan strategi tersebut harus membayar biaya lisensi, bandwidth, penyimpanan, dan rekayasa untuk menjaga agar book yang direkonstruksi tetap akurat sepanjang hari.
Bagaimana panel ini dibuat
- Feed di balik setiap panel adalah consolidated top of book, satu level harga per sisi, ditambah trade tape. Ini bukan feed kedalaman dan bukan feed per-order, jadi panel ini mengilustrasikan argumen volume pesan daripada mengambil sampel MBO itu sendiri.
- Jendela waktu dipatok pada tanggal masa lalu yang tetap, 10:00 hingga 10:30 pagi ET pada 16 Juni 2026, disimpan sebagai 14:00 hingga 14:30 UTC. Jendela waktu yang dipatok menjaga angka tetap stabil di seluruh regenerasi.
- Panel klasifikasi melabeli setiap pesan terhadap pesan sebelumnya dalam urutan. Panel ini tidak dapat memisahkan cancel dari fill, batasan tepat yang dijelaskan postingan ini.
FAQ
Apa perbedaan antara data pasar MBO dan MBP?
MBP, market by price, mengagregasi size yang ditampilkan di setiap level harga dan mengirimkan satu pembaruan per level. MBO, market by order, mengirimkan setiap order individu dengan ID-nya sendiri, beserta event add, modify, cancel, dan fill yang terjadi padanya.
Apakah data Level 2 sama dengan data MBO?
Biasanya tidak. "Level 2" di broker ritel hampir selalu berarti kedalaman yang diagregasi, jadi MBP dengan lima hingga dua puluh level harga. Beberapa vendor memasarkan feed per-order dengan nama tingkat yang sama, jadi nama skema, bukan nama tingkat, yang menentukan apa yang sampai di kabel.
Seberapa besar feed MBO dibandingkan dengan feed MBP?
Berlipat ganda, bervariasi menurut bursa dan simbol. Consolidated top of book saja berjalan pada 9.6 pesan per print untuk nama tersibuk di panel di atas. Feed per-order menambahkan setiap add, modify, dan cancel di belakang setiap level di setiap bursa, termasuk sebagian besar order yang tidak pernah tereksekusi.
Bisakah Anda membangun kembali book MBP dari data MBO?
Ya, dan itu adalah alur kerja yang normal: terapkan setiap event order ke book yang dikunci berdasarkan ID order, lalu publikasikan total level. Sebaliknya tidak mungkin dilakukan: setelah order dijumlahkan ke dalam total level, ID individu dan urutan kedatangannya hilang.
Setiap panel di sini dikirimkan dengan SQL yang tepat di bawahnya. Untuk menghitung pesan yang sama pada simbol atau sesi yang berbeda, ajukan pertanyaan dalam bahasa Inggris sederhana di terminal Strasmore.