Apa itu NBBO National Best Bid and Offer
NBBO adalah national best bid and offer, kuotasi saham terkonsolidasi yang harus dipenuhi atau dilampaui oleh broker Anda. Pelajari kecepatan pembaruannya melalui real tick data.
NBBO, atau national best bid and offer, adalah kuotasi terkonsolidasi untuk saham AS: harga tertinggi yang ditawarkan pembeli dan harga terendah yang diminta penjual, di seluruh bursa secara bersamaan. Ini adalah kuotasi yang ditampilkan aplikasi Anda dan menjadi tolok ukur yang harus dipenuhi atau dilampaui oleh broker Anda pada pesanan Anda. Setiap angka di bawah ini berasal dari catatan kuotasi asli, kueri terlampir.
Apa itu NBBO? Definisi sederhana
Saham AS tidak diperdagangkan di satu tempat. NYSE, Nasdaq, dan lebih dari selusin bursa lainnya masing-masing menjalankan order book untuk ticker yang sama, yang masing-masing memiliki bid dan ask terbaik sendiri. NBBO menggabungkan harga-harga tertinggi tersebut: bid tertinggi di mana pun, ask terendah di mana pun, berdampingan dengan jumlah saham yang tersedia di masing-masing bursa. Penggabungan ini dilakukan oleh securities information processors, atau SIPs — utilitas pasar yang dioperasikan bersama oleh bursa-bursa tersebut.
Dua detail penting perlu diperhatikan sejak awal. Bid dan ask dapat berada di dua bursa yang berbeda secara bersamaan. Selain itu, perubahan harga tidak selalu diperlukan untuk pembaruan: perubahan ukuran pada harga terbaik yang sama juga akan mencatat rekor baru. Trader menyebut dua harga terbaik tersebut sebagai the touch; celah di antara keduanya adalah bid-ask spread.
Cara membaca kuotasi NBBO: harga, ukuran, dan kecepatan
Berikut adalah sepuluh catatan NBBO berturut-turut untuk Coca-Cola (KO) pukul 13.30 waktu Eastern pada sesi penuh baru-baru ini — kuotasi nasional sebagaimana data tersebut diterima.
SQL tepat di balik setiap angka
WITH (
SELECT max(session_date)
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING regular_bars = 390
)
) AS last_session
SELECT substring(toString(toTimeZone(sip_timestamp, 'America/New_York')), 12, 12) AS et_time,
round((toUnixTimestamp64Nano(sip_timestamp) - min(toUnixTimestamp64Nano(sip_timestamp)) OVER ()) / 1e6, 2) AS elapsed_ms,
bid_size AS bid_shares,
toFloat64(bid_price) AS best_bid,
toFloat64(ask_price) AS best_ask,
ask_size AS ask_shares,
round((toFloat64(ask_price) - toFloat64(bid_price)) * 100, 1) AS spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'KO'
AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 13 HOUR + INTERVAL 30 MINUTE
AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 14 HOUR
AND bid_price > 0
AND ask_price > bid_price
ORDER BY sip_timestamp, sequence_number
LIMIT 10Baca baris pertama sebagai dua penawaran yang tersedia, tercatat pada 13:30:02.886 ET. Harga terbaik pembeli: $83.3 untuk 200 saham. Harga terbaik penjual: $83.31 untuk 200 saham. Selisih di antara keduanya adalah 1¢.
Jumlah saham tersebut adalah size at the touch — likuiditas yang ditampilkan pada dua harga terbaik. Pesanan yang lebih besar dari ukuran tersebut akan menghabiskan likuiditas itu dan mengisi sisanya pada harga berikutnya di book. Ukuran yang ditampilkan adalah batas minimum, bukan inventaris lengkap: minat lebih lanjut sering kali tidak ditampilkan pada atau di antara kedua harga tersebut, termasuk di dalam dark pools.
Sekarang baca baris-baris di bawahnya. Semua 10 catatan masuk dalam waktu 484.95 milidetik dari catatan pertama. Tidak ada jadwal tetap — SIP mempublikasikan data kapan pun pemenang berubah, dan salah satu dari empat peristiwa akan mencetak satu baris: bid yang lebih baik, ask yang lebih baik, perubahan jumlah saham pada salah satu harga terbaik, atau satu bursa menggantikan bursa lain di posisi teratas. Untuk tampilan sepanjang sesi, lihat analisis mendalam microstructure.
Apakah NBBO mencakup odd lot?
Umumnya, tidak. Kutipan nasional dibangun hanya dari minat round-lot. Pesanan untuk jumlah saham yang lebih sedikit dari round lot adalah odd lot: pesanan tersebut dapat berada di buku bursa dengan harga yang lebih baik daripada bid terbaik nasional, diperdagangkan di sana, namun tidak pernah muncul dalam NBBO.
Round lot tidak lagi dipatok rata pada seratus saham. Berdasarkan aturan kutipan Reg NMS SEC yang telah diamandemen, jumlah ini dibagi menjadi beberapa tingkatan berdasarkan harga saham: seratus saham hingga $250, empat puluh dari $250,01 hingga $1.000, sepuluh dari $1.000,01 hingga $10.000, dan satu untuk harga di atas itu. Tingkatan tersebut terlihat dalam tape — panel mengambil ukuran bid terkecil yang pernah muncul dalam kutipan konsolidasi untuk enam nama di berbagai rentang harga.
SQL tepat di balik setiap angka
WITH (
SELECT max(session_date)
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING regular_bars = 390
)
) AS last_session
SELECT ticker,
round(quantileDeterministic(0.5)(toFloat64(bid_price), toUInt64(sequence_number)), 2) AS share_price,
min(bid_size) AS smallest_quoted_size,
round(quantileDeterministic(0.5)(toFloat64(bid_size), toUInt64(sequence_number)), 0) AS median_bid_size
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('F', 'KO', 'NVDA', 'AAPL', 'SPY', 'AZO')
AND sip_timestamp >= toDateTime(last_session, 'America/New_York') + INTERVAL 10 HOUR
AND sip_timestamp < toDateTime(last_session, 'America/New_York') + INTERVAL 11 HOUR
AND bid_price > 0
AND bid_size > 0
GROUP BY ticker
ORDER BY share_priceFord, dengan kutipan sekitar $13.9, tidak pernah menunjukkan bid yang lebih kecil dari 100 saham dalam jam tersebut; begitu pula Coca-Cola pada $84.18. Apple, pada $314.36, turun menjadi 40; AutoZone, pada $3030.52 per saham, turun menjadi 10, dengan median bid yang ditampilkan sebesar 10. Batas bawah mengikuti tingkatan harga. Minat odd-lot dengan harga yang lebih baik dapat berada di dalam spread yang dipublikasikan tanpa ditampilkan, sehingga harga terbaik yang tersedia sebenarnya terkadang lebih baik daripada yang tersirat dalam NBBO.
Mengapa kuotasi di aplikasi Anda tidak sepenuhnya NBBO live
Kuotasi yang Anda baca di ponsel telah melewati jalur: matching engine bursa → SIP → vendor data → broker → layar. Setiap rekaman membawa dua penanda waktu — stempel bursa itu sendiri dan stempel SIP saat publikasi — dan celah di antara keduanya adalah langkah konsolidasi.
SQL tepat di balik setiap angka
WITH (
SELECT max(session_date)
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING regular_bars = 390
)
) AS last_session
SELECT ticker,
round(quantileDeterministic(0.5)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS median_micros,
round(quantileDeterministic(0.99)((toUnixTimestamp64Nano(sip_timestamp) - toUnixTimestamp64Nano(participant_timestamp)) / 1000.0, toUInt64(sequence_number)), 1) AS p99_micros
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO')
AND sip_timestamp >= toDateTime(last_session, 'America/New_York')
AND sip_timestamp < toDateTime(last_session + 1, 'America/New_York')
AND participant_timestamp > toDateTime64('2020-01-01 00:00:00', 9)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO'], ticker)Median celah pada SPY terukur 229.1 microseconds — sepersejuta detik — dan Apple 203.4. Bagian ekor lebih besar daripada bagian tengah: persentil ke-sembilan puluh sembilan Nvidia berada pada 536.9 microseconds. SIP tidak lambat dalam pengertian manusia. Dua hal lain yang lambat.
Pertama, data Anda mungkin sengaja ditunda. Feed kuotasi gratis di aplikasi ritel dan situs charting umumnya ditunda lima belas menit berdasarkan ketentuan lisensi bursa; streaming real-time adalah hak akses berbayar.
Kedua, firma profesional tidak menunggu SIP. Setiap bursa juga menjual feed langsung dari matching engine mereka sendiri. Firma yang melakukan kolokasi membacanya dan menghitung best bid and offer mereka sendiri sebelum versi peristiwa tersebut dari SIP tiba — keunggulan beberapa microseconds, yang sangat menentukan bagi market maker yang memberikan kuotasi di kedua sisi sepanjang hari.
Seberapa sering NBBO diperbarui? Saham likuid vs saham tidak likuid
Setiap saham yang terdaftar memiliki NBBO, dan tingkat pembaruannya merupakan pengukur likuiditas. Tabel ini merata-ratakan sesi penuh terbaru untuk empat nama yang diperdagangkan secara intensif dan dua saham small cap yang tidak likuid — Nathan's Famous (NATH) dan Seneca Foods (SENEA).
SQL tepat di balik setiap angka
SELECT ticker,
uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS sessions,
round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) AS avg_updates_per_session,
round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) / 1e6, 3) AS avg_updates_per_session_m,
round((count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) / min(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) OVER (), 0) AS multiple_of_quietest
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH'], ticker)SPY, ETF S&P 500, rata-rata mencatat 3.428 juta pembaruan NBBO per sesi — 2031 kali lipat dari nama paling tenang di tabel. Nvidia rata-rata 1.85 juta, Apple 1.336 juta. Kemudian terjadi penurunan tajam: Seneca Foods mencatat 8097 pembaruan dalam rata-rata sesi, Nathan's Famous 1688. Tidak ada orang yang membaca layar dengan kecepatan SPY: NBBO adalah feed yang dibangun untuk perangkat lunak.
Kapan NBBO memperbarui paling cepat: pembukaan vs. tengah hari
Tingkat pembaruan juga memiliki ritme harian. Grafik ini merata-ratakan pembaruan NBBO Apple per menit dalam kelompok waktu setengah jam (Waktu Timur); kolom terakhir membaca setiap kelompok sebagai persentase dari kelompok pukul 9:30.
SQL tepat di balik setiap angka
SELECT et_time,
avg_updates_per_minute,
round(100 * avg_updates_per_minute / maxIf(avg_updates_per_minute, et_time = '09:30') OVER (), 1) AS pct_of_opening_bucket
FROM (
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(count() / (uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) * 30)) AS avg_updates_per_minute
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
)
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
)
ORDER BY et_timeDalam setengah jam setelah lelang pembukaan, kuotasi nasional Apple diperbarui rata-rata 5657 kali per menit, dan kelompok pukul 10:00 mempertahankan kecepatan tersebut pada 89.5% darinya. Volume data kemudian menipis menjelang tengah hari: kelompok pukul 2:30 mencatat 1973 pembaruan per menit, atau 34.9% dari kecepatan pembukaan. Periode pukul 3:30 menjelang penutupan hanya pulih sebagian — 3345 per menit, atau 59.1% dari pembukaan — sehingga kuotasi terpadat terjadi pada jam pertama, bukan jam terakhir. Di luar jam reguler, data hampir senyap, turun menjadi 17 pembaruan per menit setelah bel pukul 4:00 sore.
Apa yang terjadi pada NBBO selama trading halt?
Ketika sebuah saham bergerak terlalu jauh dan terlalu cepat, aturan limit-up/limit-down akan menghentikannya selama lima menit. Quote tidak menghilang dan tidak tetap aktif: pembaruannya terhenti, dan catatan terakhir sebelum jeda adalah tampilan yang tersisa di layar Anda. GameStop (GME) mengalami jeda tersebut tepat setelah pukul 11:00 pagi waktu Eastern pada 14 Mei 2024; panel tersebut melacak pembaruan quote dan trade-nya, menit demi menit, selama periode tersebut.
SQL tepat di balik setiap angka
WITH spine AS (
SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
),
gme_trades AS (
SELECT toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_min,
sum(transactions) AS trades
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
AND window_start >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
AND window_start < toDateTime('2024-05-14 11:12:00', 'America/New_York')
GROUP BY et_min
),
gme_quotes AS (
SELECT toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_min,
count() AS nbbo_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'GME'
AND sip_timestamp >= toDateTime('2024-05-14 10:57:00', 'America/New_York')
AND sip_timestamp < toDateTime('2024-05-14 11:12:00', 'America/New_York')
GROUP BY et_min
)
SELECT formatDateTime(spine.et_min, '%H:%i') AS et_time,
ifNull(gme_quotes.nbbo_updates, 0) AS nbbo_updates,
toUInt64(ifNull(gme_trades.trades, 0)) AS trades
FROM spine
LEFT JOIN gme_quotes ON gme_quotes.et_min = spine.et_min
LEFT JOIN gme_trades ON gme_trades.et_min = spine.et_min
ORDER BY spine.et_minPada menit sebelum jeda, 11:00, consolidated quote GameStop diperbarui sebanyak 4511 kali terhadap 12419 trade. Kemudian kedua kolom tersebut menurun drastis: 0 catatan quote pada 11:02 dan 0 pada 11:03, dengan 0 trade yang sesuai — sebuah quote yang berhenti bergerak, pada saham yang berhenti diperdagangkan. Quoting kembali muncul pada 11:06, menit pembukaan kembali, dengan 4155 pembaruan dan 14007 trade, yang merupakan menit trade terberat dalam tabel. NBBO terakhir dari saham yang terhenti adalah fosil, bukan harga yang dapat diperdagangkan; sesi GameStop Januari 2021 menunjukkan dampak dari rangkaian jeda tersebut terhadap tape.
Mengapa broker Anda harus mengisi order pada NBBO atau lebih baik
NBBO adalah tolok ukur regulasi. Regulation NMS — buku aturan struktur pasar SEC yang diadopsi pada dua ribu lima — memuat aturan perlindungan order, Rule 611: sebuah venue tidak boleh mengeksekusi pada harga yang lebih buruk daripada quote terlindungi yang ditampilkan di bursa lain. Broker juga berkewajiban memberikan best execution kepada nasabah, yang diukur terhadap NBBO: market buy harus terisi pada national best ask atau lebih rendah, dan market sell pada national best bid atau lebih tinggi.
Kebanyakan pembaca ritel melewatkan hal ini: market order Anda biasanya tidak pernah mencapai bursa. Sebagian besar flow marketable ritel diarahkan ke wholesaler — market maker off-exchange yang membayar untuk hak mengisi order tersebut — dan dieksekusi secara internal, lalu dicatat pada fasilitas pelaporan off-exchange. NBBO tetap mengatur mereka: wholesaler harus menyamai atau mengalahkan quote nasional pada saat eksekusi, dan bersaing mendapatkan flow dengan mengalahkannya — mengisi fraksi satu sen di dalam spread, yang dikenal sebagai price improvement. NBBO adalah harga referensi, bukan venue; tipe order yang Anda pilih menentukan apakah Anda akan melewati spread atau tidak.
FAQ
Apakah NBBO mencakup odd lots?
Tidak. Kuotasi nasional disusun hanya dari kuotasi round-lot. Reg NMS mengategorikan round lot berdasarkan harga — seratus saham di bawah $250, hingga satu saham di atas $10.000. Bid terkecil yang muncul di tape untuk Ford di atas adalah 100 saham, dibandingkan 10 untuk AutoZone, yang harga sahamnya jauh lebih mahal. Odd lots dengan harga yang lebih baik berada di dalam spread yang dipublikasikan tanpa ditampilkan.
Mengapa kuotasi di aplikasi broker saya berbeda dengan NBBO live?
Ada dua alasan, dan keduanya bukan karena SIP. Feed retail gratis umumnya tertunda lima belas menit berdasarkan aturan lisensi bursa kecuali Anda membayar untuk real-time. Selain itu, data konsolidasi adalah snapshot yang dipublikasikan: langkah konsolidasi tercatat 229.1 mikrodetik pada median di SPY, sementara perusahaan yang menggunakan feed langsung dari bursa melihat peristiwa tersebut lebih cepat.
Apa yang terjadi pada NBBO saat saham dihentikan (halted)?
NBBO membeku. Selama jeda limit-up/limit-down lima menit GameStop di atas, tape membawa 0 pembaruan kuotasi pada 11:03 dan 0 trade. Kuotasi terakhir tetap ada di layar tetapi tidak dapat diperdagangkan; lelang pembukaan kembali akan menetapkan kuotasi berikutnya.
Apakah NBBO ada setelah jam perdagangan (after hours)?
Ya. Kuotasi konsolidasi mengalir dari pukul 4:00 pagi hingga 8:00 malam ET. Jadi, kuotasi nasional tersedia selama perdagangan premarket dan after-hours — dengan kecepatan yang jauh lebih rendah dibanding siang hari: 65 pembaruan Apple per menit pada bucket premarket terakhir dibandingkan 5657 setelah pembukaan.
Catatan Data: jendela dan filter
Rolling windows berakhir tiga hari sebelum pembuatan (terdapat lag ingest singkat di bagian depan feed) dan hanya menghitung sesi penuh — hari-hari di mana SPY mencetak seluruh tiga ratus sembilan puluh bar menit jam reguler. Panel Coca-Cola mengecualikan catatan one-sided dan crossed; panel penghitungan mengambil setiap catatan apa adanya (pasar locked dan crossed mencakup catatan yang dikecualikan). Panel GameStop dipatok pada tanggal tetap, dengan bar menit SPY sebagai sumbu waktu, sehingga menit yang dijeda muncul sebagai nol.
Setiap panel dikirimkan bersama SQL yang menghasilkannya — buka salah satu, ganti dengan ticker Anda sendiri, dan hitung pembaruan NBBO-nya di terminal Strasmore.