Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Order میں ترمیم سے Queue Priority ختم ہوتی ہے؟

Limit order کی price بدلنے سے fill probability پر کیا لاگت آتی ہے؟ جانیں کہ amendment queue priority کب ختم کرتی ہے اور bot کے لیے break-even re-price distance کیا ہے۔

Order modification اور queue priority ایک دوسرے کے خلاف کام کرتے ہیں۔ US equity books اور زیادہ تر futures venues میں resting limit order کی price تبدیل کرنے سے وہ اپنی نئی price پر queue کے آخر میں چلا جاتا ہے، اور displayed size بڑھانے کا بھی یہی نتیجہ ہوتا ہے۔ size کم کرنے سے آپ کی queue میں جگہ برقرار رہتی ہے۔ کسی order کو cancel کرکے نیا order بھیجنا نئی آمد شمار ہوتا ہے اور اسے نیا timestamp ملتا ہے، چاہے آپ کے platform پر اس بٹن کا نام کچھ بھی ہو۔

کیا order میں ترمیم کرنے سے queue priority ختم ہو جاتی ہے؟

چار قواعد تقریباً ہر اس venue پر لاگو ہوتے ہیں جہاں self-directed trader لین دین کرتا ہے۔

  • قیمت تبدیل کرنے سے priority ختم ہو جاتی ہے۔ order نئی قیمت پر نئے order کے طور پر پہنچتا ہے اور وہاں پہلے سے موجود تمام orders کے پیچھے لگ جاتا ہے۔
  • دکھائی جانے والی quantity بڑھانے سے priority ختم ہو جاتی ہے۔ بعض venues صرف اضافی quantity کو دوبارہ queue میں لگاتے ہیں اور original slice کو اس کی جگہ پر رہنے دیتے ہیں، جبکہ کچھ پورے order کا وقت دوبارہ مقرر کرتے ہیں۔ دونوں صورتوں میں اضافی shares کو پرانی جگہ نہیں ملتی۔
  • دکھائی جانے والی quantity کم کرنے سے priority برقرار رہتی ہے۔ venue اسے partial cancel سمجھتا ہے، اور quantity واپس لینے کی صورت میں line position کی کوئی قیمت نہیں دینی پڑتی۔
  • ہر بار cancel کرکے دوبارہ بھیجنے سے priority ختم ہو جاتی ہے۔ درمیان میں ایک وقفہ بھی ہوتا ہے جس کے دوران آپ کا کوئی order مارکیٹ میں فعال نہیں رہتا۔

اس عدم توازن کی ایک منطقی وجہ ہے۔ Time priority اس بات کا معاوضہ ہے کہ آپ نے اس قیمت پر اس وقت تک order رکھا جب دوسرے تمام لوگ انتظار کر رہے تھے۔ Quantity بڑھانا یا قیمت تبدیل کرنا نیا risk قبول کرنا ہے، اور نیا risk queue کے آخر سے شروع ہوتا ہے۔ Quantity کم کرنا risk واپس لینا ہے، اس لیے اس پر کوئی قیمت عائد نہیں ہوتی۔ Pro rata book میں حساب بدل جاتا ہے، کیونکہ allocation اس quantity کے مطابق ہوتا ہے جو آپ دکھاتے ہیں، نہ کہ اس لمحے کے مطابق جب آپ پہنچے تھے۔ Price time priority بمقابلہ pro rata دونوں طریقوں کی وضاحت کرتا ہے۔

جوں کا توں تبدیل کریں یا منسوخ کرکے نیا آرڈر دیں؟

Venue پر یہ دو مختلف instructions ہیں۔ Amendment، جسے آپ کا platform modify یا replace کہہ سکتا ہے، ایک ہی message ہوتا ہے جس میں موجودہ order اور مطلوبہ تبدیلی درج ہوتی ہے۔ یہ atomic طور پر نافذ ہوتا ہے: یا تو تبدیلی لاگو ہو جاتی ہے، یا order بغیر تبدیلی کے برقرار رہتا ہے۔ Cancel کے بعد نیا order دینا دو الگ events ہیں، اور ان کے درمیان ایک gap ہوتا ہے۔ اس دوران آپ کی queue position بالکل نہیں رہتی۔ اگر اس gap کے اندر market آپ کی price پر trade کر جائے تو آپ اس trade میں موجود نہیں تھے۔

کچھ venues amendment کو اندرونی طور پر cancel اور نئے order کے طور پر نافذ کرتے ہیں۔ بعض brokers بھی amendment کو باہر بھیجتے وقت cancel and replace میں تبدیل کر دیتے ہیں، حتیٰ کہ venue حقیقی in-place تبدیلی کی سہولت دیتا ہو۔ نتیجہ ایک ہی ہوتا ہے: priority ختم ہو جاتی ہے۔ Rejected amendment کی صورت میں original order book میں برقرار رہتا ہے، جبکہ اگر cancel کامیاب ہو جائے اور اس کے بعد نیا order reject ہو جائے تو کوئی order working نہیں رہتا۔ حتیٰ کہ priority برقرار رکھنے والا amendment بھی عموماً نئے order identifier کے ساتھ واپس آتا ہے۔ اس لیے آپ کے اپنے records میں نیا order دکھائی دیتا ہے، جبکہ book اب بھی اسے پرانے order کے طور پر شمار کرتی ہے۔

ترمیم کی لاگت

Queue position کی قدر اتنی ہی ہوتی ہے جتنی رقم tape اس کے عوض ادا کر سکتی ہے۔ آپ سے آگے موجود shares کی پہلے trading ہونی ضروری ہے، اور پورے session میں ان کی trading rate میں نمایاں اتار چڑھاؤ آتا ہے۔

استفسار کریںدن کے اوقات کے لحاظ سے tape کے ذریعے queue خالی ہونے کی رفتار (AAPL، جون 2026)
ہر عدد کے پیچھے موجود درست SQL
SELECT
    formatDateTime(toStartOfFifteenMinutes(et), '%H:%i')                    AS et_time,
    round(toFloat64(avg(volume)) / 1000, 1)                                 AS avg_k_shares_per_min,
    round(quantileDeterministic(0.5)(toFloat64(volume),
                                     toUInt64(toUnixTimestamp(et))) / 1000, 1) AS median_k_shares_per_min
FROM
(
    SELECT
        toTimeZone(window_start, 'America/New_York') AS et,
        volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'AAPL'
      AND window_start >= '2026-06-01'
      AND window_start <  '2026-07-01'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
)
GROUP BY et_time
ORDER BY et_time
Run this yourself

June 2026 کے دوران 09:30 ET سے شروع ہونے والے 15 منٹ کے وقفے میں فی منٹ AAPL کے medianاً 182.8 ہزار shares trade ہوئے، جبکہ 12:00 سے شروع ہونے والے وقفے میں یہ تعداد 62 ہزار تھی۔ Order وہی تھا اور price بھی وہی۔ لیکن اس کے آگے انتظار کی صورتِ حال market open پر دن کے درمیانی حصے سے بالکل مختلف ہوتی ہے۔

ترمیم سے پہلے اور بعد fill ہونے کا امکان

Amendments کی قیمت میں probability شامل ہوتی ہے۔ ذیل کا panel regular session کے ایک ماہ کے منٹس میں شمار کرتا ہے کہ کتنی بار کسی ایک منٹ کی tape میں کم از کم دیے گئے shares کی تعداد کا volume موجود تھا۔ اسے اس امکان کے طور پر پڑھیں کہ آپ کے آگے موجود اسی سائز کی queue ایک منٹ کے اندر clear ہو جائے۔

استفسار کریںکم از کم N shares رکھنے والی ایک منٹ کی windows کا حصہ (جون 2026)
ہر عدد کے پیچھے موجود درست SQL
WITH minute_volume AS
(
    SELECT
        ticker,
        toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute,
        sum(volume)                                                   AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'KO')
      AND window_start >= '2026-06-01'
      AND window_start <  '2026-07-01'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
    GROUP BY ticker, et_minute
)
SELECT
    q.ahead                                                                                           AS shares_ahead,
    round(100 * countIf(mv.ticker = 'AAPL' AND mv.shares >= q.ahead) / countIf(mv.ticker = 'AAPL'), 1) AS aapl_pct_of_minutes,
    round(100 * countIf(mv.ticker = 'KO'   AND mv.shares >= q.ahead) / countIf(mv.ticker = 'KO'),   1) AS ko_pct_of_minutes
FROM minute_volume AS mv
CROSS JOIN
(
    SELECT arrayJoin([500, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000]) AS ahead
) AS q
GROUP BY q.ahead
ORDER BY q.ahead
Run this yourself

آپ کے آگے 500 shares موجود ہوں تو AAPL کے 100 percent منٹس میں کافی volume تھا، جبکہ KO کے لیے یہ شرح 100 percent رہی۔ 8000 shares کی سطح پر AAPL کا figure 100 percent ہے، اور 128000 shares تک پہنچنے پر یہ کم ہو کر 22.2 percent رہ جاتا ہے۔ curve صرف ایک ہی سمت میں جاتی ہے، اور priority کھونا دراصل اسی curve پر دائیں جانب سرکنے کے برابر ہے۔

اس line کو ایک پُرامید زیادہ سے زیادہ حد سمجھیں۔ ایک منٹ کا volume کئی prices اور market کے دونوں sides پر execute ہوتا ہے، جبکہ اس کا صرف ایک حصہ آپ کی price level پر آتا ہے۔ اس لیے ایک حقیقی queue اس اندازے کے مقابلے میں زیادہ آہستہ clear ہوتی ہے۔ جن منٹس میں کوئی print نہیں ہوا، انہیں شمار نہیں کیا گیا۔ اپنی queue position کا اندازہ لگانا depth اور cancel rates کو شامل کر کے تصویر کو زیادہ درست بناتا ہے۔

Break-even re-price فاصل

اب اس amendment کی قیمت متعین کریں۔ فرض کریں کہ ایک buy order قطار میں موجود ہے اور اس کے آگے 8,000 shares ہیں۔ اگلے ایک منٹ کے اندر اس کے execute ہونے کا امکان 60 فیصد ہے۔ bid کو ایک cent بہتر کرنے سے order نئی best price پر آ جاتا ہے اور اس کے آگے کوئی order نہیں رہتا۔ یہاں اس کے execute ہونے کا امکان 99 فیصد فرض کریں۔ یہ بہتری ہر fill پر فی share ایک cent کی لاگت رکھتی ہے۔

V سے فی share fill کی قدر ظاہر کریں؛ اس میں آپ کا edge اور کوئی rebate شامل ہے۔ t سے re-price distance مراد ہے۔ amendment اس وقت break-even ہوتی ہے جب بہتر odds کو کم شدہ payoff سے ضرب دینے کا نتیجہ پرانے odds کو مکمل payoff سے ضرب دینے کے برابر ہو۔ اسے rearrange کرنے پر ایک سطر ملتی ہے:

t = V x (1 - p0 / p1)

اگر فی share fill کی قدر 3 cents ہو اور odds 60 سے بڑھ کر 99 فیصد ہو جائیں، تو break-even distance تقریباً 1.2 cents بنتا ہے۔ ایک cent کی بہتری اپنی لاگت پوری کر دیتی ہے۔ دو cents کا پیچھا کرنا ایسا نہیں کرتا۔

اسی equation کو ایسے bot کے لیے بھی استعمال کریں جس کا واحد edge maker rebate ہے۔ وسط 2026 تک شائع شدہ fee schedules کے مطابق بڑے US equity exchanges پر top-tier maker rebates تقریباً 0.20 سے 0.30 cents فی share ہیں؛ اسے ایک quarter cent فرض کریں۔ formula کے مطابق break-even distance تقریباً 0.1 cents بنتا ہے، جبکہ کسی بھی US venue پر قابلِ قبول سب سے چھوٹی price change مکمل ایک cent ہے، یعنی تقریباً دس گنا زیادہ۔ rebate محفوظ رکھنے کے لیے re-price کرنے والا bot quarter cent کے پیچھے جانے کے لیے ایک tick ادا کرتا ہے۔

Rebate صرف fills پر ادا ہوتا ہے، ارادے پر نہیں۔ ایسا order جو queue میں بہترین position رکھتا ہو مگر کبھی trade نہ کرے، کچھ حاصل نہیں کرتا۔ اور جو rebate آپ وصول ہی نہ کریں، وہ saving نہیں ہے۔ Maker taker fees اور rebates میں بتایا گیا ہے کہ یہ schedules ادائیگی کیسے کرتے ہیں۔

بہتری کی کوئی گنجائش نہ ہو

قیمت میں بہتری صرف اسی وقت ممکن ہوتی ہے جب bid اور offer کے درمیان کچھ فاصلہ موجود ہو۔ بڑے ناموں والے shares میں اکثر ایسا نہیں ہوتا۔

استفسار کریںquoted spread کے ایک cent پر رہنے کی تعدد (10 جون 2026 کا session)
ہر عدد کے پیچھے موجود درست SQL
SELECT
    ticker                                                                                  AS symbol,
    round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2)                        AS avg_spread_cents,
    round(100 * countIf(toFloat64(ask_price) - toFloat64(bid_price) <= 0.0105) / count(), 1) AS one_tick_wide_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'KO', 'SPY', 'NVDA', 'COST', 'NFLX')
  AND sip_timestamp >= '2026-06-10 13:30:00'
  AND sip_timestamp <  '2026-06-10 20:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND toFloat64(ask_price) - toFloat64(bid_price) < 5
GROUP BY ticker
ORDER BY one_tick_wide_pct DESC
Run this yourself

NFLX نے 10 جون 2026 کو اپنی quote updates میں 81.4 فیصد کے دوران one-cent spread دکھایا، جبکہ اوسط spread 1.3 cents wide رہا۔ دوسری جانب COST کا اوسط spread 77.53 cents تھا۔ one-tick market میں bid اور offer کے درمیان منتقل ہونے کے لیے کوئی درمیانی قیمت موجود نہیں ہوتی، اس لیے queue میں آگے بڑھنے کا واحد راستہ spread کو cross کرنا ہے۔ اس صورت میں آپ taker بن جاتے ہیں: rebate حاصل کرنے کے بجائے taker fee ادا کرتے ہیں، اور spread کا پورا فائدہ چھوڑ دیتے ہیں، نہ کہ صرف ایک tick کا۔

ایک re-pricing bot کو یہ انتخاب کتنی بار درپیش ہوتا ہے

Market-following bot یہ trade صرف ایک بار نہیں کرتا۔ جب بھی order book کی سب سے اوپر والی قیمت اس کے order سے دور ہوتی ہے، bot یہ فیصلہ دوبارہ کرتا ہے۔

استفسار کریںہر 15 منٹ میں distinct best bid prices (AAPL اور KO، 10 جون 2026)
ہر عدد کے پیچھے موجود درست SQL
SELECT
    formatDateTime(toStartOfFifteenMinutes(et), '%H:%i') AS et_time,
    uniqExactIf(bid_price, ticker = 'AAPL')              AS aapl_distinct_bids,
    uniqExactIf(bid_price, ticker = 'KO')                AS ko_distinct_bids
FROM
(
    SELECT
        toTimeZone(sip_timestamp, 'America/New_York') AS et,
        ticker,
        bid_price
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'KO')
      AND sip_timestamp >= '2026-06-10 13:30:00'
      AND sip_timestamp <  '2026-06-10 20:00:00'
      AND bid_price > 0
)
GROUP BY et_time
ORDER BY et_time
Run this yourself

10 جون 2026 کو 09:30 ET سے شروع ہونے والے پندرہ منٹ کے وقفے میں AAPL کی best bid نے 359 مختلف prices کا دورہ کیا، جبکہ 15:45 سے شروع ہونے والے پندرہ منٹ کے وقفے میں یہ تعداد 152 رہی۔ اسی ابتدائی bucket میں KO کی best bid نے 78 prices کا دورہ کیا۔ ان میں سے ہر حرکت ایک ایسی amendment ہے جو re-pricing bot بھیج سکتا ہے، اور ہر amendment اس کے انتظار کا وقت دوبارہ شروع کر دیتی ہے۔ Grid trading bots اس انتخاب کا دوسرا رخ اختیار کرتے ہیں اور fixed prices پر ایک ladder لگا دیتے ہیں: prices پرانی ہو جاتی ہیں، مگر priority برقرار رہتی ہے۔

Icebergs اور self trade prevention

دو second-order effects اکثر traders کو مشکل میں ڈال دیتے ہیں۔

Reserve orders، جنہیں عموماً iceberg orders کہا جاتا ہے، اپنی مقدار کا ایک حصہ دکھاتے ہیں اور باقی quantity hidden رکھتے ہیں۔ زیادہ تر order books میں displayed slice کے ہر refresh پر وہ اسی price level کی queue کے آخر میں چلا جاتا ہے۔ اس طرح بڑا iceberg چھوٹے orders کے سلسلے کی طرح عمل کرتا ہے، جو مکمل طور پر displayed size کو بار بار اپنی queue position دے دیتا ہے۔ Display size میں amendment کرنے سے یہی cycle دوبارہ شروع ہو جاتا ہے۔

Self trade prevention دوسرا اثر ہے۔ Trading venues ایک participant کے order کو اسی participant کے resting order کے خلاف execute نہیں ہونے دیتے۔ معمول کا حل یہ ہے کہ دونوں میں سے ایک order cancel کر دیا جائے، جبکہ بعض venues پر دونوں orders cancel ہو جاتے ہیں۔ Narrow order book میں re-pricing کرنے والا bot اپنی opposite-side quote بھی ختم کر سکتا ہے۔ یوں ایک amendment سے queue میں دو positions ضائع ہو جاتی ہیں۔ Amendments عموماً original time in force برقرار رکھتے ہیں، جبکہ cancel and replace اسے reset کر دیتا ہے۔ اس تفصیل کی وضاحت order time in force میں کی گئی ہے۔

اکثر پوچھے گئے سوالات

کیا limit order کی قیمت تبدیل کرنے سے queue میں میری جگہ ختم ہو جاتی ہے؟

ہاں۔ US equity books اور زیادہ تر futures venues پر نئی قیمت پر order کو نیا order شمار کیا جاتا ہے۔ وہ وہاں پہلے سے موجود ہر resting share کے پیچھے چلا جاتا ہے۔ واحد تبدیلی جو priority برقرار رکھتی ہے، اسی قیمت پر order size کم کرنا ہے۔

کیا cancel and replace، order modify کرنے کے برابر ہے؟

Venue کے لحاظ سے دونوں مختلف ہیں۔ Amendment ایک single message ہوتا ہے اور صرف size کم ہونے کی صورت میں priority برقرار رکھ سکتا ہے۔ Cancel and replace دو events پر مشتمل ہوتا ہے۔ ان کے درمیان ایک وقفہ آتا ہے جس میں آپ کا کوئی order resting نہیں ہوتا۔ replacement ہمیشہ queue کے آخر میں شامل ہوتا ہے۔

کیا order size کم کرنے سے queue priority برقرار رہتی ہے؟

ہاں، بشرطیکہ قیمت وہی رہے۔ Venues size میں کمی کو partial cancellation سمجھتے ہیں، اور باقی shares اپنا original timestamp برقرار رکھتے ہیں۔ Size بڑھانے کا طریقہ ایسا نہیں ہوتا۔

Queue position کی حقیقی قدر کیا ہے؟

یہ اس fill probability کی قدر ہے جو queue position فراہم کرتی ہے، اسے اس value سے ضرب دی جاتی ہے جو آپ کے لیے ایک fill رکھتا ہے۔ دونوں حصوں کی پیمائش ممکن ہے۔ اوپر موجود panels دکھاتے ہیں کہ فی منٹ کتنا volume print ہوتا ہے، جبکہ آپ کا اپنا edge اور کوئی بھی rebate ایک fill کی value طے کرتے ہیں۔


یہاں ہر panel کے ساتھ وہ SQL موجود ہے جس سے اسے تیار کیا گیا۔ Ticker یا date range تبدیل کریں اور Strasmore terminal پر کسی بھی name کے بارے میں یہی سوال پوچھیں۔

#order book#queue position#execution#maker taker#trading bots