ما هو NBBO؟ أفضل عرض شراء وبيع وطني
تعرّف إلى NBBO، السعر الوطني الموحّد الذي يجب على وسيطك مطابقته أو تجاوزه، واكتشف سرعة تحديثه عبر بيانات تداول حقيقية لفهم ما تراه في تطبيقك.
يمثل NBBO، أي أفضل عرض شراء وبيع وطني، السعر الموحّد لسهم أمريكي. وهو أعلى سعر يعرضه أي مشترٍ، وأدنى سعر يطلبه أي بائع، عبر جميع البورصات في الوقت نفسه. هذا هو السعر الذي يعرضه تطبيقك، والمعيار الذي يجب على وسيطك أن يطابقه أو يتجاوزه عند تنفيذ طلبك. كل رقم أدناه مستمد من سجلات أسعار حقيقية، والاستعلام مرفق.
ما هو NBBO؟ تعريف مبسّط
لا يُتداول السهم الأميركي في مكان واحد. تدير NYSE وNasdaq وأكثر من اثنتي عشرة بورصة أخرى دفتر أوامر للسهم نفسه، ولكل منها أفضل سعر شراء وأفضل سعر بيع. يجمع NBBO هذه المستويات الأفضل: أعلى سعر شراء في أي بورصة، وأدنى سعر بيع في أي بورصة، جنباً إلى جنب مع عدد الأسهم المتاحة عند كل سعر. وتتولى هذا الجمع معالجات معلومات الأوراق المالية، أو SIPs، وهي مرافق السوق التي تديرها البورصات بصورة مشتركة.
هناك تفصيلان مهمان منذ البداية. قد يوجد أفضل سعر شراء وأفضل سعر بيع في بورصتين مختلفتين في الوقت نفسه. كما لا يلزم حدوث تغير في السعر لإصدار تحديث؛ فتغير الكمية عند السعر الأفضل نفسه يُسجَّل أيضاً كبيان جديد. ويسمي المتداولون أفضل سعرين حدّي التداول؛ أما الفارق بينهما فهو فارق سعر الشراء والبيع.
كيفية قراءة تسعيرة NBBO: الأسعار والأحجام والوتيرة
فيما يلي عشرة سجلات متتالية لـ NBBO لسهم Coca-Cola (KO) اعتباراً من الساعة 1:30 بعد الظهر بالتوقيت الشرقي خلال جلسة كاملة حديثة. وهذه هي التسعيرة الوطنية كما تصل فعلياً.
| وقت ET | الوقت المنقضي بالمللي ثانية | أسهم العرض | أفضل سعر عرض | أفضل سعر طلب | أسهم الطلب | فارق السعر بالسنتات |
|---|---|---|---|---|---|---|
| 13:30:00.141 | 0 | 200 | 88.11 | 88.12 | 300 | 1 |
| 13:30:00.141 | 0.26 | 200 | 88.11 | 88.12 | 700 | 1 |
| 13:30:00.257 | 115.81 | 200 | 88.11 | 88.12 | 600 | 1 |
| 13:30:01.017 | 876.55 | 200 | 88.11 | 88.12 | 700 | 1 |
| 13:30:01.307 | 1166.37 | 200 | 88.11 | 88.12 | 600 | 1 |
| 13:30:01.491 | 1349.95 | 200 | 88.11 | 88.12 | 700 | 1 |
| 13:30:01.575 | 1433.69 | 200 | 88.11 | 88.12 | 600 | 1 |
| 13:30:01.729 | 1588.01 | 100 | 88.11 | 88.12 | 600 | 1 |
| 13:30:01.729 | 1588.16 | 100 | 88.11 | 88.12 | 700 | 1 |
| 13:30:01.729 | 1588.16 | 100 | 88.11 | 88.12 | 800 | 1 |
استعلام 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اقرأ الصف الأول باعتباره عرضين قائمين، مؤرخين عند 13:30:00.141 بالتوقيت الشرقي. أفضل سعر للشراء: $88.11 مقابل 200 سهماً. أفضل سعر للبيع: $88.12 مقابل 300 سهماً. وبلغ الفارق بينهما 1 سنتاً.
تمثل أعداد الأسهم الحجم عند أفضل سعر، أي السيولة المعروضة عند أفضل سعري شراء وبيع. ويستنفد الأمر الذي يتجاوز ذلك الحجم السيولة المتاحة، ويُنفَّذ الجزء المتبقي عند الأسعار التالية في دفتر الأوامر. والحجم المعروض حد أدنى، وليس إجمالي المخزون؛ إذ غالباً ما تكون هناك أوامر إضافية غير معروضة عند السعرين أو بينهما، بما في ذلك في مجمّعات السيولة المظلمة.
والآن اقرأ الصفوف من أعلى إلى أسفل. وصلت جميع السجلات البالغ عددها 10 خلال 1588.16 ميلي ثانية من السجل الأول. ولا يوجد جدول زمني محدد؛ إذ ينشر SIP سجلاً كلما تغيّر السعر المتصدر، ويمكن لأي حدث من أربعة أحداث أن يؤدي إلى ظهور صف: تحسّن سعر الشراء، أو تحسّن سعر البيع، أو تغيّر عدد الأسهم عند أي من أفضل سعرين، أو استبدال بورصة بأخرى في صدارة السوق. وللاطلاع على حركة الجلسة كاملة، راجع التحليل المتعمق لبنية السوق الدقيقة.
هل يشمل NBBO صفقات الحصص غير القياسية؟
في الغالب، لا. يُبنى السعر الوطني من أوامر الحصص القياسية فقط. ويُسمّى الأمر الذي يتضمن عدداً من الأسهم أقل من الحصة القياسية «حصة غير قياسية». ويمكن لهذا الأمر أن يبقى في سجل أوامر البورصة بسعر أفضل من أفضل عرض شراء وطني، وأن يُنفَّذ هناك، من دون أن يظهر في NBBO.
ولم تعد الحصة القياسية ثابتة عند 100 سهم. فبموجب قواعد التسعير المعدلة في Reg NMS التي أقرتها SEC، تتدرج الحصة بحسب سعر السهم: 100 سهم حتى $250، و40 سهماً من $250.01 إلى $1,000، و10 أسهم من $1,000.01 إلى $10,000، وسهم واحد فوق ذلك. وتظهر هذه الشرائح في شريط الأسعار؛ إذ تعرض اللوحة أصغر حجم عرض شراء يظهر في أي وقت ضمن السعر الموحد لستة أسهم عبر هذه الشرائح.
| ticker | سعر السهم | أصغر حجم معروض | الوسيط لحجم العرض |
|---|---|---|---|
| F | 13.96 | 100 | 7300 |
| KO | 89.05 | 100 | 200 |
| NVDA | 217.87 | 100 | 200 |
| AAPL | 324.53 | 40 | 80 |
| SPY | 763.53 | 40 | 240 |
| AZO | 2950.37 | 10 | 10 |
استعلام 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.96، عرض شراء يقل عن 100 سهماً خلال تلك الساعة؛ وينطبق الأمر نفسه على Coca-Cola عند $89.05. أما Apple، عند $324.53، فينخفض حجم عرض الشراء لديها إلى 40؛ بينما ينخفض لدى AutoZone، عند $2950.37 للسهم، إلى 10، مع وسيط لحجم عرض الشراء الظاهر يبلغ 10. ويعكس الحد الأدنى شريحة السعر. وقد تبقى أوامر الحصص غير القياسية ذات السعر الأفضل داخل الفارق السعري المنشور من دون عرضها، لذلك يكون أفضل سعر متاح فعلياً أحياناً أفضل مما يوحي به NBBO.
لماذا لا يكون السعر المعروض في تطبيقك هو NBBO المباشر تماماً
تنتقل الأسعار التي تقرؤها على هاتفك عبر عدة مراحل: محرك المطابقة في البورصة ← SIP ← مزود البيانات ← الوسيط ← الشاشة. ويحمل كل سجل توقيتين: الختم الزمني الخاص بالبورصة، والختم الزمني الخاص بـSIP عند نشر البيانات. ويمثل الفارق بينهما مرحلة التجميع.
| ticker | الوسيط بالميكروثانية | الميكروثانية عند P99 |
|---|---|---|
| SPY | 347.4 | 480.4 |
| NVDA | 196.7 | 414.1 |
| AAPL | 178.1 | 433.7 |
| KO | 392.6 | 551.4 |
استعلام 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 نحو 347.4 ميكروثانية، أي أجزاء من المليون من الثانية، بينما بلغ في Apple نحو 178.1. ويكون الذيل أكثر اتساعاً من الوسط؛ إذ بلغ المئين التاسع والتسعون في Nvidia نحو 414.1 ميكروثانية. ولا يُعد SIP بطيئاً بأي معنى عملي. لكن هناك عاملين آخرين.
أولاً، قد تكون بياناتك متأخرة عمداً. تكون خدمات عرض الأسعار المجانية في تطبيقات التجزئة ومواقع الرسوم البيانية متأخرة عادةً 15 دقيقة بموجب شروط ترخيص البورصات؛ أما البث الفوري فيتطلب اشتراكاً مدفوعاً.
ثانياً، لا تنتظر الشركات المحترفة وصول البيانات عبر SIP. تبيع كل بورصة أيضاً تغذية مباشرة من محرك المطابقة الخاص بها. وتقرأها الشركة الموجودة في موقع مشترك وتحسب أفضل سعر شراء وأفضل سعر بيع لديها قبل وصول نسخة SIP من الحدث نفسه، بفارق يبلغ ميكروثواني، وهو فارق حاسم لصانع السوق الذي يضع عروض الشراء والبيع طوال اليوم.
كم مرة يتحدّث NBBO؟ الأسهم السائلة في مقابل الأسهم ضعيفة التداول
لدى كل سهم مُدرج NBBO، ويُعد معدل تحديثه مقياساً للسيولة. يعرض الجدول متوسط جلسات التداول الكاملة الأخيرة لأربعة أسهم شديدة التداول وسهمين صغيرين ضعيفَي التداول، هما Nathan's Famous (NATH) وSeneca Foods (SENEA).
| ticker | الجلسات | متوسط التحديثات لكل جلسة | متوسط التحديثات لكل جلسة م | مضاعف الأهدأ |
|---|---|---|---|---|
| SPY | 5 | 2697406 | 2.697 | 3641 |
| NVDA | 5 | 1939655 | 1.94 | 2618 |
| AAPL | 5 | 745508 | 0.746 | 1006 |
| KO | 5 | 312847 | 0.313 | 422 |
| SENEA | 5 | 3782 | 0.004 | 5 |
| NATH | 5 | 741 | 0.001 | 1 |
استعلام 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)سجّل SPY، وهو ETF لمؤشر S&P 500، في المتوسط 2.697 مليون تحديث لـ NBBO في الجلسة الواحدة، أي ما يعادل 3641 مرة معدل أقل سهم نشاطاً في الجدول. وسجّلت Nvidia في المتوسط 1.94 مليون تحديث، بينما سجّلت Apple 0.746 مليوناً. ثم يظهر الفارق الحاد: نفّذت Seneca Foods 3782 تحديثاً في الجلسة المتوسطة، مقابل 741 تحديثاً لـ Nathan's Famous. لا يقرأ أي شخص شاشة بمعدل SPY؛ إذ إن NBBO عبارة عن تدفق بيانات مصمم للبرمجيات.
متى يتسارع تحديث NBBO أكثر: عند الافتتاح أم في منتصف اليوم
تحافظ وتيرة التحديث أيضاً على نمط يومي. يعرض الرسم متوسط عدد تحديثات NBBO لسهم Apple في الدقيقة ضمن فترات زمنية مدتها نصف ساعة، بحسب التوقيت الشرقي؛ ويعرض العمود الأخير كل فترة كنسبة مئوية من فترة 9:30.
| وقت ET | متوسط التحديثات لكل دقيقة | النسبة المئوية من شريحة الافتتاح |
|---|---|---|
| 04:00 | 20 | 0.6 |
| 04:30 | 12 | 0.3 |
| 05:00 | 14 | 0.4 |
| 05:30 | 16 | 0.5 |
| 06:00 | 11 | 0.3 |
| 06:30 | 10 | 0.3 |
| 07:00 | 22 | 0.6 |
| 07:30 | 18 | 0.5 |
| 08:00 | 24 | 0.7 |
| 08:30 | 24 | 0.7 |
| 09:00 | 43 | 1.2 |
| 09:30 | 3552 | 100 |
| 10:00 | 2685 | 75.6 |
| 10:30 | 2155 | 60.7 |
| 11:00 | 1983 | 55.8 |
| 11:30 | 1773 | 49.9 |
| 12:00 | 1674 | 47.1 |
| 12:30 | 1586 | 44.7 |
| 13:00 | 1182 | 33.3 |
| 13:30 | 1043 | 29.4 |
استعلام 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 بمعدل 3552 مرة في الدقيقة، في المتوسط، وحافظت فترة 10:00 على وتيرة تعادل 75.6% منها. ثم تنخفض كثافة التداول عبر منتصف اليوم؛ إذ سجلت فترة 2:30 ما معدله 1280 تحديثاً في الدقيقة، أي 36% من وتيرة الافتتاح. وتستعيد فترة 3:30 السابقة للإغلاق جزءاً فقط من الوتيرة، مسجلة 3130 تحديثاً في الدقيقة، أي 88.1% من مستوى الافتتاح. لذلك تركزت كثافة عرض الأسعار في الساعة الأولى، لا في الساعة الأخيرة. وخارج ساعات التداول الاعتيادية، يصبح شريط التداول شبه ساكن، إذ ينخفض إلى 20 تحديثاً في الدقيقة بعد جرس الساعة 4:00 مساءً.
ماذا يحدث لأفضل عرض وطلب وطني (NBBO) أثناء وقف التداول؟
عندما يتحرك سهم بسرعة مفرطة وبنطاق واسع، توقفه قواعد الحد الأعلى/الحد الأدنى لمدة خمس دقائق. لا يختفي السعر المعروض ولا يظل محدثاً؛ بل يتوقف تحديثه، وتبقى آخر معلومة مسجلة قبل التوقف هي الإطار الظاهر على شاشتك. شهد سهم GameStop (GME) توقفاً من هذا النوع بعد الساعة 11:00 صباحاً بقليل بتوقيت الساحل الشرقي في 14 مايو 2024؛ ويتتبع الرسم تحديثات عروضه وطلباته وصفقاته دقيقة بدقيقة أثناء فترة التوقف.
| وقت ET | تحديثات NBBO | الصفقات |
|---|---|---|
| 10:57 | 1812 | 5690 |
| 10:58 | 1275 | 4420 |
| 10:59 | 1491 | 4068 |
| 11:00 | 4511 | 12419 |
| 11:01 | 346 | 1331 |
| 11:02 | 0 | 0 |
| 11:03 | 0 | 0 |
| 11:04 | 1 | 0 |
| 11:05 | 0 | 0 |
| 11:06 | 4155 | 14007 |
| 11:07 | 4627 | 13199 |
| 11:08 | 2941 | 8985 |
| 11:09 | 1613 | 6487 |
| 11:10 | 1741 | 6222 |
| 11:11 | 1447 | 5691 |
استعلام 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 المجمعة 4511 مرة مقابل 12419 صفقة. ثم ينخفض العمودان فجأة: 0 سجلاً لعروض الأسعار عند 11:02 و0 عند 11:03، مع 0 صفقة مقابلة؛ أي إن السعر المعروض توقف عن التحرك، كما توقف السهم عن التداول. يعود تحديث عروض الأسعار عند 11:06، وهي دقيقة استئناف التداول، مع 4155 تحديثاً و14007 صفقة، لتكون أثقل دقيقة تداول في الجدول. إن آخر NBBO لسهم متوقف عن التداول ليس سعراً قابلاً للتنفيذ، بل أثرٌ متحجر؛ وتوضح جلسة GameStop في يناير 2021 ما يفعله تتابع هذه التوقفات بشريط الصفقات.
لماذا يجب على وسيطك تنفيذ أوامرك عند NBBO أو بسعر أفضل
يُعد NBBO معياراً رقابياً. فقد اعتمدت لائحة Regulation NMS، وهي مجموعة قواعد SEC المنظمة لهيكل السوق، في عام 2005، وتتضمن قاعدة حماية الأوامر، Rule 611. ولا يجوز للمنصة تنفيذ أمر بسعر أسوأ من سعر محمي معروض في بورصة أخرى. كما أن الوسطاء ملزمون تجاه العملاء بتحقيق أفضل تنفيذ، ويُقاس ذلك مقارنةً بـ NBBO: يجب تنفيذ أمر الشراء بسعر السوق عند أفضل سعر عرض وطني أو أقل، وأمر البيع بسعر السوق عند أفضل سعر طلب وطني أو أعلى.
يغفل معظم القراء الأفراد هذه النقطة: فأمر السوق الذي ترسله لا يصل عادةً إلى بورصة. إذ يُوجَّه معظم تدفق أوامر السوق القابلة للتنفيذ من مستثمري التجزئة إلى تجار الجملة، وهم صناع سوق خارج البورصة يدفعون مقابل حق تنفيذ هذه الأوامر، ثم تُنفَّذ داخلياً وتُسجَّل في مرفق للإبلاغ عن الصفقات خارج البورصة. ويظل NBBO ملزماً لهم: يجب على تاجر الجملة مطابقة السعر الوطني المعروض أو تحسينه لحظة التنفيذ. كما ينافس على هذا التدفق من خلال تقديم سعر أفضل، فينفذ الأمر بفارق جزء من السنت داخل spread، ويُعرف ذلك باسم تحسين السعر. ويُعد NBBO السعر المرجعي، لا المنصة؛ أما نوع الأمر الذي تختاره فهو الذي يحدد ما إذا كنت ستعبر spread أصلاً.
الأسئلة الشائعة
هل يشمل NBBO صفقات الكميات الفردية؟
لا. يُجمع السعر الوطني من أسعار الكميات القياسية فقط. وتُحدِّد Reg NMS حجم الكمية القياسية وفقاً للسعر، بدءاً من 100 سهم عندما يقل السعر عن 250 دولاراً، وصولاً إلى سهم واحد عندما يتجاوز السعر 10,000 دولار. أظهر شريط التداول أن أصغر عرض شراء لسهم Ford أعلاه كان 100 سهماً، مقابل 10 سهماً لسهم AutoZone، الذي تبلغ تكلفة سهمه قيمة أعلى بكثير. وتبقى صفقات الكميات الفردية ذات الأسعار الأفضل داخل الفارق السعري المنشور من دون عرضها.
لماذا يختلف السعر في تطبيق شركة الوساطة لدي عن NBBO المباشر؟
هناك سببان، ولا يرتبط أيٌّ منهما بـ SIP. تتأخر خلاصات بيانات التجزئة المجانية عادةً 15 دقيقة بموجب قواعد ترخيص البورصات، ما لم تدفع مقابل البيانات الفورية. كما أن البيانات المجمعة تمثل لقطة منشورة؛ فقد بلغ زمن خطوة التجميع 347.4 ميكروثانية عند الوسيط في SPY، بينما ترى الشركات التي تستخدم خلاصات مباشرة من البورصات الحدث في وقت أبكر.
ماذا يحدث لـ NBBO عندما يتوقف تداول سهم؟
يتجمّد. خلال توقف التداول لمدة خمس دقائق وفق آلية الحد الأعلى/الحد الأدنى لسهم GameStop أعلاه، أظهر شريط التداول 0 تحديثاً للأسعار عند 11:03 و0 صفقة. ويبقى آخر سعر معروض على الشاشة، لكنه لا يكون قابلاً للتداول؛ ثم تحدد مزاد إعادة الافتتاح السعر التالي.
هل يوجد NBBO بعد ساعات التداول؟
نعم. تتدفق الأسعار المجمعة من الساعة 4:00 صباحاً إلى الساعة 8:00 مساءً بالتوقيت الشرقي ET. لذلك يوجد سعر وطني خلال التداول قبل افتتاح السوق وبعد ساعات التداول، لكن بوتيرة تمثل جزءاً من وتيرة التداول النهارية: سجلت Apple 43 تحديثاً في الدقيقة خلال آخر فترة من التداول قبل الافتتاح، مقابل 3552 بعد الافتتاح.
ملاحظات البيانات: الفترات الزمنية وعمليات التصفية
تنتهي الفترات المتحركة قبل ثلاثة أيام من تاريخ إنشاء البيانات، إذ توجد فترة تأخر قصيرة في الإدخال عند بداية خلاصة البيانات. ولا تُحتسب إلا الجلسات الكاملة، أي الأيام التي يسجل فيها SPY جميع أشرطة الدقائق البالغ عددها 390 خلال ساعات التداول العادية. تستبعد لوحة Coca-Cola السجلات أحادية الجانب والسجلات المتقاطعة. أما لوحات العد فتأخذ كل سجل كما هو؛ وتغطي الأسواق المقفلة والمتقاطعة السجلات المستبعدة. وتستند لوحة GameStop إلى تاريخ ثابت، مع استخدام أشرطة الدقائق الخاصة بـ SPY كسلسلة زمنية مرجعية، ولذلك تظهر الدقائق التي توقف فيها التداول على شكل أصفار.
تتضمن كل لوحة استعلام SQL الذي أنتجها. افتح إحدى اللوحات، واستبدل الرمز الخاص بك، ثم احسب تحديثات NBBO له على منصة Strasmore.