L2 ডেটা থেকে কিউ পজিশন অনুমান করার উপায়
কিউ পজিশন নির্ধারণ করে আপনার প্যাসিভ অর্ডার স্প্রেড থেকে লাভ করবে কি না। এগ্রিগেটেড বুক ডেটা ব্যবহার করে কীভাবে এই অবস্থান অনুমান করবেন এবং কখন MBO ডেটা কেনা প্রয়োজন তা জানুন।
কিউ পজিশন বা সারিতে আপনার অবস্থান হলো একটি নির্দিষ্ট মূল্যে অপেক্ষমান অর্ডারগুলোর মধ্যে আপনার ক্রম। প্রাইস-টাইম প্রায়োরিটি (price-time priority) ভেন্যুতে, এই অবস্থানই নির্ধারণ করে যে একটি প্যাসিভ অর্ডার স্প্রেড থেকে লাভ করবে, নাকি আদৌ কোনো ট্রেড সম্পন্ন হবে না। এগ্রিগেটেড মার্কেট ডেটা আপনাকে এই সংখ্যাটি দেবে না: লেভেল 2 (Level 2) বুকে প্রতিটি মূল্যে মোট কত সাইজ আছে তা দেখা যায়, কিন্তু কার অর্ডার তা দেখা যায় না। নিচে আলোচনা করা হলো কীভাবে সাধারণ ট্রেডারদের কাছে থাকা ডেটা থেকে কিউ পজিশন অনুমান করা যায় এবং কখন এই অনুমান আর যথেষ্ট থাকে না।
কিউ পজিশন কেন পুরো এজ (edge) নির্ধারণ করে
একটি প্যাসিভ অর্ডার বুকে অপেক্ষমান থাকে এবং অন্য কারো স্প্রেড ক্রস করে সেটিতে হিট করার অপেক্ষা করে। price-time priority অনুযায়ী, ম্যাচিং ইঞ্জিন প্রথমে মূল্য এবং পরে অর্ডারের সময় অনুযায়ী র্যাঙ্কিং করে। যদি 10,000 শেয়ার 10.00 ডলারে বিড করা থাকে এবং আপনি তার পেছনে 100 শেয়ার যোগ করেন, তবে আপনার টার্ন আসার আগে ওই 10,000 শেয়ারকে ট্রেড হতে হবে অথবা বাতিল হতে হবে। একই মূল্যে অর্ডার বাতিল করে পুনরায় এন্ট্রি নিলে আপনি আবার লাইনের শেষে চলে যাবেন।
এই র্যাঙ্কিংই অর্থনীতির মূল ভিত্তি। সারির সামনের দিকে থাকলে আপনি ঘনঘন ট্রেড করতে পারবেন এবং স্প্রেডসহ লিকুইডিটি রিবেট পাবেন, যা maker-taker fees and rebates-এর বিষয়। সারির পেছনের দিকে থাকলে আপনি কেবল তখনই ট্রেড পাবেন যখন আপনার সামনের সবার ট্রেড শেষ হবে, যা সাধারণত বড় আকারের ওয়ান-সাইডেড ফ্লো আসলে ঘটে। সারির পেছনে ফিল পাওয়ার ঘটনাগুলো সাধারণত প্রাইস আপনার লেভেল অতিক্রম করার ঠিক আগের মুহূর্তে ঘটে। একই মূল্য, একই অর্ডার, কিন্তু ফলাফল ভিন্ন।
লেভেল 2 ডেটা যা দেখাতে পারে এবং যা পারে না
লেভেল 1 (Level 1) হলো বেস্ট বিড এবং অফার, সাথে প্রতিটি মূল্যের সাইজ। লেভেল 2 (Level 2), যাকে মার্কেট বাই প্রাইসও বলা হয়, তা ডেপথ যোগ করে: প্রতিটি মূল্যের বিপরীতে অপেক্ষমান মোট সাইজের তালিকা। উভয়ই এগ্রিগেটেড ডেটা এবং Level 1 vs Level 2 market data-তে এদের পূর্ণাঙ্গ তুলনা করা হয়েছে। যখন 10.00 ডলারে বিড 10,000 শেয়ার থেকে কমে 8,500 হয়, তখন ফিড কেবল 1,500 শেয়ার কমে যাওয়ার তথ্য দেয়। এটি বলে না যে সেগুলো ট্রেড হয়েছে, নাকি একটি অর্ডার বাতিল হয়েছে বা চল্লিশটি, অথবা লাইনের কোথায় সেগুলো ছিল।
এক্সিকিউশন বা ট্রেডগুলো দৃশ্যমান অংশ: টেপ প্রতিটি ট্রেডের সাইজ প্রিন্ট করে, তাই সেগুলো আপনি নিখুঁতভাবে বিয়োগ করতে পারেন। বাকিটা হলো ক্যানসেলেশন, আর এখানেই অনুমানের শুরু। নিচের প্যানেলটি 10 জুন, 2026, বুধবারের একটি লিকুইড স্টকের সাধারণ সেশনের কনসোলিডেটেড টপ অফ বুক মেসেজ এবং টেপের প্রিন্ট গণনা করে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
q.et_time AS et_time,
q.quote_updates AS quote_updates,
t.trades AS trades,
round(q.quote_updates / t.trades, 1) AS updates_per_trade
FROM
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY et_time
) AS q
INNER JOIN
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS trade_hour,
count() AS trades
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_hour
) AS t ON q.et_time = t.trade_hour
ORDER BY et_time08:00 ঘণ্টাটি ওপেনিং বেলের আগের সময়: সেখানে প্রতি প্রিন্টের বিপরীতে টপ অফ বুক 0.8 বার পরিবর্তিত হয়েছে, যা প্রিন্টের চেয়ে কম মেসেজ। রেগুলার সেশনে অনুপাতটি উল্টে যায়। 15:00 ঘণ্টায় প্রতি প্রিন্টের বিপরীতে টপ অফ বুক 1.6 বার পরিবর্তিত হয়েছে, যা কেবল ওই ঘণ্টাতেই 233433 মেসেজ। ওপেন মার্কেটে একটি প্রাইস লেভেলে যা ঘটে তার বেশিরভাগই হলো অর্ডার আসা এবং ট্রেড না হয়েই চলে যাওয়া, আর এই প্রতিটি ঘটনা আপনার কিউ পজিশনকে এমনভাবে পরিবর্তন করে যা কোনো এগ্রিগেটেড ফিড জানায় না।
ইউনিফর্ম ক্যানসেলেশন অনুমান এবং এটি কেন আপনাকে ভুল ধারণা দেয়
সাধারণ প্রাথমিক ধারণা হলো, ক্যানসেলেশনগুলো কিউ বা সারিতে সমানভাবে ছড়িয়ে থাকে। আপনার ফ্র্যাকশনাল ডেপথকে x ধরুন: আপনার সামনের শেয়ার সংখ্যাকে আপনার মূল্যে অপেক্ষমান মোট শেয়ার দিয়ে ভাগ করুন। ইউনিফর্ম মডেল ধরে নেয় যে কোনো বাতিল হওয়া শেয়ার আপনার সামনে থাকার সম্ভাবনা x, অর্থাৎ p(x) = x। 10,000 শেয়ারের সারিতে আপনি অর্ধেক পেছনে আছেন, দেখলেন 1,000 শেয়ার কোনো প্রিন্ট ছাড়াই বাতিল হলো, মডেল আপনাকে 500 ধাপ এগিয়ে দেবে।
বাস্তব কিউ বা সারিগুলো এমন হয় না। যে অর্ডারটি অনেকক্ষণ ধরে আছে, সেটি এমন কারো হতে পারে যে অপেক্ষা করতে ইচ্ছুক, আর যে অর্ডারটি মাত্র যোগ হয়েছে সেটি খুব সম্ভবত একটি ক্ষণস্থায়ী কোট যা কয়েক সেকেন্ডের মধ্যেই অদৃশ্য হয়ে যাবে। ক্যানসেলেশনগুলো সারির পেছনের দিকে, অর্থাৎ আপনার কাছাকাছি এবং আপনার পেছনে বেশি ঘটে। ওই 1,000 বাতিল হওয়া শেয়ারের মধ্যে হয়তো 200টি আপনার সামনে ছিল, কিন্তু মডেল আপনাকে 500টির ক্রেডিট দিয়েছে। সারাদিন এমনটা চললে সিমুলেটেড কিউ বাস্তব কিউয়ের চেয়ে দ্রুত এগিয়ে যায়। এই ভুলটি একমুখী: লাইভ অর্ডারের চেয়ে বেশি এবং ভালো সময়ে ফিল দেখায়।
কিউ যেভাবে খালি হয়
ক্যানসেলেশন আপনাকে অদৃশ্যভাবে সরিয়ে দেয়। ট্রেডগুলো আপনাকে দৃশ্যমানভাবে সরিয়ে দেয়, যা প্রিন্টের সাইজ থেকে বোঝা যায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
multiIf(size < 100, 'under 100 shares',
size = 100, 'exactly 100 shares',
size <= 499, '101 to 499 shares',
size <= 999, '500 to 999 shares',
'1000 shares or more') AS trade_size_group,
round(100 * count() / sum(count()) OVER (), 1) AS share_of_prints_pct,
round(100 * sum(size) / sum(sum(size)) OVER (), 1) AS share_of_shares_pct
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_size_group
ORDER BY min(size)এই সেশনে রাউন্ড লটের নিচের প্রিন্টগুলো ছিল মোট প্রিন্টের 90% এবং শেয়ারের 42.5%। এক হাজার বা তার বেশি শেয়ারের ব্লকগুলো ছিল মোট প্রিন্টের 0.2% এবং ভলিউমের 19.9%। কিউ বা সারিগুলো ছোট ছোট ভাগে খালি হয়, তাই 2,000 নম্বর পজিশন এবং 3,500 নম্বর পজিশনের মধ্যে শত শত প্রিন্টের অপেক্ষা থাকে। যে সিমুলেটর দুটি বড় ট্রেডের পরেই ফিল দেয়, সেটি আসলে টেপের বেশিরভাগ অংশই বাদ দিয়ে দেয়।
যে অর্ডার আপনি দেখতে পান না
ডেপথ ফিডগুলো নির্দিষ্ট সীমার পর কেটে যায়। যদি আপনি দশটি প্রাইস লেভেল পান এবং আপনার অর্ডারটি এগারো নম্বর লেভেলে থাকে, তবে আপনার অর্ডারটি ডেটার বাইরে: আপনার সামনে কত সাইজ আছে বা পেছনে কত অর্ডার যোগ হচ্ছে তা আপনি জানেন না। তখন আপনি অনুমান করছেন না, বরং সংখ্যাটি কল্পনা করছেন। এটি খুব সাধারণ একটি পরিস্থিতি, কারণ যে অর্ডার মার্কেটকে তাড়া করে না, তা দ্রুতই ইনসাইড মার্কেট থেকে দূরে সরে যায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(avg(toFloat64(bid_price)), 2) AS best_bid,
uniqExact(bid_price) AS bid_levels_touched
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
AND bid_price > 0
GROUP BY et_time
ORDER BY et_time10:00 বাকেটে বেস্ট বিড গড়ে $290.29 ছিল এবং পনেরো মিনিটের মধ্যে 187টি ভিন্ন ভিন্ন প্রাইস লেভেল ভিজিট করেছে। পেনিতে কোট করা স্টকের ক্ষেত্রে প্রতিটি প্রাইস একটি আলাদা লেভেল, তাই দশ-লেভেলের ভিউ মাত্র দশ সেন্টের বুক কভার করে। এমন সেশনে একটি অর্ডারের মালিক যে গভীরতা দেখতে পান, তার নিচে অর্ডারটি দীর্ঘ সময় পড়ে থাকতে পারে।
কিউ পজিশন কোথায় সবচেয়ে বেশি মূল্যবান
কিউ পজিশন সেখানে সবচেয়ে মূল্যবান যেখানে প্রাইস ইমপ্রুভমেন্ট অসম্ভব। এক-সেন্ট স্প্রেডে আটকে থাকা স্টকে ভালো প্রাইস দিয়ে লাইন জাম্প করার সুযোগ নেই: সবাই একই টিক-এ জমা হয় এবং আসার সময়ই বাকিটা নির্ধারণ করে। যেখানে স্প্রেড কয়েক সেন্ট চওড়া, সেখানে একজন ট্রেডার এক সেন্টের জন্য পুরো কিউয়ের সামনে চলে আসতে পারেন এবং প্রাইস ডিসিশন লাইনের চেয়ে বেশি গুরুত্ব পায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price - bid_price)) * 100, 2) AS avg_spread_cents,
round(100 * countIf(round(toFloat64(ask_price - bid_price) * 100) <= 1) / count(), 1) AS one_cent_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'NVDA', 'MSFT', 'BKNG')
AND sip_timestamp >= '2026-06-10 15:00:00'
AND sip_timestamp < '2026-06-10 19:00:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY avg_spread_centsএকই সেশনের চার ঘণ্টার মিডডে ট্রেডিংয়ে, ছয়টি নামের মধ্যে সবচেয়ে টাইট বা সংকীর্ণ স্প্রেডের স্টক KO গড়ে 1.18 সেন্ট চওড়া ছিল এবং এর 82.5% আপডেটেই এক-সেন্ট স্প্রেড দেখা গেছে। সবচেয়ে চওড়া স্প্রেডের স্টক MSFT গড়ে 8.46 সেন্ট ছিল, যার 1.1% আপডেটে এক-সেন্ট স্প্রেড ছিল। প্রথম স্টকের জন্য ক্যালিব্রেট করা কিউ মডেল দ্বিতীয়টির ক্ষেত্রে কোনো কাজে আসে না। কোটগুলোর মাঝে থাকা অর্ডারগুলো, যা midpoint peg orders-এ কভার করা হয়েছে, একই নিয়মে তাদের নিজস্ব লাইন তৈরি করে।
আপনার ব্যাকটেস্টের জন্য চারটি ডায়াগনস্টিক
- একই নামের স্টকে একই সময়ে আপনার লাইভ ফিল রেট এবং সিমুলেটেড ফিল রেট তুলনা করুন। যে সিমুলেটর লাইভ মার্কেটে 40% ফিল হওয়া অর্ডারের বিপরীতে 70% ফিল দেখায়, সেটি আপনার অনুমান বর্ণনা করছে, মার্কেট নয়।
- সিমুলেটেড ফিলগুলোকে দুটি ভাগে ভাগ করুন: যেগুলোতে প্রাইস লেভেল পরে টিকে ছিল এবং যেগুলোতে লেভেলটি পুরোপুরি ক্লিয়ার হওয়ার সময় ফিল হয়েছে। দ্বিতীয় ধরনের ফিল বেশি হলে বুঝতে হবে সিমুলেটর আপনাকে ঠিক তখনই ফিল দিচ্ছে যখন প্রাইস আপনার লেভেল অতিক্রম করছে।
- অনুমানের সীমা নির্ধারণ করুন। প্রতিটি ক্যানসেলেশন কিউয়ের সামনে থেকে ধরে একবার রান করুন, তারপর প্রতিটি ক্যানসেলেশন পেছন থেকে ধরে আরেকবার রান করুন। এই দুটি রানই আপনার বেছে নেওয়া p(x)-এর প্রকৃত এরর বার।
- আপনার ফিড যে ডেপথ দেখায়, তার বাইরে আপনার প্রাইস কতবার ছিল তা পরিমাপ করুন। সেখানে পাওয়া ফিলগুলো কাল্পনিক। Look-ahead bias in backtesting একই ব্যর্থতাকে অন্য দৃষ্টিকোণ থেকে ব্যাখ্যা করে: এমন ফলাফল যা এমন তথ্যের ওপর ভিত্তি করে তৈরি যা স্ট্র্যাটেজির কাছে কখনোই ছিল না।
কখন মডেলিং বন্ধ করে অর্ডার ডেটা কেনা উচিত
মার্কেট-বাই-অর্ডার (MBO) ডেটাতে প্রতিটি অর্ডারের জন্য আলাদা মেসেজ থাকে, আসা থেকে শুরু করে এক্সিকিউশন বা বাতিল হওয়া পর্যন্ত, প্রতিটি নিজস্ব আইডেন্টিফায়ারসহ। সেই ফিডটি রিপ্লে করলে আপনার লাইনের অবস্থান একটি অনুমান নয়, বরং একটি গণনাযোগ্য সংখ্যা, যদি আপনি ভেন্যুতে আপনার অর্ডার পৌঁছানোর একটি বাস্তবসম্মত বিলম্ব ধরে নেন। এটি ডেপথ ফিডের চেয়ে ব্যয়বহুল এবং স্টোর করাও অনেক কঠিন।
ডায়াগনস্টিক 3 হলো সিদ্ধান্ত নেওয়ার নিয়ম। যদি সামনের এবং পেছনের উভয় ব্র্যাকেটেই স্ট্র্যাটেজিটি লাভজনক থাকে, তবে মাঝখানের একটি অনুমানই যথেষ্ট। যদি স্ট্র্যাটেজিটি এক ব্র্যাকেটে লাভ করে এবং অন্যটিতে লস করে, তবে কিউ মডেলই হলো স্ট্র্যাটেজি, এবং সেক্ষেত্রে অনুমানের ওপর নির্ভর না করে অর্ডার-বাই-অর্ডার ফিড কেনা সস্তা।
প্রো-রাটা ভেন্যুগুলো প্রশ্নটি বদলে দেয়
কিছু ফিউচার এবং অপশন মার্কেট একটি ইনকামিং অর্ডারকে আসার ক্রম অনুযায়ী না সাজিয়ে সাইজের অনুপাতে ভাগ করে দেয়। সেখানে সময়ের গুরুত্ব অনেক কম এবং কোটেড সাইজই মূল নিয়ামক: আপনার সাইজ দ্বিগুণ করলে প্রতিটি ফিলে আপনার শেয়ারও প্রায় দ্বিগুণ হয়। ব্যর্থতার ধরনও তখন বদলে যায়, যা আপনার মালিকানায় থাকা সাইজের চেয়ে বেশি কোট করার দিকে নিয়ে যায়। Why options orders do not get filled-এ অপশন বুকের রিটেইল দিক থেকে এটি কেমন দেখায় তা আলোচনা করা হয়েছে।
FAQ
ট্রেডিংয়ে কিউ পজিশন কী?
কিউ পজিশন হলো একই ভেন্যুতে একই মূল্যে অপেক্ষমান অর্ডারগুলোর মধ্যে আপনার র্যাঙ্ক। প্রাইস-টাইম প্রায়োরিটি বুকে, আপনার অর্ডারের আগে থাকা অর্ডারগুলোকে ট্রেড হতে হবে অথবা বাতিল হতে হবে, তবেই আপনার অর্ডারটি ট্রেড হতে পারে।
লেভেল 2 ডেটা থেকে কিউ পজিশন কি গণনা করা যায়?
পুরোপুরি নয়। লেভেল 2 প্রতিটি প্রাইস লেভেলের মোট সাইজ দেখায়, অর্ডারের পরিচয় দেখায় না। তাই যখন কোনো প্রিন্ট ছাড়াই সাইজ কমে যায়, আপনি বলতে পারবেন না যে সেই শেয়ারগুলো আপনার সামনে ছিল নাকি পেছনে। আপনি সংখ্যাটি অনুমান করতে পারেন এবং একটি সীমার মধ্যে রাখতে পারেন। সঠিক সংখ্যার জন্য অর্ডার-বাই-অর্ডার ডেটা প্রয়োজন।
ব্যাকটেস্টেড ফিল রেট সাধারণত কেন খুব বেশি হয়?
সাধারণ অনুমান হলো ক্যানসেলেশনগুলো কিউতে সমানভাবে ছড়িয়ে থাকে, কিন্তু বাস্তবে ক্যানসেলেশনগুলো পেছনের দিকে বেশি ঘটে। একটি ইউনিফর্ম মডেল আপনার সিমুলেটেড অর্ডারকে বাস্তব লাইনের চেয়ে দ্রুত এগিয়ে দেয়, যা লাইভ ট্রেডিংয়ের চেয়ে বেশি এবং ভালো ফিল হিসেবে দেখা দেয়।
MBO ডেটা কী?
মার্কেট-বাই-অর্ডার ডেটা প্রতিটি অর্ডারের জন্য আলাদা মেসেজ দেয়, আসা থেকে শুরু করে এক্সিকিউশন বা বাতিল হওয়া পর্যন্ত। এটি এমন একটি ফিড যেখানে আপনার লাইনের অবস্থান অনুমান করার প্রয়োজন হয় না, যা এক-টিক স্প্রেডে কাজ করা স্ট্র্যাটেজির জন্য সবচেয়ে গুরুত্বপূর্ণ।
প্রো-রাটা ভেন্যুতে কি কিউ পজিশন গুরুত্বপূর্ণ?
কম গুরুত্বপূর্ণ। প্রো-রাটা অ্যালোকেশন সাইজের ভিত্তিতে ইনকামিং অর্ডার ভাগ করে দেয়, তাই আগে পৌঁছানো খুব একটা সুবিধা দেয় না, বরং কোটেড সাইজই কাজ করে। কিউ মডেলিংয়ের আগে ভেন্যুটি কোন অ্যালোকেশন মডেল ব্যবহার করে তা যাচাই করা জরুরি।
এখানে প্রতিটি প্যানেলে সেই SQL দেওয়া আছে যা এটি তৈরি করেছে। Strasmore টার্মিনালে আপনার ট্রেড করা নামগুলোর জন্য টিকার পরিবর্তন করুন, তারিখ পরিবর্তন করুন এবং একই প্রশ্ন করুন।