Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

অর্ডার বদলালে কি কিউ অগ্রাধিকার নষ্ট হয়?

লিমিট অর্ডারের দাম বদলালে কিউয়ের শেষে যেতে হয়। ফিল সম্ভাবনায় ক্ষতি ও বটের জন্য লাভজনক পুনর্মূল্য নির্ধারণের সীমা জানুন, সিদ্ধান্ত নিন তথ্যভিত্তিকভাবে।

অর্ডার পরিবর্তন এবং কিউ-তে অগ্রাধিকার একে অপরের বিপরীতে কাজ করে। US equity order book এবং অধিকাংশ futures venue-এ resting limit order-এর price পরিবর্তন করলে নতুন price স্তরে সেটি লাইনের শেষে চলে যায়। প্রদর্শিত size বাড়ালেও একই ঘটনা ঘটে। Size কমালে কিউ-তে আপনার অবস্থান বজায় থাকে। কোনো অর্ডার cancel করে নতুন অর্ডার পাঠালে সেটি নতুন timestamp-সহ নতুন আগমন হিসেবে গণ্য হয়, আপনার platform-এ বোতামটির নাম যা-ই হোক।

অর্ডার পরিবর্তন করলে কি কিউ অগ্রাধিকার নষ্ট হয়?

চারটি নিয়ম প্রায় সব ট্রেডিং ভেন্যুর ক্ষেত্রেই প্রযোজ্য, যেখানে একজন স্বনির্দেশিত ট্রেডার লেনদেন করেন।

  • দাম পরিবর্তন করলে অগ্রাধিকার নষ্ট হয়। অর্ডারটি নতুন দামে নতুন অর্ডার হিসেবে পৌঁছায় এবং সেখানে আগে থেকে থাকা সব অর্ডারের পেছনে যায়।
  • প্রদর্শিত পরিমাণ বাড়ালে অগ্রাধিকার নষ্ট হয়। কিছু ভেন্যু শুধু বাড়তি পরিমাণকে নতুন করে কিউতে রাখে এবং মূল অংশটি আগের অবস্থানে রেখে দেয়। অন্যরা পুরো অর্ডারের সময় পুনর্নির্ধারণ করে। কোনো ক্ষেত্রেই বাড়তি শেয়ারগুলো পুরোনো অবস্থান পায় না।
  • প্রদর্শিত পরিমাণ কমালে অগ্রাধিকার বজায় থাকে। ভেন্যু এটিকে আংশিক cancel হিসেবে গণ্য করে। পরিমাণ ফিরিয়ে দেওয়ার জন্য কিউ অবস্থানের কোনো মূল্য দিতে হয় না।
  • প্রতিবার cancel করে পুনরায় পাঠালে অগ্রাধিকার নষ্ট হয়। এর মধ্যে এমন একটি বিরতিও থাকে, যখন আপনার কোনো অর্ডার বাজারে সক্রিয় থাকে না।

এই অসমতার যুক্তি আছে। অন্য সবাই অপেক্ষা করার সময় আপনি কোনো দামে অবস্থান ধরে রাখলে time priority তারই মূল্য দেয়। পরিমাণ বাড়ানো বা দাম সরানো নতুন ঝুঁকি তৈরি করে, আর নতুন ঝুঁকি কিউয়ের পেছন থেকে শুরু হয়। পরিমাণ কমানো ঝুঁকি প্রত্যাহার করে, তাই এর জন্য কোনো মূল্য নেওয়ার কারণ নেই। Pro rata book-এ হিসাবটি ভিন্ন, কারণ বরাদ্দ নির্ভর করে আপনি যে পরিমাণ দেখাচ্ছেন তার ওপর, আপনি কখন এসেছেন তার ওপর নয়। Price time priority বনাম pro rata উভয় পদ্ধতি ব্যাখ্যা করে।

জায়গায় পরিবর্তন, নাকি বাতিল করে নতুন অর্ডার?

ভেন্যুতে এগুলো ভিন্ন নির্দেশনা। amendment-কে আপনার প্ল্যাটফর্ম modify বা replace বলতে পারে। এতে বিদ্যমান অর্ডার এবং পরিবর্তনের বিবরণ একই বার্তায় থাকে। এটি atomic পদ্ধতিতে কার্যকর হয়: পরিবর্তনটি কার্যকর হবে, অথবা অর্ডারটি কোনো পরিবর্তন ছাড়াই বহাল থাকবে। cancel করে নতুন অর্ডার দেওয়া হলো দুটি আলাদা ঘটনা। মাঝখানে একটি ব্যবধান থাকে। সেই ব্যবধানে আপনার কোনো অর্ডারই সক্রিয় থাকে না। ওই সময়ে বাজার আপনার নির্ধারিত দামের সীমা অতিক্রম করে লেনদেন করলে আপনি সেখানে অংশ নিতে পারতেন না।

কিছু ভেন্যু amendment-কে অভ্যন্তরীণভাবে cancel এবং new order হিসেবে কার্যকর করে। আবার কিছু broker ভেন্যুতে সত্যিকারের in-place পরিবর্তনের সুবিধা থাকলেও amendment-কে পাঠানোর সময় cancel and replace-এ রূপান্তর করে। ফল একই: অগ্রাধিকার হারিয়ে যায়। amendment প্রত্যাখ্যাত হলে মূল অর্ডারটি বহাল থাকে। কিন্তু cancel সফল হওয়ার পর new order প্রত্যাখ্যাত হলে আপনার কোনো সক্রিয় অর্ডার থাকে না। এমনকি অগ্রাধিকার বজায় রাখা amendment-এর ক্ষেত্রেও সাধারণত নতুন order identifier ফেরত আসে। ফলে আপনার নিজস্ব রেকর্ডে নতুন অর্ডার দেখা যায়, যদিও order book-এ আগের অর্ডারটিই গণনা করা হয়।

একটি অর্ডার সংশোধনের খরচ

Queue position-এর মূল্য নির্ভর করে tape-এ কতটা লেনদেন হচ্ছে তার ওপর। আপনার আগে থাকা শেয়ারগুলোর লেনদেন সম্পন্ন না হওয়া পর্যন্ত আপনার অর্ডার কার্যকর হবে না। একটি সেশনের বিভিন্ন সময়ে লেনদেনের হার ব্যাপকভাবে পরিবর্তিত হয়।

কুয়েরিদিনের সময় অনুযায়ী টেপে কিউ খালি হওয়ার গতি (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-এর মধ্যম লেনদেনের পরিমাণ ছিল 182.8 হাজার শেয়ার। 12:00 থেকে শুরু হওয়া সময়পর্বে এই পরিমাণ ছিল 62 হাজার। অর্ডার একই, দামও একই। তবে অর্ডারটির সামনে অপেক্ষমাণ শেয়ারের পরিমাণ বাজার খোলার সময় এবং দিনের মাঝামাঝি সময়ে সম্পূর্ণ ভিন্ন।

সংশোধনের আগে ও পরে অর্ডার সম্পাদনের সম্ভাবনা

সংশোধনগুলো সম্ভাবনার ভিত্তিতে মূল্যায়িত হয়। নিচের প্যানেলটি নিয়মিত সেশনের এক মাসের মিনিটভিত্তিক তথ্য নিয়ে গণনা করে, কতবার কোনো এক মিনিটের ট্রেডিং ডেটায় অন্তত নির্দিষ্ট সংখ্যক শেয়ার লেনদেন হয়েছে। এটিকে এভাবে পড়ুন: আপনার সামনে থাকা ওই আকারের একটি queue এক মিনিটের মধ্যে সম্পূর্ণ নিষ্পত্তি হওয়ার সম্ভাবনা।

কুয়েরিকমপক্ষে N শেয়ার থাকা 1 মিনিটের উইন্ডোর অনুপাত (জুন 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 শেয়ার থাকলে, AAPL-এর 100 শতাংশ মিনিটে যথেষ্ট ভলিউম ছিল। KO-এর ক্ষেত্রে এই হার ছিল 100 শতাংশ। 8000 শেয়ারের ক্ষেত্রে AAPL-এর হার 100 শতাংশ। আর 128000 শেয়ারে তা কমে 22.2 শতাংশে দাঁড়ায়। রেখাটি কেবল এক দিকেই ঢালু। অগ্রাধিকার হারানো মানে রেখা বরাবর ডানদিকে সরে যাওয়া।

রেখাটিকে আশাবাদী সর্বোচ্চ সীমা হিসেবে বিবেচনা করুন। এক মিনিটের ভলিউম বিভিন্ন দামে এবং বাজারের উভয় পাশে লেনদেন হয়। এর কেবল একটি অংশ আপনার মূল্যস্তরে আসে। তাই বাস্তবে একটি queue সম্পূর্ণ নিষ্পত্তি হতে এর চেয়ে বেশি সময় লাগে। যে মিনিটগুলোতে কোনো trade print হয়নি, সেগুলো গণনায় ধরা হয় না। আপনার queue অবস্থান নির্ধারণ depth এবং cancel rate বিবেচনা করে এই চিত্রকে আরও নির্ভুল করে।

ব্রেক-ইভেন রি-প্রাইস দূরত্ব

এবার সংশোধিত অর্ডারের জন্য একটি মূল্য নির্ধারণ করা যাক। ধরা যাক, একটি buy order-এর সামনে 8,000টি শেয়ারের অর্ডার অপেক্ষা করছে এবং পরবর্তী 1 মিনিটের মধ্যে সেটি সম্পন্ন হওয়ার সম্ভাবনা 60 শতাংশ। Bid 1 cent বাড়ালে অর্ডারটি নতুন best price-এ চলে যায় এবং তার সামনে আর কোনো অর্ডার থাকে না। সেখানে সম্পন্ন হওয়ার সম্ভাবনা ধরা যাক 99 শতাংশ। প্রতিবার অর্ডার সম্পন্ন হলে এই উন্নতির খরচ হয় প্রতি শেয়ারে 1 cent।

একটি fill থেকে প্রতি শেয়ারে কত মূল্য পাওয়া যায়, অর্থাৎ আপনার edge এবং যেকোনো rebate, তা V দিয়ে প্রকাশ করা যাক। Re-price distance প্রকাশ করা হোক t দিয়ে। উন্নত সম্ভাবনায় কমে যাওয়া payoff এবং আগের সম্ভাবনায় সম্পূর্ণ payoff সমান হলে সংশোধনটি break even করে। এটি সাজালে একটি মাত্র সমীকরণ পাওয়া যায়:

t = V x (1 - p0 / p1)

প্রতি শেয়ারে একটি fill-এর মূল্য 3 cents এবং সম্ভাবনা 60 শতাংশ থেকে 99 শতাংশে বাড়লে break-even distance প্রায় 1.2 cents হয়। 1 cent-এর উন্নতি নিজের খরচ তুলে আনে। 2 cents-এর জন্য price chase করলে তা হয় না।

এবার এমন একটি bot-এর ক্ষেত্রে একই হিসাব করুন, যার একমাত্র edge হলো maker rebate। 2026 সালের মাঝামাঝি প্রকাশিত fee schedule অনুযায়ী, বড় US equity exchange-গুলোতে top-tier maker rebate প্রতি শেয়ারে প্রায় 0.20 থেকে 0.30 cents। তাই এটিকে এক-চতুর্থাংশ cent ধরা যাক। সূত্র অনুযায়ী break-even distance প্রায় 0.1 cents। কিন্তু কোনো US venue যে সর্বনিম্ন price change গ্রহণ করে, তা পুরো 1 cent—প্রায় 10 গুণ বেশি। Rebate রক্ষা করতে re-price করা একটি bot এক-চতুর্থাংশ cent পাওয়ার জন্য 1 tick খরচ করে।

Rebate কেবল fill হলে দেওয়া হয়, অভিপ্রায়ের জন্য নয়। কোনো অর্ডার queue-তে খুব ভালো অবস্থান ধরে রেখেও যদি কখনও trade না করে, তবে তা কিছুই আয় করে না। আপনি যে rebate কখনও সংগ্রহ করেননি, তা সাশ্রয়ও নয়। Maker-taker fee এবং rebate-এ এই schedule-গুলো কীভাবে অর্থ প্রদান করে তা ব্যাখ্যা করা হয়েছে।

উন্নতির কোনো সুযোগ না থাকলে

বিড ও অফারের মধ্যে ব্যবধান থাকলেই কেবল দাম উন্নত করা সম্ভব। বৃহত্তম নামগুলোর ক্ষেত্রে বেশিরভাগ সময় এমন ব্যবধান থাকে না।

কুয়েরিকত ঘন ঘন কোট করা স্প্রেড 1 সেন্টে থাকে (10 জুন 2026 সেশন)
প্রতিটি সংখ্যার পেছনের সঠিক 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 June 2026-এ তার কোট আপডেটের 81.4 শতাংশজুড়ে one-cent spread দেখিয়েছে। গড় spread ছিল 1.3 cents। প্যানেলের অপর প্রান্তে COST-এর গড় spread ছিল 77.53 cents। one-tick বাজারে বিড ও অফারের মাঝখানে যাওয়ার মতো কোনো দাম থাকে না। তাই কিউয়ের সামনে যাওয়ার একমাত্র উপায় হলো spread অতিক্রম করা। এতে আপনি taker হয়ে যান। আপনাকে taker fee দিতে হয়, rebate পাওয়ার বদলে। আর spread-এর এক tick নয়, পুরো spread-ই আপনাকে ছাড়তে হয়।

একটি re-pricing bot কত ঘন ঘন সিদ্ধান্তের মুখে পড়ে

market-following bot এই ট্রেডটি একবার করে না। অর্ডারের তুলনায় order book-এর শীর্ষ স্তর সরে গেলেই bot-টি একই কাজ করে।

কুয়েরিপ্রতি 15 মিনিটে স্বতন্ত্র সেরা বিড মূল্য (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 June 2026 তারিখে 09:30 ET থেকে শুরু হওয়া 15 মিনিটের পর্বে AAPL-এর best bid 359টি পৃথক দামে দেখা গেছে। 15:45 ET থেকে শুরু হওয়া 15 মিনিটের পর্বে এই সংখ্যা ছিল 152। ওই শুরুর পর্বে KO-এর best bid 78টি দামে দেখা গেছে। এই প্রতিটি পরিবর্তনই এমন একটি amendment, যা re-pricing bot পাঠাতে পারে। প্রতিটি amendment পাঠানোর পর অপেক্ষার সময় আবার শুরু হয়। Grid trading bots এই সিদ্ধান্তের বিপরীত পদ্ধতি নেয় এবং নির্দিষ্ট দামে একটি ladder রেখে দেয়। ফলে দামগুলো stale হয়ে যায়, কিন্তু priority বজায় থাকে।

Icebergs এবং self trade prevention

দুটি পরোক্ষ প্রভাব অনেক ট্রেডারকে সমস্যায় ফেলে।

Reserve order-কে সাধারণত iceberg order বলা হয়। এতে অর্ডারের একটি অংশ দৃশ্যমান থাকে এবং বাকি অংশ গোপন রাখা হয়। বেশিরভাগ order book-এ দৃশ্যমান অংশটি প্রতিবার নতুন করে প্রদর্শিত হলে ওই দামে সেটি queue-এর শেষে যুক্ত হয়। ফলে একটি বড় iceberg order এমন একাধিক ছোট অর্ডারের মতো আচরণ করে, যেগুলো পুরোপুরি দৃশ্যমান অর্ডারগুলোর কাছে বারবার নিজেদের queue position ছেড়ে দেয়। প্রদর্শনের পরিমাণ সংশোধন করলেও একই চক্র আবার শুরু হয়।

Self trade prevention হলো অন্য প্রভাবটি। কোনো venue সাধারণত একই অংশগ্রহণকারীর একটি অর্ডারকে তার নিজের resting order-এর বিপরীতে execute হতে দেয় না। প্রচলিত সমাধান হলো দুটি অর্ডারের একটিকে cancel করা। কিছু venue-তে উভয় অর্ডারই cancel করা হয়। সরু order book জুড়ে কোনো bot নতুন দামে quote বসাতে গেলে বিপরীত পাশে থাকা নিজের quote-ই বাতিল হয়ে যেতে পারে। ফলে একটি amendment-এর কারণে queue-তে দুটি position হারাতে হয়। Amendment সাধারণত মূল time in force বজায় রাখে। কিন্তু cancel and replace করলে time in force নতুন করে শুরু হয়। এই বিষয়টি order time in force-এ ব্যাখ্যা করা হয়েছে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

লিমিট অর্ডারের দাম পরিবর্তন করলে কি কিউতে আমার অবস্থান নষ্ট হয়?

হ্যাঁ। US equity order book এবং অধিকাংশ futures venue-তে নতুন দামে অর্ডারটি নতুন অর্ডার হিসেবে গণ্য হয়। ওই দামে আগে থেকে থাকা প্রতিটি শেয়ারের পেছনে অর্ডারটি যুক্ত হয়। একই দামে শুধু অর্ডারের আকার কমালে অগ্রাধিকার বজায় থাকে।

ক্যানসেল অ্যান্ড রিপ্লেস কি অর্ডার পরিবর্তনের সমান?

Venue ভেদে দুটির মধ্যে পার্থক্য আছে। Amendment একটি একক বার্তা। শুধু আকার কমানো হলে এতে অর্ডারের অগ্রাধিকার বজায় থাকতে পারে। Cancel and replace দুটি আলাদা ঘটনা। এর মধ্যে এমন একটি বিরতি থাকে, যখন আপনার কোনো অর্ডার বাজারে সক্রিয় থাকে না। Replacement অর্ডারটি সবসময় কিউয়ের শেষে যুক্ত হয়।

অর্ডারের আকার কমালে কি কিউয়ের অগ্রাধিকার বজায় থাকে?

হ্যাঁ, একই দামে হলে। Venue-গুলো আকার কমানোকে partial cancellation হিসেবে বিবেচনা করে। ফলে অবশিষ্ট শেয়ারগুলো তাদের মূল timestamp-এর অগ্রাধিকার ধরে রাখে। অর্ডারের আকার বাড়ালে একই নিয়ম প্রযোজ্য হয় না।

কিউয়ে অবস্থানের প্রকৃত মূল্য কত?

এটি যে fill probability তৈরি করে, তাকে আপনার কাছে একটি fill-এর মূল্যের সঙ্গে গুণ করলে যে মূল্য পাওয়া যায়, সেটিই কিউ অবস্থানের মূল্য। উভয় অংশই পরিমাপ করা যায়। উপরের প্যানেলগুলোতে প্রতি মিনিটে কত volume print হয় তা দেখানো হয়েছে। আপনার নিজস্ব trading edge এবং প্রযোজ্য rebate একটি fill-এর মূল্য নির্ধারণ করে।


এখানে প্রতিটি প্যানেলের সঙ্গে সেটি তৈরির SQL রয়েছে। ticker বা তারিখের পরিসর পরিবর্তন করে Strasmore terminal-এ যেকোনো নামের ক্ষেত্রে একই প্রশ্ন করুন।

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