Sub-Penny Rule اور Price Improvement کی وضاحت
Rule 612، $1.00 یا اس سے زیادہ quotes میں cent سے چھوٹے increments روکتا ہے، مگر trade print مختلف ہو سکتا ہے۔ اسی لیے fill $47.3218 پر دکھائی دے سکتا ہے۔
Sub-penny rule، Regulation NMS کے Rule 612 میں درج ہے، اور یہ اس کم ترین increment کا تعین کرتا ہے جسے displayed stock quote استعمال کر سکتا ہے: $1.00 یا اس سے زیادہ قیمت کے لیے one cent، اور $1.00 سے کم قیمت کے لیے one hundredth of a cent۔ یہ پابندی اس قیمت پر عائد ہوتی ہے جسے کوئی venue display یا accept کر سکتا ہے۔ اس کا اس قیمت سے کوئی تعلق نہیں جس پر trade print ہو سکتا ہے۔ اسی لیے آپ کی confirmation پر fill $47.3218 پر دکھائی دے سکتا ہے، جبکہ اسکرین پر موجود ہر quote round cent پر ختم ہو رہا ہو۔
Sub-penny rule اصل میں کیا کہتا ہے
Rule 612، Regulation NMS کے ساتھ 2005 میں نافذ ہوا، اور اس کا operative متن مختصر ہے۔ کوئی national securities exchange، alternative trading system، vendor یا broker کسی NMS stock میں، جب قیمت $1.00 یا اس سے زیادہ ہو، $0.01 سے زیادہ باریک increment پر order، quotation یا indication of interest کو display، rank یا accept نہیں کر سکتا۔ $1.00 سے کم قیمت پر یہ حد $0.0001 ہو جاتی ہے۔ NMS stock سے مراد exchange-listed equity ہے، اس لیے یہ rule بنیادی طور پر ہر اس چیز کا احاطہ کرتا ہے جسے retail brokerage account کے ذریعے US exchange پر خریدا جا سکتا ہے۔
اہم الفاظ display اور accept ہیں۔ یہ rule quotes اور orders پر لاگو ہوتا ہے۔ اس کا اطلاق executions پر نہیں ہوتا۔ کوئی venue $47.3215 کا bid post نہیں کر سکتا، اور آپ کا broker اس قیمت پر limit order accept نہیں کر سکتا، لیکن trade قانونی طور پر اسی قیمت پر print ہو سکتا ہے۔
یہ rule stepping ahead کے خلاف بنایا گیا تھا۔ کوئی trader $10.00 کے موجود bid کے سامنے $10.0001 کا bid پوسٹ کر کے queue میں آگے آ سکتا تھا، جبکہ حقیقی معاشی commitment صرف one hundredth of a cent ہوتی۔ Displayed grid کو زیادہ coarse رکھنے سے یہ راستہ بند ہوتا ہے اور price priority کو کچھ وزن ملتا ہے۔
آپ کا fill four decimal places پر کیوں print ہوا
US stocks میں زیادہ تر marketable retail orders کبھی exchange تک نہیں پہنچتے۔ وہ wholesaler کے پاس route ہوتے ہیں، جو off-exchange market maker ہوتا ہے اور اپنے inventory کے مقابل order fill کرتا ہے۔ جب wholesaler آپ کا order fill کرتا ہے تو وہ quote display نہیں کر رہا ہوتا، اس لیے penny grid execution price پر لاگو نہیں ہوتی۔ وہ عموماً national best bid and offer کے اندر fill کرتا ہے، اکثر cent کے ایک حصے کے فرق سے۔ NBBO اور آپ کے fill کے درمیان یہی فرق confirmation اور broker کی execution quality reports میں price improvement کے طور پر درج ہوتا ہے۔
اس mechanism کا اثر public tape پر بھی نظر آتا ہے۔ ہر trade consolidated feed پر اپنی exact price کے ساتھ print ہوتا ہے۔ اس لیے ان prints کو گننا جن کی قیمت cent کے ایک حصے پر مشتمل ہو، ان fills کو گننے کے مترادف ہے جو grid کے اندر ہوئے۔
ہر عدد کے پیچھے موجود درست SQL
SELECT
ticker,
round(100 * countIf(toUInt64(round(toFloat64(price) * 10000)) % 100 != 0) / count(), 2) AS subpenny_trade_pct,
round(100 * sumIf(size, toUInt64(round(toFloat64(price) * 10000)) % 100 != 0) / sum(size), 2) AS subpenny_volume_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('MSFT', 'AAPL', 'NVDA', 'KO', 'BAC', 'T', 'F')
AND sip_timestamp >= '2026-06-17 14:00:00'
AND sip_timestamp < '2026-06-17 14:15:00'
AND price > 0
GROUP BY ticker
ORDER BY subpenny_trade_pct DESC17 June 2026 کو fifteen minute window کے دوران، KO نے ناپے گئے 7 names میں سب سے زیادہ شرح دکھائی، جہاں 46.56% prints sub-penny price پر ہوئے۔ MSFT میں یہ شرح سب سے کم، یعنی 31.87% رہی۔ Prints کے بجائے shares گننے سے دوسری تصویر سامنے آتی ہے: KO میں sub-penny prints ان shares کے 24.88% کے برابر تھے جن کی ownership تبدیل ہوئی۔
Wholesaler fills عموماً چھوٹے سائز کے ہوتے ہیں۔ ذیل کا panel AAPL کے ایک مکمل session کے prints کو trade size کے لحاظ سے تقسیم کرتا ہے، جس سے retail-sized flow اور institutional blocks الگ دکھائی دیتے ہیں۔
ہر عدد کے پیچھے موجود درست SQL
WITH prints AS
(
SELECT
size,
multiIf(size < 100, 'under 100 shares',
size < 500, '100 to 499 shares',
size < 1000, '500 to 999 shares',
size < 5000, '1,000 to 4,999 shares',
'5,000 shares and up') AS size_bucket,
toUInt64(round(toFloat64(price) * 10000)) % 100 != 0 AS sub_penny
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-17 00:00:00'
AND sip_timestamp < '2026-06-18 00:00:00'
AND price > 0
AND size > 0
)
SELECT
size_bucket,
round(100 * countIf(sub_penny) / count(), 2) AS subpenny_trade_pct,
round(100 * count() / (SELECT count() FROM prints), 2) AS share_of_prints_pct
FROM prints
GROUP BY size_bucket
ORDER BY min(size)under 100 shares کے prints اس session کی AAPL trades کا 88.99% ہیں، اور ان میں 38.66% بار sub-penny price تھی۔ سب سے بڑا band، 5,000 shares and up، 18.06% وقت sub-penny price پر print ہوا۔ Panel کے دونوں سروں پر یہ fills موجود ہیں۔
سستے stock پر ایک penny زیادہ بھاری لاگت کیوں ہے
Basis point، one hundredth of one percent، share prices کے درمیان trading costs کا موازنہ کرنے کی standard unit ہے۔ Basis points میں ناپنے پر $3 stock کے لیے one cent minimum tick، $500 stock کے مقابلے میں بالکل مختلف charge بنتا ہے۔
ہر عدد کے پیچھے موجود درست SQL
WITH day_prices AS
(
SELECT
ticker,
toFloat64(close) AS px
FROM global_markets.stocks_daily_aggs
WHERE date = '2026-06-17'
AND volume >= 500000
AND close >= 1
AND close < 1000
)
SELECT
multiIf(px < 2, '$1 to $2',
px < 5, '$2 to $5',
px < 10, '$5 to $10',
px < 25, '$10 to $25',
px < 50, '$25 to $50',
px < 100, '$50 to $100',
px < 250, '$100 to $250',
'$250 to $1,000') AS price_bucket,
count() AS stock_count,
round(avg(10000 * 0.01 / px), 2) AS one_cent_bps
FROM day_prices
GROUP BY price_bucket
ORDER BY min(px)17 June 2026 کو 8 price bands میں، $1 to $2 band میں one cent share price کے 71.37 basis points کے برابر تھا، جبکہ $250 to $1,000 band میں یہ 0.28 basis points تھا۔ Penny ایک ہی تھی، مگر مختلف prices کے مقابلے میں اس کی نسبت مختلف تھی۔
Rule میں اس فرق کے لیے پہلے ہی ایک adjustment موجود ہے۔ $1.00 سے کم قیمت پر increment کم ہو کر $0.0001 ہو جاتا ہے، جو اس tick کا one hundredth ہے جو اس سطح سے کچھ اوپر لاگو ہوتا ہے۔ $0.99 کا stock، $1.01 پر اسی stock کے مقابلے میں one hundred times finer grid پر quote ہوتا ہے، اور یہ نمایاں فرق عین boundary پر پیدا ہوتا ہے۔
یہ arithmetic quoted bid ask spreads میں بھی نظر آتی ہے۔ ذیل کا panel اسی second میں کہیں بھی پوسٹ کیے گئے highest bid اور lowest offer کو لیتا ہے، پھر اس gap کو fifteen minute window میں average کرتا ہے۔ جن seconds میں book locked یا crossed تھی، انہیں خارج کر دیا جاتا ہے، اور locked and crossed markets میں بتایا گیا ہے کہ یہ صورتِ حال کیسی ہوتی ہے۔
ہر عدد کے پیچھے موجود درست SQL
WITH best_quote AS
(
SELECT
ticker,
toStartOfSecond(sip_timestamp) AS sec,
toFloat64(max(bid_price)) AS best_bid,
toFloat64(min(ask_price)) AS best_ask
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('MSFT', 'AAPL', 'NVDA', 'KO', 'BAC', 'T', 'F')
AND sip_timestamp >= '2026-06-17 14:00:00'
AND sip_timestamp < '2026-06-17 14:15:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker, sec
HAVING min(ask_price) > max(bid_price)
)
SELECT
concat(ticker, ' ($', toString(round(avg((best_bid + best_ask) / 2), 0)), ')') AS name,
round(avg(best_ask - best_bid) * 100, 2) AS avg_spread_cents,
round(10000 * 0.01 / avg((best_bid + best_ask) / 2), 2) AS one_cent_bps,
round(10000 * avg(best_ask - best_bid) / avg((best_bid + best_ask) / 2), 2) AS spread_bps,
if(avg(best_ask - best_bid) <= 0.015, 'at or under $0.015', 'above $0.015') AS tier
FROM best_quote
GROUP BY ticker
ORDER BY avg((best_bid + best_ask) / 2) DESCMSFT ($388) کے لیے penny tick price کے 0.26 basis points کے برابر ہے، جبکہ average quoted gap 6.23 cents، یا 1.61 basis points، رہا۔ F ($14) کے لیے penny 6.94 basis points کے برابر ہے، اور 1 cents کا quoted gap 6.94 basis points بنتا ہے۔ کم قیمت والا name percentage screen پر wide دکھائی دے سکتا ہے، حالانکہ وہ one cent gap quote کر رہا ہوتا ہے، جو displayed grid کی اجازت دینے والی کم ترین حد ہے۔ اس مقام پر quoted spread market کی depth کے بجائے tick کے سائز کو ظاہر کرتا ہے۔
2024 کی amendment اور half cent tick
September 2024 میں SEC نے Rule 612 میں amendment کی اور ایک دوسرا quoting increment شامل کیا۔ وہ NMS stock جس کا پچھلے evaluation period کے دوران time-weighted average quoted spread $0.015 یا اس سے کم ہو، $0.005 increments میں quote ہوتا ہے۔ باقی تمام stocks کے لیے penny increment برقرار رہتی ہے۔ Evaluation مقررہ schedule کے مطابق دہرایا جاتا ہے اور متاثرہ symbols ہر round میں دوبارہ شائع کیے جاتے ہیں۔ اسی لیے یہ page threshold بیان کرتا ہے اور roster SEC کے حوالے کرتا ہے۔
$0.015 test کن names کا انتخاب کرتا ہے؟ ان names کا جو پہلے ہی floor سے جڑے ہوتے ہیں: heavily traded stocks جن کا quoted spread session کے بیشتر حصے میں one cent یا اس کے بہت قریب رہتا ہے۔ جو stock معمول کے مطابق three یا four cents wide quote ہوتا ہے، وہ اس test کے قریب نہیں پہنچتا۔ اوپر والے panel میں ایک tier column موجود ہے جو measured window پر threshold arithmetic لاگو کرتا ہے۔ اس لیے وہ صرف illustration ہے، designation نہیں۔ SEC پورے evaluation period میں time-weighted average ناپتا ہے۔ ایک session کے fifteen minutes اس کا متبادل نہیں ہیں۔
اسی rulemaking کے تحت protected quote تک رسائی کے لیے exchange کی وصول کی جانے والی fee کی maximum حد بھی کم کی گئی، اور $1.00 یا اس سے زیادہ قیمت والے stocks کے لیے یہ $0.0010 per share کر دی گئی۔ دونوں اعداد ایک ساتھ کام کرتے ہیں: half cent quoting grid کے ساتھ tenth of a cent access fee اس امکان کو کم رکھتی ہے کہ fee tick کے بڑے حصے کو کھا جائے۔
Amendment quoting کو govern کرتی ہے۔ Execution prices کے بارے میں اوپر بیان کردہ تمام باتیں اس سے تبدیل نہیں ہوتیں، اور quote کے اندر ہونے والا off-exchange fill اب بھی زیادہ باریک increment پر ہو سکتا ہے۔
Limit order invalid increment کی وجہ سے reject کیوں ہوتا ہے
$47.3215 کا limit order broker سے ایسی price accept کرنے کا مطالبہ کرتا ہے جسے rule کے تحت accept نہیں کیا جا سکتا۔ اس لیے order invalid price increment کے message کے ساتھ واپس آ سکتا ہے، یا firm کی پالیسی کے مطابق nearest legal tick پر round ہو سکتا ہے۔ $1.00 boundary خود order کی price پر لاگو ہوتی ہے، stock کی last sale پر نہیں۔ اس لیے $0.4732 کا order $0.0001 grid پر legal ہے، جبکہ $0.47325 legal نہیں ہے۔
Trade کے دوسری جانب اس کی mirror image موجود ہے۔ Wholesaler جب آپ کو $47.3218 پر fill کرتا ہے تو آپ کی price اور اپنی price کے درمیان cent کا جو حصہ ہے اسے برقرار رکھتا ہے، اور how market makers make money میں بتایا گیا ہے کہ یہ حصہ کہاں جاتا ہے۔
FAQ
Sub-penny rule کیا ہے؟
یہ Regulation NMS کا Rule 612 ہے۔ یہ کسی exchange، alternative trading system، broker یا vendor کو NMS stock میں ایسے order یا quote کو display یا accept کرنے سے روکتا ہے جس کی price $1.00 یا اس سے زیادہ ہو اور increment $0.01 سے باریک ہو، یا جس کی price $1.00 سے کم ہو اور increment $0.0001 سے باریک ہو۔
میرے stock order کا fill four decimal places والی price پر کیوں ہوا؟
یہ rule quotes اور orders پر لاگو ہوتا ہے، executions پر نہیں۔ آپ کا order fill کرنے والا off-exchange market maker national best bid and offer کے اندر execution کر سکتا ہے، یعنی quote سے cent کے ایک حصے کے برابر بہتر price پر۔ Brokers اسی فرق کو price improvement کے طور پر report کرتے ہیں۔
میرا limit order invalid price increment کی وجہ سے reject کیوں ہوا؟
Limit price اس price level پر Rule 612 کی اجازت سے زیادہ باریک increment استعمال کر رہی تھی: $1.00 یا اس سے زیادہ price والے order کے لیے one cent سے باریک، یا $1.00 سے کم price والے order کے لیے $0.0001 سے باریک۔ Order کو legal increment پر دوبارہ درج کرنے سے rejection ختم ہو جاتی ہے۔
2024 کی SEC tick size amendment نے کیا تبدیل کیا؟
اس amendment نے ان NMS stocks کے لیے $0.005 quoting increment شامل کیا جن کا پچھلے evaluation period کے دوران time-weighted average quoted spread $0.015 یا اس سے کم ہو۔ اس threshold سے باہر stocks whole cents میں quote ہوتے رہتے ہیں۔ Amendment quoting increments پر لاگو ہوتی ہے، execution prices پر نہیں۔
یہاں موجود ہر panel اس کے لیے استعمال ہونے والی SQL کے ساتھ فراہم کیا گیا ہے۔ کسی panel کو expand کر کے دیکھا جا سکتا ہے کہ ہر count کس طرح لیا گیا۔ Strasmore terminal پر کسی بھی symbol اور کسی بھی window کے لیے sub-penny print share اور average quoted spread ناپے جا سکتے ہیں۔