NBBO là gì trong chứng khoán Mỹ
NBBO là báo giá hợp nhất giúp bạn tìm mức giá bid và ask tốt nhất trên thị trường. Tìm hiểu cách SIP cập nhật dữ liệu tick để tối ưu hóa lệnh giao dịch của bạn.
NBBO (National Best Bid and Offer) là báo giá hợp nhất cho một cổ phiếu tại Mỹ: bao gồm mức giá mua cao nhất và mức giá bán thấp nhất từ tất cả các sàn giao dịch cùng một lúc. Đây là mức giá hiển thị trên ứng dụng của bạn và là tiêu chuẩn mà môi giới phải đáp ứng hoặc vượt qua khi thực hiện lệnh của bạn. Mọi con số dưới đây đều được trích xuất từ hồ sơ báo giá thực tế, truy vấn đính kèm.
NBBO là gì? Định nghĩa bằng ngôn ngữ bình dân
Một cổ phiếu tại Mỹ không chỉ giao dịch tại một nơi duy nhất. NYSE, Nasdaq và hơn mười sàn giao dịch khác đều vận hành sổ lệnh cho cùng một ticker, mỗi nơi đều có mức giá bid và ask tốt nhất riêng. NBBO kết hợp các mức giá đó lại: mức bid cao nhất ở bất kỳ đâu, mức ask thấp nhất ở bất kỳ đâu, đặt cạnh nhau cùng với số lượng cổ phiếu tương ứng. Việc kết hợp này được thực hiện bởi các bộ xử lý thông tin chứng khoán, hay còn gọi là SIPs — các tiện ích thị trường do các sàn giao dịch cùng vận hành.
Có hai chi tiết quan trọng cần lưu ý. Giá bid và giá ask có thể nằm ở hai sàn giao dịch khác nhau cùng một lúc. Và một thay đổi về giá không phải là điều kiện bắt buộc để cập nhật: một thay đổi về khối lượng tại cùng một mức giá tốt nhất cũng sẽ tạo ra một bản ghi mới. Các nhà giao dịch gọi hai mức giá tốt nhất là the touch; khoảng cách giữa chúng là bid-ask spread.
Cách đọc báo giá NBBO: giá, quy mô và tốc độ
Dưới đây là mười bản ghi NBBO liên tiếp của Coca-Cola (KO) vào lúc 1:30 chiều giờ Eastern trong một phiên giao dịch gần đây — báo giá quốc gia theo thời gian thực.
Câu lệnh SQL chính xác đằng sau mỗi con số
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 10Hãy đọc hàng đầu tiên như hai mức giá chào sẵn, được ghi nhận lúc 13:30:02.886 ET. Mức giá mua tốt nhất: $83.3 cho 200 cổ phiếu. Mức giá bán tốt nhất: $83.31 cho 200 cổ phiếu. Khoảng cách giữa chúng là 1¢.
Số lượng cổ phiếu là size at the touch — thanh khoản hiển thị tại hai mức giá tốt nhất. Một lệnh lớn hơn quy mô đó sẽ khớp hết mức giá hiện tại và phần còn lại sẽ khớp ở các mức giá tiếp theo trong sổ lệnh. Quy mô hiển thị chỉ là mức tối thiểu, không phải toàn bộ lượng hàng tồn kho: thường có nhiều lệnh khác không hiển thị nằm tại hoặc giữa hai mức giá này, bao gồm cả trong dark pools.
Bây giờ hãy đọc các hàng tiếp theo. Tất cả 10 bản ghi đều xuất hiện trong vòng 484.95 mili giây kể từ bản ghi đầu tiên. Không có lịch trình cố định — SIP công bố dữ liệu bất cứ khi nào có sự thay đổi về giá tốt hơn, và một trong bốn sự kiện sau sẽ tạo ra một hàng mới: giá bid tốt hơn, giá ask tốt hơn, thay đổi số lượng cổ phiếu tại một trong hai mức giá tốt nhất, hoặc một sàn giao dịch thay thế sàn khác ở mức giá dẫn đầu. Để xem cái nhìn chi tiết về cấu trúc vi mô, hãy xem microstructure deep-dive.
NBBO có bao gồm các lô lẻ (odd lots) không?
Hầu hết là không. Báo giá quốc gia chỉ được xây dựng từ các lệnh round-lot (lô tròn). Một lệnh có số lượng cổ phiếu ít hơn một lô tròn được gọi là odd lot (lô lẻ): lệnh này có thể nằm trên sổ lệnh của sàn giao dịch với mức giá tốt hơn mức giá mua tốt nhất quốc gia (NBBO), được khớp tại đó, nhưng không bao giờ xuất hiện trong NBBO.
Lô tròn hiện không còn cố định là 100 cổ phiếu. Theo các quy tắc báo giá Reg NMS sửa đổi của SEC, lô tròn được phân theo giá cổ phiếu: 100 cổ phiếu cho mức giá lên đến 250 USD, 40 cổ phiếu từ 250,01 USD đến 1.000 USD, 10 cổ phiếu từ 1.000,01 USD đến 10.000 USD, và một cổ phiếu cho mức giá cao hơn thế. Các phân lớp này có thể thấy trên tape — bảng dữ liệu sẽ lấy quy mô lệnh mua nhỏ nhất từng xuất hiện trong báo giá hợp nhất cho sáu mã cổ phiếu thuộc các phân lớp khác nhau.
Câu lệnh SQL chính xác đằng sau mỗi con số
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, đang báo giá quanh mức $13.9, không bao giờ hiển thị lệnh mua nhỏ hơn 100 cổ phiếu trong giờ đó; Coca-Cola ở mức $84.18 cũng vậy. Apple, ở mức $314.36, giảm xuống 40; AutoZone, ở mức $3030.52 một cổ phiếu, giảm xuống 10, với mức giá mua trung vị được hiển thị là 10. Sàn giao dịch theo dõi theo phân lớp giá. Các lệnh lô lẻ có giá tốt hơn có thể nằm trong spread đã công bố nhưng không được hiển thị, vì vậy mức giá tốt nhất thực tế đôi khi tốt hơn so với những gì NBBO thể hiện.
Tại sao báo giá trên ứng dụng của bạn không hoàn toàn khớp với NBBO trực tiếp
Báo giá bạn đọc trên điện thoại đã trải qua các bước: công cụ khớp lệnh của sàn giao dịch → SIP → nhà cung cấp dữ liệu → môi giới → màn hình. Mỗi bản ghi đều có hai mốc thời gian — dấu thời gian của sàn giao dịch và dấu thời gian của SIP khi công bố — và khoảng cách giữa chúng chính là bước hợp nhất dữ liệu.
Câu lệnh SQL chính xác đằng sau mỗi con số
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)Khoảng cách trung vị của SPY được đo ở mức 229.1 micro giây — một phần triệu giây — và của Apple là 203.4. Phần đuôi của phân phối dày hơn phần giữa: bách phân vị thứ 99 của Nvidia đạt mức 536.9 micro giây. SIP không hề chậm theo nghĩa thông thường của con người. Có hai yếu tố khác gây ra sự chậm trễ.
Thứ nhất, dữ liệu của bạn có thể bị trì hoãn một cách cố ý. Các nguồn báo giá miễn phí trên các ứng dụng bán lẻ và trang biểu đồ thường bị trì hoãn 15 phút theo các điều khoản cấp phép của sàn giao dịch; dữ liệu truyền trực tiếp (real-time streaming) là một dịch vụ phải trả phí.
Thứ hai, các công ty chuyên nghiệp không chờ đợi SIP. Mỗi sàn giao dịch cũng bán một nguồn dữ liệu trực tiếp từ công cụ khớp lệnh của chính họ. Một công ty đặt máy chủ tại sàn (colocated firm) sẽ đọc nguồn dữ liệu này và tự tính toán mức giá mua và bán tốt nhất của họ trước khi phiên bản tương ứng từ SIP được gửi đến — một lợi thế tính bằng micro giây, yếu tố quyết định đối với một market maker thực hiện báo giá cả hai chiều suốt cả ngày.
Tần suất cập nhật NBBO như thế nào? Cổ phiếu thanh khoản cao so với cổ phiếu thanh khoản thấp
Mọi cổ phiếu niêm yết đều có NBBO, và tốc độ cập nhật của nó là một thước đo thanh khoản. Bảng dưới đây tính trung bình các phiên giao dịch đầy đủ gần đây của bốn mã cổ phiếu được giao dịch nhiều và hai mã vốn hóa nhỏ có thanh khoản thấp — Nathan's Famous (NATH) và Seneca Foods (SENEA).
Câu lệnh SQL chính xác đằng sau mỗi con số
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 mô phỏng S&P 500, đạt trung bình 3.428 triệu cập nhật NBBO mỗi phiên — gấp 2031 lần mã có tần suất thấp nhất trong bảng. Nvidia đạt trung bình 1.85 triệu, Apple đạt 1.336 triệu. Sau đó là sự sụt giảm mạnh: Seneca Foods ghi nhận 8097 cập nhật trong một phiên trung bình, Nathan's Famous là 1688. Không một con người nào có thể đọc màn hình với tốc độ của SPY: NBBO là một luồng dữ liệu được xây dựng dành cho phần mềm.
Khi NBBO cập nhật nhanh nhất: phiên mở cửa so với giữa ngày
Tốc độ cập nhật cũng tuân theo nhịp độ hàng ngày. Biểu đồ hiển thị số lần cập nhật NBBO trung bình của Apple mỗi phút theo từng khung thời gian nửa giờ (Giờ miền Đông); cột cuối cùng tính mỗi khung thời gian theo tỷ lệ phần trăm so với khung giờ 9:30.
Câu lệnh SQL chính xác đằng sau mỗi con số
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_timeTrong nửa giờ sau phiên đấu giá mở cửa, báo giá quốc gia của Apple cập nhật trung bình 5657 lần mỗi phút, và khung giờ 10:00 duy trì tốc độ đó ở mức 89.5% so với mức mở cửa. Sau đó, lưu lượng dữ liệu giảm dần vào giữa ngày: khung giờ 2:30 đạt 1973 lần cập nhật mỗi phút, bằng 34.9% tốc độ mở cửa. Giai đoạn 3:30 trước khi đóng cửa chỉ phục hồi được một phần — đạt 3345 lần mỗi phút, bằng 59.1% so với lúc mở cửa — do đó hoạt động báo giá mạnh nhất nằm ở giờ đầu tiên chứ không phải giờ cuối cùng. Ngoài giờ giao dịch chính thức, dữ liệu gần như không có biến động, giảm xuống còn 17 lần cập nhật mỗi phút sau tiếng chuông 4:00 chiều.
Điều gì xảy ra với NBBO trong thời gian tạm ngừng giao dịch?
Khi giá cổ phiếu biến động quá mạnh trong thời gian ngắn, các quy tắc limit-up/limit-down sẽ tạm dừng giao dịch trong năm phút. Bảng giá không biến mất cũng không tiếp tục cập nhật: nó ngừng làm mới, và bản ghi cuối cùng trước khi tạm dừng là hình ảnh còn lại trên màn hình của bạn. GameStop (GME) đã kích hoạt một đợt tạm dừng như vậy ngay sau 11:00 sáng giờ miền Đông ngày 14 tháng 5 năm 2024; bảng dữ liệu theo dõi các cập nhật giá và giao dịch của mã này theo từng phút trong suốt thời gian đó.
Câu lệnh SQL chính xác đằng sau mỗi con số
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_minTrong phút trước khi tạm dừng, 11:00, báo giá hợp nhất của GameStop đã cập nhật 4511 lần so với 12419 giao dịch. Sau đó, cả hai cột đều không còn dữ liệu mới: có 0 bản ghi giá tại 11:02 và 0 tại 11:03, với 0 giao dịch tương ứng — một mức giá đã ngừng biến động trong một cổ phiếu đã ngừng giao dịch. Việc báo giá quay trở lại vào 11:06, phút mở cửa trở lại, với 4155 cập nhật và 14007 giao dịch, đây là phút có khối lượng giao dịch lớn nhất trong bảng. NBBO cuối cùng của một cổ phiếu đang bị tạm dừng chỉ là dữ liệu cũ chứ không phải là giá có thể giao dịch; phiên giao dịch GameStop tháng 1 năm 2021 cho thấy chuỗi tạm dừng như vậy ảnh hưởng thế nào đến dòng dữ liệu thị trường.
Tại sao broker phải khớp lệnh của bạn tại mức NBBO hoặc tốt hơn
NBBO là một tiêu chuẩn quy định. Regulation NMS — bộ quy tắc cấu trúc thị trường của SEC được thông qua vào năm 2005 — bao gồm quy tắc bảo vệ lệnh, Rule 611: một sàn giao dịch không được thực hiện lệnh với mức giá tệ hơn báo giá được bảo vệ hiển thị trên một sàn giao dịch khác. Các broker cũng có nghĩa vụ thực hiện best execution cho khách hàng, được đo lường dựa trên NBBO: một lệnh mua market nên được khớp tại mức national best ask hoặc thấp hơn, một lệnh bán market tại mức national best bid hoặc cao hơn.
Hầu hết các nhà đầu tư cá nhân thường bỏ lỡ điều này: lệnh market của bạn thường không bao giờ đến được sàn giao dịch. Phần lớn dòng lệnh marketable của nhà đầu tư cá nhân được chuyển đến các wholesalers — những nhà tạo lập thị trường ngoài sàn, những bên trả tiền để có quyền khớp các lệnh đó — và được thực hiện nội bộ, sau đó được báo cáo lên một cơ sở báo cáo ngoài sàn. NBBO vẫn là quy tắc đối với họ: wholesaler phải khớp hoặc vượt qua báo giá quốc gia tại thời điểm thực hiện, và họ cạnh tranh để giành dòng lệnh bằng cách khớp tốt hơn — khớp lệch một phần nhỏ của một cent bên trong spread, được gọi là price improvement. NBBO là mức giá tham chiếu, không phải là sàn giao dịch; loại lệnh bạn chọn sẽ quyết định liệu bạn có khớp lệnh qua spread hay không.
FAQ
NBBO có bao gồm các lô lẻ (odd lots) không?
Không. Báo giá quốc gia chỉ được tổng hợp từ các báo giá lô tròn (round-lot). Theo quy định Reg NMS, lô tròn được phân cấp theo giá — từ 100 cổ phiếu cho mức giá dưới 250 USD, cho đến một cổ phiếu cho mức giá trên 10.000 USD. Mức giá chào mua (bid) nhỏ nhất mà bảng điện hiển thị cho Ford ở trên là 100 cổ phiếu, so với 10 của AutoZone, cổ phiếu của mã này có giá cao hơn nhiều. Các lô lẻ có giá tốt hơn nằm trong khoảng spread đã công bố nhưng không được hiển thị.
Tại sao báo giá trên ứng dụng môi giới của tôi lại khác với NBBO trực tiếp?
Có hai lý do, và cả hai đều không phải do SIP. Các nguồn dữ liệu miễn phí cho nhà đầu tư cá nhân thường bị trễ 15 phút theo quy định cấp phép của sàn giao dịch, trừ khi bạn trả phí cho dữ liệu thời gian thực. Ngoài ra, dữ liệu hợp nhất là một bản chụp (snapshot) đã được công bố: bước hợp nhất dữ liệu đạt mức trung vị là 229.1 microseconds đối với SPY, trong khi các công ty sử dụng nguồn dữ liệu trực tiếp từ sàn giao dịch sẽ thấy sự kiện sớm hơn.
Điều gì xảy ra với NBBO khi một cổ phiếu bị tạm dừng giao dịch?
Nó sẽ bị đóng băng. Trong đợt tạm dừng giới hạn giá (limit-up/limit-down) kéo dài năm phút của GameStop ở trên, bảng điện đã ghi nhận 0 cập nhật báo giá tại 11:03 và 0 giao dịch. Báo giá cuối cùng vẫn hiển thị trên màn hình nhưng không thể giao dịch; một phiên đấu giá mở cửa sẽ thiết lập báo giá tiếp theo.
NBBO có tồn tại trong giờ giao dịch ngoài phiên (after hours) không?
Có. Các báo giá hợp nhất được truyền từ 4:00 sáng đến 8:00 tối ET, vì vậy báo giá quốc gia vẫn tồn tại xuyên suốt giao dịch premarket và after-hours — với tốc độ chỉ bằng một phần nhỏ so với ban ngày: Apple có 65 cập nhật trong một phút cuối phiên premarket so với 5657 sau khi mở cửa.
Ghi chú dữ liệu: cửa sổ thời gian và bộ lọc
Các cửa sổ trượt (rolling windows) kết thúc ba ngày trước khi tạo (có một độ trễ nạp dữ liệu ngắn ở đầu nguồn cấp) và chỉ tính các phiên giao dịch đầy đủ — tức là những ngày mà SPY in đủ tất cả 390 nến phút trong giờ giao dịch chính thức. Bảng dữ liệu Coca-Cola loại bỏ các bản ghi một chiều (one-sided) và chéo giá (crossed); các bảng thống kê tính mọi bản ghi nguyên bản (thị trường bị khóa và chéo giá bao gồm các bản ghi bị loại bỏ này). Bảng dữ liệu GameStop được cố định vào một ngày cụ thể, với các nến phút của SPY đóng vai trò là trục thời gian, do đó các phút bị tạm dừng sẽ hiển thị là số không.
Mỗi bảng dữ liệu đều đi kèm với mã SQL đã tạo ra nó — bạn chỉ cần mở một bảng, thay thế bằng ticker của riêng mình và đếm các cập nhật NBBO của nó trên terminal Strasmore.