Locked এবং Crossed Market কী এবং এর কারণ
Locked এবং Crossed Market কী তা জানুন। Reg NMS নিয়ম অনুযায়ী কেন এই পরিস্থিতি নিষিদ্ধ এবং কতবার এগুলো ঘটে তা ডেটা দিয়ে বিশ্লেষণ করা হয়েছে।
একটি লকড মার্কেট (locked market) হলো এমন একটি মুহূর্ত যখন কোনো স্টকের সর্বোচ্চ বিড (best bid) এবং সর্বোচ্চ আস্ক (best ask) সমান হয়—অর্থাৎ বিড-আস্ক স্প্রেড থাকে ঠিক শূন্য। একটি ক্রসড মার্কেট (crossed market) এর চেয়েও জটিল: এখানে সর্বোচ্চ বিড, সর্বোচ্চ আস্কের চেয়ে বেশি থাকে। মার্কিন বাজার বিধি অনুযায়ী এক্সচেঞ্জগুলোর জন্য এই পরিস্থিতি প্রদর্শন করা নিষিদ্ধ, তবুও কনসোলিডেটেড কোট রেকর্ড বা সমন্বিত উদ্ধৃতি নথিতে উভয় পরিস্থিতিই নিয়মিত দেখা যায়। এই পৃষ্ঠাটি উভয় পরিস্থিতির সংজ্ঞা দেয়, নিয়মটি ব্যাখ্যা করে এবং প্রতিটি কতবার ঘটে তা পরিমাপ করে।
Locked market কী?
প্রতিটি US স্টক একই সাথে দুটি মূল্য প্রদর্শন করে: bid, যা কোনো ক্রেতার দেওয়া সর্বোচ্চ মূল্য, এবং ask, যা কোনো বিক্রেতার গ্রহণ করা সর্বনিম্ন মূল্য। সাধারণত ask-এর মান bid-এর চেয়ে বেশি থাকে; এই দুটির মধ্যবর্তী ব্যবধান হলো bid-ask spread, যা তাৎক্ষণিক লেনদেনের অন্তর্নিহিত খরচ।
যখন এই ব্যবধান শূন্য হয়ে যায়, তখন তাকে locked market বলা হয়: উদাহরণস্বরূপ, একটি স্টকের bid $10.00 এবং ask $10.05 থাকলে সেখানে পাঁচ সেন্টের ব্যবধান রয়েছে; কিন্তু যদি ask কমে $10.00-এ নেমে আসে এবং bid একই থাকে, তবে কোটেশনটি $10.00 / $10.00 হিসেবে locked হয়ে যায়।
একটি একক এক্সচেঞ্জে এই অবস্থা স্থায়ী হতে পারে না — $10.00-এ একটি ক্রয় এবং $10.00-এ একটি বিক্রয় তৎক্ষণাৎ সম্পন্ন হয়ে যায়। একটি locked quote কেবল বিভিন্ন ভেন্যু বা এক্সচেঞ্জের মধ্যে টিকে থাকে। US স্টকসমূহ একই সাথে এক ডজনেরও বেশি এক্সচেঞ্জে লেনদেন হয়, এবং NBBO — যা আপনার ব্রোকারেজ অ্যাপে প্রদর্শিত হয় (national best bid and offer) — সমস্ত এক্সচেঞ্জ থেকে সেরা bid এবং ask সংগ্রহ করে সমন্বয় করে। একটি ভেন্যুতে $10.00 bid এবং অন্য একটি ভেন্যুতে $10.00 ask থাকলে জাতীয় কোটেশনটি lock হয়ে যায়, যদিও কোনো একক ভেন্যুর বুক lock হয় না।
ক্রসড মার্কেট (crossed market) কী?
একটি ক্রসড মার্কেট সাধারণ নিয়ম উল্টে দেয়: এখানে সেরা বিড (bid) মূল্যটি সেরা আস্ক (ask) মূল্যের উপরে থাকে — উদাহরণস্বরূপ, ১০.০০ ডলার আস্কের বিপরীতে ১০.০২ ডলার বিড। তাত্ত্বিকভাবে, যে কেউ ১০.০০ ডলারে কিনে ১০.০২ ডলারে বিক্রি করতে পারে এবং ঝুঁকিহীনভাবে প্রতি শেয়ারে দুই সেন্ট লাভ করতে পারে। এই নিশ্চিত লাভের কারণেই একটি ক্রসড কোট স্থায়ী হতে পারে না: পেশাদার প্রতিষ্ঠানগুলো — যাদের মধ্যে বেশিরভাগ স্টকের উভয় দিকের কোটেশন প্রদানকারী market makers অন্তর্ভুক্ত — সুযোগটি পাওয়ার সাথে সাথেই সেই আরবিট্রেজ (arbitrage) গ্রহণ করে নেয়, এবং এর ফলে উভয় কোটেশনই समाप्त হয়ে যায়। ডেটাতে যা অবশিষ্ট থাকে তা হলো একটি মুহূর্তের ঝলক: একটি এক্সচেঞ্জের আপডেটের সাথে অন্যটির আপডেটের মধ্যবর্তী সময়ের একটি ক্রসড রেকর্ড।
কেন Reg NMS লকড এবং ক্রসড কোট নিষিদ্ধ করে
এই নিষেধাজ্ঞাটি Regulation NMS-এর অন্তর্ভুক্ত, যা মার্কিন স্টক এক্সচেঞ্জগুলোর লেনদেনের জন্য SEC-এর একটি নিয়মাবলি (২০০৫ সালে গৃহীত)। Rule 610(d) অনুযায়ী, প্রতিটি এক্সচেঞ্জকে নিশ্চিত করতে হয় যে তাদের সদস্যরা নিয়মিত লেনদেনের সময় এমন কোনো কোট প্রদর্শন করবে না যা protected quotes—অর্থাৎ অন্যান্য এক্সচেঞ্জের স্বয়ংক্রিয় সেরা বিড এবং অফার—এর সাথে লকড বা ক্রসড অবস্থায় থাকে। এর উদ্দেশ্য হলো: যদি কোনো বিড অন্য কারো আস্কের সমান হয়, তবে সেটি সরাসরি লেনদেন হতে পারে; নিয়মাবলি চায় সেই লেনদেনটি রাউটিং এবং কার্যকর করা হোক, কোনো স্থায়ী বৈপরীত্য হিসেবে প্রদর্শিত না হোক।
নিচের তথ্যের জন্য নিয়মের একটি সীমা গুরুত্বপূর্ণ: এটি কোট প্রদর্শন নিয়ন্ত্রণ করে, কোট থাকা নয়। প্রতিটি ভেন্যু তার নিজস্ব বুক কী প্রদর্শন করবে তা নিয়ন্ত্রণ করে; কনসোলিডেটেড রেকর্ডটি বিভিন্ন ভেন্যু থেকে রিয়েল-টাইমে বিভিন্ন ফিড থেকে সংগ্রহ করা হয়। কোনো একক অংশগ্রহণকারী নিয়ম ভঙ্গ না করেও সেখানে একটি লকড NBBO দেখা দিতে পারে।
কেন locked এবং crossed quotes এখনও টেপে দেখা যায়
গতি। এক্সচেঞ্জগুলো মাইক্রোসেকেন্ডের মধ্যে কোট আপডেট করে এবং কনসোলিডেটেড ফিড প্রতিটি আপডেটের সাথে পুনরায় তৈরি হয়। দুটি সাধারণ ঘটনা এর মধ্যে locked এবং crossed রেকর্ড তৈরি করে:
- Races। একটি এক্সচেঞ্জ তার bid বাড়িয়ে $10.00 করছে, যখন অন্যটি এখনও $10.00 ask প্রদর্শন করছে। এগুলো একত্রিত করার ফলে, ধীরগতির দিকটি আপডেট না হওয়া পর্যন্ত NBBO locked হিসেবে দেখায়; একই race যদি এক সেন্ট বেশি হয়ে যায়, তবে সেটি crossed হিসেবে দেখায়।
- Stale এবং one-sided রেকর্ড। কিছু রেকর্ডে কেবল একটি দিক থাকে — একটি bid যার কোনো ask নেই, অথবা এর বিপরীত। নিচের পরিসংখ্যান অনুযায়ী, কম লেনদেন হওয়া শেয়ারগুলোর ক্ষেত্রে এটি দিনের বেশিরভাগ সময় ধরে ঘটে থাকে।
এই পৃষ্ঠার গণনার নিয়মাবলী: locked = bid এবং ask সমান, উভয় দিকই পজিটিভ; crossed = bid একটি পজিটিভ ask এর চেয়ে বেশি; one-sided = যেকোনো একটি দিক শূন্য বা অনুপস্থিত। কোনো কিছুই বাদ দেওয়া হয় না — 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। লকড মার্কেটের সংখ্যা ক্রসড মার্কেটের তুলনায় 145-to-one। যে রেকর্ডগুলোতে কোনো সাইড ছিল না, তার সংখ্যা প্রতি ১০,০০০-এ ছিল 2.8। ৭ জুলাইয়ের মার্কেট রিক্যাপ প্রতিটি স্প্রেড পরিমাপের পাশে একই সংখ্যা প্রকাশ করে।
মার্কেট-ব্যাপী এই হার হাজার হাজার ভিন্ন ভিন্ন নামে মিশ্রিত থাকে। নিচের টেবিলে সাম্প্রতিক সমাপ্ত সেশনগুলোর ওপর ভিত্তি করে দশটি যাচাইকৃত সিম্বলের ওপর সেন্সাস পুনরায় করা হয়েছে, যার মধ্যে আটটি পরিচিত টিকার এবং দুটি অত্যন্ত কম লেনদেন হওয়া স্মল ক্যাপ যেমন, 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 বার লকড বা ক্রসড কোট দেখিয়েছে; Nvidia (2¢) প্রতি ১০,০০০-এ 91 এবং SPY (2¢) 52.2। AMD, যার সাধারণ এক্সটেন্ডেড-ডে কোট ছিল 44¢ চওড়া, প্রতি ১০,০০০-এ মাত্র 5.9 ছিল। একটি লক তখনই ঘটে যখন দুটি ভেন্যু একই মুহূর্তে একই পেনি বা সেন্টে পৌঁছায় — সাধারণ কোট যত চওড়া হয়, সেই প্রক্রিয়াটি তত দীর্ঘ হয়।
কম লেনদেনের নামগুলো খুব কম মাত্রায় নিবন্ধিত হয়: Nathan's Famous 8.4 হাজার আপডেটের মধ্যে 0 লকড এবং 0 ক্রসড রেকর্ড করেছে, Seneca Foods 40.5 হাজার আপডেটের মধ্যে 0 এবং 0। তাদের কলামটি হলো অন্যটি: Nathan's Famous-এ প্রতি ১০,০০০-এ এক-পার্শ্বীয় রেকর্ড ছিল 41.5 এবং 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.
FAQ
স্টকে লকড মার্কেট (locked market) বলতে কী বোঝায়?
লকড মার্কেট হলো এমন একটি কোটেশন যেখানে সেরা Bid এবং সেরা Ask এর মান সমান—অর্থাৎ স্প্রেড শূন্য। এটি বিভিন্ন এক্সচেঞ্জের মধ্যে ঘটে—যখন একটি ভেন্যু'র Bid অন্য একটি ভেন্যু'র Ask এর সাথে মিলে যায়। রেগুলেশন NMS অনুযায়ী, সাধারণ লেনদেনের সময় এক্সচেঞ্জগুলোর জন্য এমন কোটেশন প্রদর্শন করা নিষিদ্ধ যা লকড মার্কেট তৈরি করে।
Bid এর মান Ask এর চেয়ে বেশি হলে তার মানে কী?
Bid এর মান Ask এর চেয়ে বেশি হওয়াকে ক্রসড মার্কেট (crossed market) বলা হয়। একটি সিঙ্গেল এক্সচেঞ্জ বুক এভাবে থাকতে পারে না—ওভারল্যাপিং অর্ডারগুলো সাথে সাথে কার্যকর হয়ে যায়। একটি ক্রসড NBBO সাধারণত দুটি ভিন্ন ভেন্যু'র কোটেশন আপডেট হওয়ার মাঝখানের মুহূর্তের প্রতিফলন।
লকড এবং ক্রসড মার্কেট কি অবৈধ?
সাধারণ বিনিয়োগকারীর জন্য এটি নয়। রেগুলেশন NMS এর Rule 610(d) অনুযায়ী, এক্সচেঞ্জগুলোকে সাধারণ লেনদেনের সময় তাদের সদস্যদের লকড বা ক্রসড কোটেশন প্রদর্শন করা থেকে বিরত থাকতে হয়। কনসোলিডেটেড ফিডে থাকা এই সাময়িক রেকর্ডগুলো মূলত বিভিন্ন ভেন্যু'র ভিন্ন ভিন্ন সময়ে আপডেট হওয়ার ফলে তৈরি হয়।
লকড এবং ক্রসড মার্কেট কত ঘনঘন ঘটে?
নিয়মিতভাবে ঘটে: শুধুমাত্র 2026-07-14 দিনে কনসোলিডেটেড টেপে 9.7 মিলিয়ন লকড এবং 67 হাজার ক্রসড রেকর্ড দেখা যায়—যা প্রতি ১০,০০০ আপডেটের মধ্যে 204.9। যেসব স্টকের কোটেশন খুব ঘনঘন পরিবর্তিত হয়, সেখানে এই হার কম কোটেশনযুক্ত স্টকের তুলনায় অনেক বেশি। এছাড়া মার্কেট ক্লোজ হওয়ার সময় এই হার ওপেনিং সময়ের তুলনায় বেশি থাকে।
এই পৃষ্ঠার প্রতিটি সংখ্যা একটি সংরক্ষিত কুয়েরি থেকে নেওয়া হয়েছে—লক বা ক্রস কীভাবে গণনা করা হয় তা দেখতে যেকোনো প্যানেলের নিচের SQLটি এক্সপ্যান্ড করুন। আপনি যে স্টকগুলো ট্রেড করেন সেগুলোর ক্ষেত্রে একই পরিসংখ্যান পেতে Strasmore টার্মিনালে ইংরেজিতে অনুরোধ করুন।