NBBO چیست و کاربرد آن در بازار سهام چیست
مفهوم NBBO یا بهترین پیشنهاد خرید و فروش ملی شامل بالاترین قیمت خرید و پایینترین قیمت فروش در تمامی بورسها است که کارگزار موظف به رعایت آن میباشد.
NBBO یا «بهترین پیشنهاد خرید و فروش ملی»، قیمت یکپارچه برای یک سهام در بازار آمریکا است: بالاترین قیمتی که هر خریدار پیشنهاد میدهد و پایینترین قیمتی که هر فروشنده درخواست میکند، که بهطور همزمان در تمامی بورسها ثبت میشود. این همان قیمتی است که اپلیکیشن شما نمایش میدهد و شاخصی است که کارگزار شما باید برای اجرای سفارش شما، آن را رعایت کرده یا از آن بهتر عمل کند. تمامی اعداد زیر از سوابق واقعی قیمتها استخراج شدهاند؛ پرسوجوی مربوطه پیوست شده است.
NBBO چیست؟ تعریفی به زبان ساده
یک سهام در ایالات متحده تنها در یک مکان معامله نمیشود. NYSE، Nasdaq و بیش از دوازده بورس دیگر، هر کدام دفتر سفارشات (order book) مخصوص خود را برای یک ticker واحد مدیریت میکنند که هر کدام بهترین قیمت خرید (bid) و فروش (ask) خود را دارند. NBBO این قیمتها را با هم ترکیب میکند: بالاترین قیمت خرید در تمام بازار و پایینترین قیمت فروش در تمام بازار را در کنار حجم سهام موجود در هر کدام قرار میدهد. این فرآیند توسط پردازندههای اطلاعات اوراق بهادار یا SIPs انجام میشود؛ زیرساختهای خدماتی که بورسها به صورت مشترک آنها را اداره میکنند.
دو نکته در مراحل اولیه اهمیت دارد. قیمت خرید و قیمت فروش میتوانند همزمان در دو بورس متفاوت باشند. همچنین برای بهروزرسانی قیمت، لزوماً نیازی به تغییر قیمت نیست؛ تغییر در حجم معاملات در همان بهترین قیمت نیز یک رکورد جدید ثبت میکند. معاملهگران به دو قیمت برتر، the touch میگویند؛ فاصله بین این دو قیمت، همان bid-ask spread است.
نحوه خواندن قیمت NBBO: قیمتها، حجمها و سرعت تغییرات
در اینجا ده رکورد متوالی از NBBO برای Coca-Cola (KO) از ساعت 1:30 بعد از ظهر به وقت Eastern در یک جلسه معاملاتی کامل اخیر آورده شده است؛ این همان قیمت ملی است که در واقعیت دریافت میشود.
کد دقیق SQL پشت هر عدد
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 10ردیف اول را به عنوان دو پیشنهاد موجود (standing offers) بخوانید که در ساعت 13:30:02.886 ET ثبت شدهاند. بهترین قیمت خریداران: $83.3 برای 200 سهم. بهترین قیمت فروشندگان: $83.31 برای 200 سهم. اختلاف بین آنها 1 سنت بود.
تعداد سهامها، حجم در نقطه برخورد (size at the touch) است که نشاندهنده نقدینگی نمایشدادهشده در دو قیمت برتر است. سفارشی بزرگتر از این حجم، این مقدار را تخلیه کرده و باقیمانده را در قیمتهای بعدی دفتر سفارشات (book) پر میکند. حجم نمایشدادهشده یک کف است، نه کل موجودی: اغلب تقاضای بیشتری به صورت نمایشنیافته در آن قیمتها یا بین آنها، از جمله در استخرهای تاریک (dark pools) وجود دارد.
حالا ردیفها را به پایین بخوانید. تمام 10 رکوردها در فاصله زمانی کمتر از 484.95 میلیثانیه نسبت به اولین رکورد ثبت شدهاند. هیچ زمانبندی مشخصی وجود ندارد؛ SIP هر زمان که برنده تغییر کند، قیمت را منتشر میکند و هر یک از چهار رویداد باعث ثبت یک ردیف میشود: قیمت خرید (bid) بهتر، قیمت فروش (ask) بهتر، تغییر در تعداد سهام در هر یک از دو قیمت برتر، یا جایگزینی یک بورس به جای بورس دیگر در بالاترین سطح قیمت. برای مشاهده دیدگاهی جامع از ریزساختار بازار، به تحلیل عمیق ریزساختار مراجعه کنید.
آیا NBBO شامل تعداد سهام غیرمعمول (odd lots) میشود؟
در بیشتر موارد، خیر. قیمت ملی تنها بر اساس معاملات round-lot تشکیل میشود. سفارشی که تعداد سهام آن کمتر از یک round-lot باشد، یک odd lot محسوب میشود؛ این سفارش میتواند با قیمتی بهتر از بهترین قیمت خرید ملی (NBBO) در دفتر معاملات یک بورس باقی بماند، در آنجا معامله شود و هرگز در NBBO ظاهر نشود.
مفهوم round-lot دیگر لزوماً 100 سهم نیست. طبق قوانین اصلاحشده Reg NMS توسط SEC، این مقدار بر اساس قیمت هر سهم دستهبندی میشود: 100 سهم تا قیمت 250 دلار، 40 سهم از 250.01 تا 1,000 دلار، 10 سهم از 1,000.01 تا 10,000 دلار، و یک سهم برای قیمتهای بالاتر از آن. این دستهبندیها در نوار قیمت (tape) قابل مشاهده هستند؛ پنل کوچکترین حجم خرید را که در نقلقولهای تجمیعی برای شش نماد در این بازهها ظاهر میشود، نمایش میدهد.
کد دقیق SQL پشت هر عدد
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_priceسهام Ford با قیمت حدود 13.9، در آن ساعت هرگز حجمی کمتر از 100 سهم را نشان نمیدهد؛ Coca-Cola در قیمت 84.18 نیز همینگونه است. Apple در قیمت 314.36 به 40 کاهش مییابد؛ AutoZone در قیمت 3030.52 در هر سهم، تا 10 پایین میآید و میانه حجم خرید نمایشدادهشده آن 10 است. کف قیمت بر اساس سطح قیمتی تغییر میکند. سفارشهای odd-lot با قیمت بهتر میتوانند درون spread منتشرشده و بدون نمایش قرار بگیرند، بنابراین قیمت واقعی و در دسترس گاهی اوقات بهتر از آن چیزی است که NBBO نشان میدهد.
چرا قیمت نمایش داده شده در اپلیکیشن شما دقیقاً مطابق با NBBO لحظهای نیست
قیمتی که در گوشی خود مشاهده میکنید، مسیری را طی کرده است: موتور تطبیق در بورس ← SIP ← تامینکننده داده ← کارگزار ← صفحه نمایش. هر رکورد دارای دو برچسب زمانی است: مهر زمانی خودِ بورس و مهر زمانی SIP در زمان انتشار؛ فاصله بین این دو، مرحله تجمیع دادهها است.
کد دقیق SQL پشت هر عدد
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)میانه فاصله زمانی در SPY برابر با 229.1 میکروثانیه (یکمیلیونth ثانیه) و برای Apple برابر با 203.4 بود. توزیع دادهها در بخش انتهایی پهنتر از بخش میانی است: صدک 99ام در NVDA برابر با 536.9 میکروثانیه ثبت شد. SIP از نظر انسانی کند نیست، اما دو عامل دیگر باعث تأخیر میشوند.
نخست اینکه، ممکن است دادههای شما عمداً با تأخیر ارائه شوند. طبق شرایط مجوزهای بورس، قیمتهای رایگان در اپلیکیشنهای خردهفروشی و سایتهای نموداری معمولاً با 15 دقیقه تأخیر ارائه میشوند؛ دسترسی به جریان دادههای لحظهای (real-time) یک امتیاز پولی است.
دوم اینکه، شرکتهای حرفهای منتظر SIP نمیمانند. هر بورس، یک فید مستقیم از موتور تطبیق خود نیز به فروش میرساند. یک شرکت مستقر در نزدیکی سرور (colocated)، این داده را دریافت کرده و پیش از رسیدن نسخه SIP از آن رویداد، بهترین قیمت خرید و فروش (bid and offer) خود را محاسبه میکند؛ این برتری در مقیاس میکروثانیه، برای یک بازارگردان که در تمام روز برای هر دو سمت قیمت میدهد، تعیینکننده است.
نرخ بهروزرسانی NBBO چقدر است؟ سهام پرنقدینگی در مقابل سهام کمنقد
هر سهم در بازار دارای یک NBBO است و نرخ بهروزرسانی آن، معیاری برای سنجش نقدینگی محسوب میشود. این جدول میانگین جلسات کامل اخیر را برای چهار نماد با حجم معاملات بالا و دو شرکت کوچک با نقدینگی کم شامل Nathan's Famous (NATH) و Seneca Foods (SENEA) نشان میدهد.
کد دقیق SQL پشت هر عدد
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)ETF مربوط به S&P 500 یعنی SPY، بهطور میانگین در هر جلسه 3.428 میلیون بهروزرسانی NBBO داشت که 2031 برابر با کمتحرکترین نماد در این جدول است. Nvidia بهطور میانگین 1.85 میلیون و Apple میزان 1.336 میلیون بهروزرسانی داشت. سپس با یک افت شدید مواجه میشویم: Seneca Foods در هر جلسه میانگین 8097 بهروزرسانی داشت و Nathan's Famous نیز 1688 بهروزرسانی. هیچ انسانی نمیتواند با سرعت SPY صفحه نمایش را بخواند؛ NBBO یک فید داده است که برای نرمافزارها ساخته شده است.
زمان بیشترین سرعت بهروزرسانی NBBO: بازگشایی در مقابل اواسط روز
نرخ بهروزرسانی نیز دارای یک ریتم روزانه است. این نمودار میانگین بهروزرسانیهای NBBO شرکت Apple را در بازههای نیمساعته (به وقت Eastern Time) نشان میدهد؛ ستون آخر، هر بازه را به عنوان درصدی از بازه ساعت 9:30 نمایش میدهد.
کد دقیق SQL پشت هر عدد
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_timeدر نیمساعت پس از مزایده بازگشایی، میانگین بهروزرسانیهای قیمت ملی Apple در هر دقیقه 5657 بار بود و بازه ساعت 10:00 این سرعت را در سطح 89.5% حفظ کرد. سپس حجم معاملات در اواسط روز کاهش مییابد: بازه ساعت 2:30 شامل 1973 بهروزرسانی در هر دقیقه بود که معادل 34.9% سرعت زمان بازگشایی است. فعالیت در ساعت 3:30 تا زمان بسته شدن بازار، تنها بخشی از سرعت اولیه را بازیابی میکند — یعنی 3345 بهروزرسانی در هر دقیقه، یا 59.1% سرعت زمان بازگشایی — بنابراین بیشترین حجم استعلام قیمت در ساعت اول بازار بود، نه ساعت آخر. خارج از ساعات رسمی معاملات، فعالیت بازار تقریباً متوقف میشود و پس از زنگ ساعت 4:00 p.m، نرخ بهروزرسانی به 17 در هر دقیقه کاهش مییابد.
در زمان توقف معاملات، چه اتفاقی برای NBBO میافتد؟
زمانی که قیمت یک سهم با سرعت بسیار زیاد تغییر میکند، قوانین limit-up/limit-down باعث توقف پنج دقیقهای معاملات آن میشوند. در این حالت، قیمت (quote) نه حذف میشود و نه فعال میماند؛ بلکه بهروزرسانی آن متوقف میشود و آخرین رکورد ثبتشده پیش از توقف، همان تصویری است که بر روی صفحه نمایش شما باقی میماند. سهم GameStop (GME) درست پس از ساعت 11:00 صبح به وقت Eastern در تاریخ 14 می 2024 با چنین توقفی مواجه شد؛ این جدول، بهروزرسانیهای قیمت و معاملات آن را دقیقه به دقیقه در طول این بازه ردیابی میکند.
کد دقیق SQL پشت هر عدد
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_minدر دقیقه پیش از توقف، در 11:00، قیمت تجمیعی GameStop sebanyak 4511 بار در برابر 12419 معامله بهروزرسانی شد. سپس هر دو ستون متوقف میشوند: 0 رکورد قیمت در 11:02 و 0 در 11:03، همراه با 0 معامله — قیمتی که از حرکت باز ایستاده است، در سهمی که معاملات آن متوقف شده است. قیمت با بازگشت در 11:06، یعنی دقیقه بازگشایی، با 4155 بهروزرسانی و 14007 معامله، پرحجمترین دقیقه معاملاتی در جدول است. آخرین NBBO یک سهم متوقفشده، یک اثر قدیمی است و نه یک قیمت قابل معامله؛ جلسه ژانویه 2021 GameStop نشان میدهد که زنجیرهای از چنین توقفهایی چه بلایی سر یک نوار قیمت (tape) میآورد.
چرا کارگزار شما باید سفارش شما را در قیمت NBBO یا بهتر اجرا کند
NBBO یک معیار نظارتی است. مقررات NMS — کتابچه قوانین ساختار بازار SEC که در سال 2005 تصویب شد — شامل قانون حفاظت از سفارشها یا Rule 611 است: یک مرکز معاملاتی نباید در قیمتی بدتر از قیمت محافظتشدهای که در بورس دیگری نمایش داده شده است، معامله کند. کارگزاران همچنین نسبت به مشتریان خود متعهد به بهترین اجرا هستند که بر اساس NBBO سنجیده میشود: یک سفارش خرید بازار باید در بهترین قیمت فروش (ask) ملی یا پایینتر از آن اجرا شود، و یک سفارش فروش بازار باید در بهترین قیمت خرید (bid) ملی یا بالاتر از آن اجرا شود.
بسیاری از خوانندگان خرد این نکته را نادیده میگیرند: سفارش بازار شما معمولاً هرگز به یک بورس نمیرسد. بیشتر جریانهای قابل معامله خرد به تامینکنندگان عمده (wholesalers) هدایت میشوند — بازارگردانهای خارج از بورس که برای حق اجرای این جریانها هزینه پرداخت میکنند — و معاملات به صورت داخلی انجام و در یک مرکز گزارشدهی خارج از بورس ثبت میشوند. NBBO همچنان بر آنها حاکم است: تامینکننده عمده باید در لحظه اجرا، با قیمت ملی مطابقت داشته باشد یا از آن بهتر عمل کند؛ آنها با ارائه قیمتی بهتر از قیمت ملی، برای جذب جریان معاملات رقابت میکنند که به آن بهبود قیمت (price improvement) میگویند و شامل بخشی از یک سنت در داخل spread است. NBBO قیمت مرجع است، نه محل معامله؛ نوع سفارش انتخابی شما تعیین میکند که آیا شما اصلاً از spread عبور میکنید یا خیر.
سوالات متداول
آیا NBBO شامل تعداد سهام غیرمعمول (odd lots) میشود؟
خیر. قیمت ملی تنها از قیمتهای لوت کامل (round-lot) تشکیل میشود. طبق مقررات Reg NMS، لوت کامل بر اساس قیمت دستهبندی میشود؛ از 100 سهم برای قیمتهای زیر 250 دلار تا یک سهم برای قیمتهای بالای 10,000 دلار. کوچکترین قیمت پیشنهادی که در نوار قیمت برای Ford نمایش داده شد، 100 سهم بود، در حالی که این مقدار برای AutoZone که قیمت بسیار بالاتری داشت، 10 بود. لوتهای غیرمعمول با قیمت بهتر، در داخل spread منتشر شده قرار میگیرند اما نمایش داده نمیشوند.
چرا قیمت در اپلیکیشن کارگزاری من با NBBO زنده متفاوت است؟
دو دلیل وجود دارد که هیچکدام مربوط به SIP نیست. طبق قوانین مجوز بورس، فیدهای رایگان خردهفروشی معمولاً 15 دقیقه تأخیر دارند، مگر اینکه هزینه دادههای لحظهای را پرداخت کنید. همچنین، دادههای تجمیعی یک تصویر لحظهای منتشر شده هستند: مرحله تجمیع در میانه وضعیت SPY، مدت زمان 229.1 میکروثانیه را اندازهگیری کرد، در حالی که شرکتهای دارای فید مستقیم بورس، رویداد را زودتر مشاهده میکنند.
وقتی معاملات یک سهم متوقف میشود، چه اتفاقی برای NBBO میافتد؟
این قیمت ثابت میماند. در طول توقف پنج دقیقهای GameStop به دلیل محدودیتهای قیمت (limit-up/limit-down)، نوار قیمت شامل 0 بهروزرسانی قیمت و 11:03 و 0 معامله بود. آخرین قیمت روی صفحه باقی میماند اما قابل معامله نیست؛ یک حراج بازگشایی، قیمت بعدی را تعیین میکند.
آیا NBBO در ساعات خارج از بازار نیز وجود دارد؟
بله. قیمتهای تجمیعی از ساعت 4:00 صبح تا 8:00 شب به وقت ET جریان دارند، بنابراین یک قیمت ملی در معاملات پیشبازار و پسازبازار وجود دارد؛ اما با سرعتی بسیار کمتر نسبت به ساعات روز: اپل در یک دقیقه از آخرین بازه پیشبازار، 65 بهروزرسانی داشت، در مقابل 5657 بهروزرسانی پس از بازگشایی بازار.
یادداشتهای داده: بازهها و فیلترها
بازههای متحرک سه روز پیش از تولید دادهها پایان مییابند (یک تأخیر کوتاه در ورود دادهها در لبه جلویی فید وجود دارد) و فقط جلسات کامل را محاسبه میکنند؛ یعنی روزهایی که SPY تمام 390 میله دقیقهای ساعات عادی را ثبت کند. پنل Coca-Cola شامل سوابق یکطرفه و متقاطع (crossed) نمیشود؛ پنلهای شمارش، هر سندی را همانگونه که هست در نظر میگیرند (بازارهای قفلشده و متقاطع موارد حذف شده را پوشش میدهد). پنل GameStop به یک تاریخ ثابت متصل است و از میلههای دقیقهای SPY به عنوان ستون فقرات زمانی استفاده میکند، بنابراین دقیقههای متوقف شده به صورت صفر نمایش داده میشوند.
هر پنل همراه با کد SQL تولیدکننده آن ارائه میشود؛ یکی را باز کنید، نماد خود را جایگزین کنید و تعداد بهروزرسانیهای NBBO آن را در ترمینال Strasmore شمارش کنید.