تفاوت بازار قفلشده و بازار متقاطع در بورس
بررسی مفهوم Locked Market و Crossed Market، دلایل ممنوعیت آنها توسط Reg NMS و تحلیل میزان تکرار هر یک در سوابق استعلامهای تجمیعی بازار.
بازار قفلشده (Locked Market) زمانی رخ میدهد که بهترین قیمت خرید با بهترین قیمت فروش برابر باشد؛ یعنی spread بین قیمت خرید و فروش دقیقاً صفر باشد. بازار متقاطع (Crossed Market) وضعیت شدیدتری دارد: در این حالت، بهترین قیمت خرید بالاتر از بهترین قیمت فروش قرار میگیرد. قوانین بازار ایالات متحده نمایش هر دو حالت را برای بورسها ممنوع کرده است، اما هر دو حالت بهطور معمول در سوابق استعلامهای تجمیعی (consolidated quote record) مشاهده میشوند. این صفحه هر دو مفهوم را تعریف، قوانین مربوطه را توضیح و میزان تکرار هر یک را اندازهگیری میکند.
بازار قفلشده چیست؟
هر سهم در بازار آمریکا همزمان دارای دو قیمت است: bid، بالاترین قیمتی که یک خریدار حاضر به پرداخت آن است، و ask، پایینترین قیمتی که یک فروشنده میپذیرد. قیمت ask معمولاً بالاتر از bid قرار دارد؛ فاصله بین این دو قیمت، bid-ask spread یا همان شکاف قیمتی است که هزینه ذاتی برای انجام معامله فوری محسوب میشود.
بازار قفلشده زمانی رخ میدهد که این شکاف به صفر برسد: اگر قیمت یک سهم 10.00 دلار برای bid و 10.05 دلار برای ask باشد، شکاف قیمتی 5 سنت است؛ اما اگر بهترین قیمت ask به 10.00 دلار کاهش یابد در حالی که قیمت bid ثابت بماند، قیمت در 10.00 دلار / 10.00 دلار قفل میشود.
این وضعیت در یک بورس واحد امکانپذیر نیست؛ زیرا اگر خریدار در 10.00 دلار و فروشنده در 10.00 دلار موافق باشند، معامله بلافاصله انجام میشود. قیمت قفلشده تنها در فاصله بین مراکز مختلف معاملاتی پایداری میکند. سهام آمریکا همزمان در بیش از دوازده بورس معامله میشوند و NBBO — یعنی بهترین قیمت خرید و فروش ملی که اپلیکیشن کارگزاری شما نمایش میدهد — بهترین bid و ask را از میان تمام این بورسها با هم ترکیب میکند. اگر در یک بورس قیمت bid برابر 10.00 دلار و در بورسی دیگر قیمت ask برابر 10.00 دلار باشد، قیمت ملی قفل میشود، در حالی که هیچکدام از آن بورسها در دفتر معاملات خود وضعیت قفلشدهای ندارند.
بازار متقاطع چیست؟
در یک بازار متقاطع، ترتیب معمول معکوس میشود: بهترین قیمت خرید (bid) بیشتر از بهترین قیمت فروش (ask) قرار میگیرد؛ برای مثال، قیمت خرید 10.02 دلار در مقابل قیمت فروش 10.00 دلار. از نظر تئوری، هر کسی میتواند در 10.00 دلار بخرد، در 10.02 دلار بفروشد و بدون ریسک، دو سنت در هر سهم سود کند. وجود این سود بیهزینه دقیقاً همان دلیلی است که باعث میشود یک قیمت متقاطع (crossed quote) پایداری نداشته باشد: شرکتهای حرفهای — از جمله بازارگردانهایی که برای هر دو سمتِ اکثر سهام قیمتگذاری میکنند — به محض وقوع فرصت آربیتراژ، آن را شکار میکنند و این کار باعث حذف هر دو قیمت میشود. آنچه در دادهها باقی میماند، تنها یک لرزش لحظهای است: ثبت یک قیمت متقاطع در فاصله زمانی بهروزرسانی یک بورس و بورس دیگر.
علت ممنوعیت قیمتهای قفلشده و متقاطع در Reg NMS
این ممنوعیت در قالب Regulation NMS، یعنی مجموعه قوانین SEC (مصوب 2005) برای معاملات در بورسهای آمریکا، تعریف شده است. طبق قانون 610(d)، هر بورس موظف است از نمایش قیمتهایی توسط اعضای خود که باعث قفل شدن یا متقاطع شدن با protected quotes (بهترین قیمتهای خرید و فروش خودکار در سایر بورسها) شود، در ساعات عادی معاملات، جلوگیری کند. هدف این است که اگر قیمت پیشنهادی خرید با قیمت پیشنهادی فروش در جایی دیگر برابر باشد، معامله باید بلافاصله انجام و اجرا شود، نه اینکه صرفاً به عنوان یک تناقض ثابت در بازار نمایش داده شود.
یکی از مرزهای این قانون در دادههای زیر اهمیت دارد: این قانون بر «نمایش» قیمتها تمرکز دارد، نه لزوماً وجود آنها. هر مرکز معاملاتی بر آنچه در دفتر سفارشات خود نمایش میدهد کنترل دارد؛ اما سجل تجمیعی (consolidated record) از طریق ترکیب دادههای لحظهای و سریع تمام مراکز ایجاد میشود. بنابراین، یک NBBO قفلشده ممکن است در آن سجل ظاهر شود، بدون اینکه هیچ شرکتکنندهای مستقیماً قانون را نقض کرده باشد.
چرا قیمتهای قفلشده و متقاطع همچنان در بازار ثبت میشوند
سرعت. بورسها قیمتها را در مقیاس میکروثانیه بهروزرسانی میکنند و فید تجمیعی با هر بهروزرسانی بازسازی میشود. دو رویداد عادی باعث ایجاد رکوردهای قفلشده (locked) و متقاطع (crossed) در آن میشود:
- رقابت قیمتها. یک بورس قیمت خرید (bid) خود را به 10.00 دلار افزایش میدهد، در حالی که بورس دیگر همچنان قیمت فروش (ask) را 10.00 دلار نمایش میدهد. در حالت ادغامشده، NBBO تا زمانی که سمت کندتر بهروزرسانی شود، وضعیت را قفلشده نشان میدهد؛ همچنین اگر رقابت قیمتها با اختلاف یک سنت از هم عبور کنند، وضعیت متقاطع گزارش میشود.
- رکوردهای قدیمی و یکطرفه. برخی رکوردها تنها یک سمت را نشان میدهند؛ یعنی یک bid بدون ask، یا برعکس. طبق آمار زیر، سهامهای کمحجم بخش بیشتری از روز را در این وضعیت سپری میکنند.
قوانین شمارش در این صفحه: locked یعنی قیمت bid با ask برابر باشد و هر دو سمت مثبت باشند؛ crossed یعنی قیمت bid بالاتر از یک ask مثبت باشد؛ one-sided یعنی یکی از دو سمت صفر یا مفقود باشد. هیچ موردی بدون اطلاع حذف نمیشود؛ رکوردهای یکطرفه ستون مخصوص خود را دارند.
بازارهای قفلشده و متقاطع با چه نرخی رخ میدهند؟
تحلیل را با بررسی کل دادهها آغاز میکنیم: بررسی هر بهروزرسانی NBBO برای تمامی نمادهای فهرستشده در 2026-07-14 — آخرین جلسه تکمیلشده در بازه آماری ما.
کد دقیق SQL پشت هر عدد
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start < toDateTime(today() - 3)
) AS census_day
SELECT
formatDateTime(census_day, '%Y-%m-%d') AS session_date,
round(count() / 1e6, 0) AS updates_m,
round(countIf(bid_price = ask_price AND bid_price > 0) / 1e6, 2) AS locked_m,
round(countIf(bid_price > ask_price AND ask_price > 0) / 1e3, 1) AS crossed_k,
round(countIf(bid_price = ask_price AND bid_price > 0) / toFloat64(greatest(countIf(bid_price > ask_price AND ask_price > 0), 1)), 0) AS locked_per_crossed,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(census_day)
AND sip_timestamp < toDateTime(census_day + 1)آن جلسه شامل 477 میلیون بهروزرسانی قیمت بود: 9.7 میلیون قیمت قفلشده و 67 هزار قیمت متقاطع؛ که در مجموع 204.9 از هر 10,000 بهروزرسانی را تشکیل میدهند. نسبت قیمتهای قفلشده به متقاطع 145-به-یک بود. نرخ دادههای ناقص (بدون مشخص کردن سمت خرید یا فروش) 2.8 در هر 10,000 مورد بود. خلاصهی بازار در 7 جولای نیز همین آمار را در کنار هر اسپرد (spread) اندازهگیری شده نشان میدهد.
نرخ کل بازار، ترکیبی از هزاران نماد بسیار متفاوت است. جدول زیر آمار را بر روی مجموعهای منتخب از ده نماد بازبینی میکند؛ شامل هشت نماد پرمعامله و دو نماد با نقدشوندگی بسیار پایین یعنی Nathan's Famous (NATH) و Seneca Foods (SENEA) — در جلسات تکمیلشده اخیر، شامل ساعات معاملاتی پس از بازار، به همراه اسپرد معمول هر نماد.
کد دقیق SQL پشت هر عدد
SELECT ticker,
round(count() / 1e3, 1) AS updates_k,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
countIf(bid_price = ask_price AND bid_price > 0) AS locked_records,
countIf(bid_price > ask_price AND ask_price > 0) AS crossed_records,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY ticker
ORDER BY tickerستون اسپرد را با نرخها مقایسه کنید. Coca-Cola که معمولاً با اسپرد 1 سنت قیمتگذاری میشود، در 215.9 از هر 10,000 بهروزرسانی، قیمت قفلشده یا متقاطع داشت؛ NVDA (با اسپرد 2 سنت) نرخ 91 در هر 10,000 مورد و SPY (با اسپرد 2 سنت) نرخ 52.2 را ثبت کرد. AMD که اسپرد معمول آن در ساعات پس از بازار 44 سنت بود، تنها با نرخ 5.9 در هر 10,000 مورد ثبت شد. وضعیت قفلشده زمانی رخ میدهد که دو بازار در یک لحظه به یک قیمت واحد برسند؛ هرچه اسپرد معمول بیشتر باشد، احتمال رسیدن به آن قیمت کمتر است.
نمادهای کمحجم تقریباً در آمار ثبت نمیشوند: Nathan's Famous در میان 8.4 هزار بهروزرسانی، دارای 0 مورد قفلشده و 0 مورد متقاطع بود؛ Seneca Foods نیز در میان 40.5 هزار بهروزرسانی، دارای 0 و 0 مورد بود. ستون دیگر مربوط به دادههای یکطرفه است: نرخ دادههای یکطرفه در Nathan's Famous برابر با 41.5 در هر 10,000 مورد و در Seneca Foods برابر با 17 بود، در حالی که این نرخ برای SPY برابر با 0 است. موارد قفلشده و متقاطع در بازارهایی با سرعت و اسپرد کم رخ میدهند؛ در حالی که دادههای یکطرفه در بازارهای با نقدشوندگی کم دیده میشوند.
When do locked and crossed quotes cluster?
The name census says where; the clock says when. Here is the checked set's locked-or-crossed rate by 30-minute Eastern Time bucket, 4:00 a.m. to 8:00 p.m., with each bucket's update traffic alongside.
کد دقیق SQL پشت هر عدد
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_timeThe rate climbs across the session. The 05:00 premarket bucket measured 3 per 10,000 on 0.59 million updates; the 09:30 bucket — regular trading's first half hour, opened by the opening auction — ran 24.9 per 10,000 on 9.98 million updates. From there the rate builds into the close, reaching 109.9 per 10,000 in the 15:30 bucket, the run-up to the closing auction. One receipt row pins the shape:
کد دقیق SQL پشت هر عدد
SELECT
round(countIf(is_locked) / 1e3, 1) AS locked_k,
round(countIf(is_crossed) / 1e3, 1) AS crossed_k,
round(countIf(is_locked) / toFloat64(greatest(countIf(is_crossed), 1)), 1) AS locked_per_crossed,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569)) * 1e4, 1) AS premarket_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599)) * 1e4, 1) AS opening_half_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779)) * 1e4, 1) AS midday_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)) * 1e4, 1) AS closing_half_hour_per_10k,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599))), 1) AS close_to_open_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779))), 1) AS close_to_midday_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569))), 1) AS close_to_premarket_ratio
FROM (
SELECT
bid_price = ask_price AND bid_price > 0 AS is_locked,
bid_price > ask_price AND ask_price > 0 AS is_crossed,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_minute
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
)Across the whole window the checked set printed 257.2 thousand locked records against 25.6 thousand crossed — 10.1 locked for every crossed. The closing half hour's rate, 109.9 per 10,000, ran 4.4 times the opening half hour's 24.9 and 2.3 times the noon hour's 48.5.
The display ban does not even apply before 9:30 a.m., yet the whole 4:00–9:30 stretch — premarket trading, quoting on a fraction of regular-hours traffic — showed just 10.9 per 10,000, and the closing half hour ran 10.1 times that rate. These records collect where quoting runs fast and tight, not where the rulebook is loosest.
Data notes: window and scope
- The whole-tape census covers one full UTC calendar day, every listed symbol included; the checked-set panels cover a rolling window of recent completed sessions, extended hours (4:00 a.m.–8:00 p.m. ET) included. Every window ends three days behind the refresh date — the quote warehouse carries a one-to-two-day ingest lag at its front edge.
- The ten-name table is a checked set, not a market-wide ranking; clock buckets after 4:00 p.m. run on a small fraction of regular-hours traffic (the update-count column is charted for that reason).
- These are counts of records, not durations. Per-update forensics — nanosecond gaps, plus crossed and zero-bid receipts on a single session's SPY tape — live in the June 29 microstructure deep-dive.
سوالات متداول
بازار قفلشده (Locked Market) در سهام چیست؟
بازار قفلشده وضعیتی است که در آن بهترین قیمت خرید (bid) با بهترین قیمت فروش (ask) برابر باشد؛ یعنی spread برابر با صفر باشد. این حالت زمانی رخ میدهد که قیمت خرید در یک بورس با قیمت فروش در بورسی دیگر مطابقت داشته باشد. طبق مقررات Regulation NMS، بورسها اجازه ندارند در ساعات عادی معاملات، قیمتهایی را نمایش دهند که منجر به ایجاد این وضعیت شود.
وقتی قیمت خرید بالاتر از قیمت فروش باشد، به چه معناست؟
قیمت خرید بالاتر از قیمت فروش، بازار متقاطع (Crossed Market) نامیده میشود. دفتر سفارشات در یک بورس واحد نمیتواند در این حالت باقی بماند، زیرا سفارشهای همپوشان بلافاصله اجرا میشوند. یک NBBO متقاطع تقریباً همیشه ناشی از بهروزرسانی همزمان قیمتها در دو بورس در لحظاتی متفاوت است.
آیا بازارهای قفلشده و متقاطع غیرقانونی هستند؟
برای یک سرمایهگذار عادی خیر. طبق قانون 610(d) از Regulation NMS، بورسها موظف هستند از نمایش قیمتهای قفلشده یا متقاطع توسط اعضای خود در ساعات عادی معاملات جلوگیری کنند. سوابق گذرا در فید تجمیعی، ناشی از بهروزرسانی بورسها در لحظات بسیار نزدیک به هم است.
بازارهای قفلشده و متقاطع هر چند وقت یکبار رخ میدهند؟
به صورت معمول: تنها در 2026-07-14، تعداد 9.7 میلیون رکورد قفلشده و 67 هزار رکورد متقاطع در نوار تجمیعی ثبت میشود که معادل 204.9 از هر 10,000 بهروزرسانی است. این نرخ در نمادهایی با استعلام قیمت فشرده بسیار بالاتر از نمادهای با نقدشوندگی کم است و در نزدیکی زمان بسته شدن بازار، بیشتر از زمان بازگشایی رخ میدهد.
تمام اعداد در این صفحه از یک پرسوجوی ذخیرهشده استخراج میشوند؛ برای مشاهده دقیق نحوه محاسبه یک وضعیت قفلشده یا متقاطع، کد SQL زیر هر پنل را باز کنید. برای اجرای همین آمار روی نمادهایی که معامله میکنید، درخواست خود را به زبان ساده در ترمینال Strasmore مطرح کنید.