ট্রেড মার্কআউট কী এবং এর এক্সিকিউশন কোয়ালিটি বিশ্লেষণ
ট্রেড মার্কআউট বলতে কী বোঝায় এবং এর চিহ্নের রীতি সহজ ভাষায় ব্যাখ্যা করা হয়েছে। 1 সেকেন্ড থেকে 5 মিনিট পর্যন্ত বিভিন্ন সময়ের ব্যবধানে মার্কআউট কার্ভের বিস্তারিত বিশ্লেষণ দেখুন।
ট্রেড মার্কআউট কী?
মিড প্রাইস বা মধ্যবর্তী দাম থেকে শুরু করুন: এটি বেস্ট বিড এবং বেস্ট অফারের মাঝামাঝি বিন্দু, অর্থাৎ NBBO-এর মধ্যবিন্দু। একটি মার্কআউট হলো আপনার ফিল বা ট্রেড সম্পন্ন হওয়ার পর একটি নির্দিষ্ট সময়সীমা শেষে সেই মিড প্রাইস থেকে একটি রেফারেন্স প্রাইস বিয়োগ করা এবং আপনি যে দিকে ট্রেড করেছেন তার ভিত্তিতে ফলাফলটিকে চিহ্নিত করা।
**মার্কআউট (সময়সীমা h) = সাইড * (t+h সময়ে মিড প্রাইস - রেফারেন্স প্রাইস)**, যেখানে আপনি কিনলে সাইড হলো প্লাস ওয়ান এবং বিক্রি করলে মাইনাস ওয়ান।
চিহ্নের এই রীতিটিই সাধারণত বিভ্রান্তির কারণ। একটি ক্রয়ের পর যদি মিড প্রাইস কমে যায়, তবে মার্কআউট নেতিবাচক হয়: আপনি কিনেছেন, দাম কমেছে, এবং যিনি আপনার কাছে বিক্রি করেছেন তিনি ট্রেডটিতে লাভবান হয়েছেন। একেই সংখ্যায় অ্যাডভার্স সিলেকশন বলা হয়। বিক্রির পর মিড প্রাইস কমলে মার্কআউট ইতিবাচক হয়, কারণ সাইডের সাথে চিহ্নের পরিবর্তন ঘটে। প্রতিটি ফিলের দুটি দিক থাকে এবং এক দিকের মার্কআউট অন্য দিকের বিপরীত চিহ্নযুক্ত হয়।
তিনটি রেফারেন্স প্রাইস
আপনি কোন রেফারেন্স প্রাইসটি বিয়োগ করছেন তা নির্ধারণ করে যে মার্কআউট কী পরিমাপ করছে।
- ফিল প্রাইস। মার্কআউট তখন অর্থে পরিণত হয়: আপনি যা পরিশোধ করেছেন তার বিপরীতে t+h সময়ে পজিশনটির মূল্য কত। আপনি যে স্প্রেড পরিশোধ করেছেন বা অর্জন করেছেন তা এর অন্তর্ভুক্ত।
- ফিল হওয়ার মুহূর্তের মিড প্রাইস। এটি স্প্রেডকে বাদ দেয় এবং ট্রেড করার পর বাজার কীভাবে পরিবর্তিত হয়েছে তা আলাদা করে দেখায়, যা অ্যাডভার্স সিলেকশনের সবচেয়ে স্বচ্ছ চিত্র।
- যে দিকে ট্রেড করেছেন সেই দিকের কোট। আপনি যে টাচ বা প্রাইস লেভেলে ট্রেড করেছেন তার বিপরীতে পরিমাপ করলে বোঝা যায় যে, প্রাপ্ত ফিলটি আসলে উপলব্ধ দামের তুলনায় কেমন ছিল।
এক্সিকিউশন কোয়ালিটি বিশ্লেষণে অ্যাডভার্স সিলেকশনের জন্য দ্বিতীয়টি এবং লাভ-ক্ষতির (P&L) জন্য প্রথমটি ব্যবহৃত হয়। নিচে প্রথম প্যানেলে এক সেট ফিলের ক্ষেত্রে উভয়ই দেখানো হয়েছে।
মার্কআউট কার্ভ এবং এর আকৃতির অর্থ
অনেকগুলো সময়সীমার জন্য একই পরিসংখ্যান ব্যবহার করলে একটি কার্ভ বা রেখাচিত্র পাওয়া যায়। এর আকৃতি যেকোনো একক সংখ্যার চেয়ে বেশি তথ্য বহন করে।
- একটি কার্ভ যা প্রথম সেকেন্ডের মধ্যেই খাড়াভাবে নিচে নেমে যায় এবং নিচে থাকে, তা নির্দেশ করে যে ফ্লো বা অর্ডারের সুবিধা নেওয়া হচ্ছে: ট্রেড করার প্রায় সাথে সাথেই দাম আপনার বিপরীতে চলে যাচ্ছে।
- একটি কার্ভ যা কয়েক মিনিট ধরে ক্রমাগত নিচে নামতে থাকে, তা নির্দেশ করে যে ফ্লো-তে দামের ভবিষ্যৎ গতিপথ সম্পর্কে প্রকৃত তথ্য ছিল।
- শূন্যের কাছাকাছি একটি সমতল কার্ভ নির্দেশ করে যে ফ্লোটি ক্ষতিকর নয়। পাঁচ মিনিট পরেও মিড প্রাইস ফিলের সময়ের মতোই থাকে।
- একটি কার্ভ যা নেতিবাচক থেকে শুরু হয়ে আবার শূন্যের দিকে উঠে আসে, তা এমন প্যাসিভ মেকারদের জন্য আদর্শ যারা রিবেট সংগ্রহ করেন। শুরুর দিকের পতন হলো স্প্রেড এবং তাৎক্ষণিক ইমপ্যাক্ট, আর পরবর্তী পুনরুদ্ধার হলো বাজারের স্বাভাবিক অবস্থায় ফিরে আসা।
সময়সীমা নির্বাচন করা মানেই আপনি কী পরিমাপ করছেন তা ঠিক করা। এক সেকেন্ডের কম সময়ে মার্কআউট মূলত ল্যাটেন্সি এবং কিউ পজিশন পরিমাপ করে। এক মিনিট পর্যন্ত বাড়ালে এটি ফ্লো-তে থাকা স্বল্পমেয়াদী তথ্য নির্দেশ করে। পাঁচ মিনিটের বেশি হলে, সাধারণ বাজারের অস্থিরতা বা ড্রিফট ফিলের প্রভাবকে ছাপিয়ে যায়।
একটি প্রকৃত মার্কআউট কার্ভ, ফিল অনুযায়ী
নিচের প্যানেলে জুন 10, 2026-এর নিয়মিত সেশনের প্রতিটি INTC প্রিন্ট নেওয়া হয়েছে। প্রতিটি প্রিন্টকে তার আগের সেকেন্ডের শেষ কোটের বিপরীতে বাই-ইনিশিয়েটেড বা সেল-ইনিশিয়েটেড হিসেবে শ্রেণীবদ্ধ করা হয়েছে এবং 5 সময়সীমার গড় সাইনড মার্কআউট বের করা হয়েছে। একই ফিলের ওপর দুটি সিরিজ চালানো হয়েছে: একটি ফিলের সময়ের মিড প্রাইস থেকে এবং অন্যটি ফিল প্রাইস থেকে পরিমাপ করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH
mid_by_second AS
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
argMax((toFloat64(bid_price) + toFloat64(ask_price)) / 2, sip_timestamp) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 20:00:00', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
GROUP BY sec
),
signed_fills AS
(
SELECT
t.sec AS sec,
t.fill_price AS fill_price,
q.mid AS ref_mid,
if(t.fill_price > q.mid, 1, -1) AS side
FROM
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
sec - 1 AS ref_sec,
toFloat64(price) AS fill_price
FROM global_markets.stocks_trades
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:01', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 19:55:00', 'UTC')
AND price > 0
AND size > 0
) AS t
INNER JOIN mid_by_second AS q ON q.sec = t.ref_sec
WHERE t.fill_price != q.mid
)
SELECT
multiIf(f.horizon_s < 60,
concat(toString(f.horizon_s), ' sec'),
concat(toString(intDiv(f.horizon_s, 60)), ' min')) AS horizon,
round(avg(f.side * (fut.mid - f.ref_mid) / f.ref_mid) * 10000, 3) AS mid_basis_bps,
round(avg(f.side * (fut.mid - f.fill_price) / f.fill_price) * 10000, 3) AS fill_basis_bps,
count() AS fill_count
FROM
(
SELECT
sec,
fill_price,
ref_mid,
side,
horizon_s,
sec + horizon_s AS future_sec
FROM signed_fills
ARRAY JOIN [1, 5, 15, 60, 300] AS horizon_s
) AS f
INNER JOIN mid_by_second AS fut ON fut.sec = f.future_sec
GROUP BY f.horizon_s
ORDER BY f.horizon_s900593 শ্রেণীবদ্ধ ফিলের ক্ষেত্রে, মিড বেসিস সিরিজটি 1 sec সময়ে 3.068 বেসিস পয়েন্ট এবং 5 min সময়ে 2.977 বেসিস পয়েন্ট নির্দেশ করে। এক বেসিস পয়েন্ট হলো দামের এক শতাংশের একশ ভাগের এক ভাগ, তাই একটি ফিল সামান্য পরিবর্তন আনে কিন্তু দশ লক্ষ শেয়ার বড় অংকের অর্থের পরিবর্তন ঘটায়।
ফিল বেসিস সিরিজটি -0.488 বেসিস পয়েন্টে শুরু হয়। ক্ষুদ্রতম সময়সীমার ক্ষেত্রে দুটি সিরিজের মধ্যবর্তী দূরত্ব হলো কার্যকর হাফ স্প্রেড: প্রিন্টটি মিড প্রাইস থেকে কতটা দূরে সম্পন্ন হয়েছে। একজন টেকার এন্ট্রির সময় এটি পরিশোধ করেন এবং একজন মেকার এটি অর্জন করেন। প্রথম সময়সীমার পরের সবকিছুই হলো বাজারের গতিবিধি।
ফিলের আকার এবং কার্ভের আকৃতি
অ্যাডভার্স সিলেকশন সব ফিলের ওপর সমানভাবে পড়ে না। একই সেশনকে প্রিন্টের আকার অনুযায়ী ভাগ করলে ছোট ফিল এবং এক হাজার বা তার বেশি শেয়ারের ব্লকগুলো একই অক্ষে দেখা যায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH
mid_by_second AS
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
argMax((toFloat64(bid_price) + toFloat64(ask_price)) / 2, sip_timestamp) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 20:00:00', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
GROUP BY sec
),
signed_fills AS
(
SELECT
t.sec AS sec,
t.fill_size AS fill_size,
q.mid AS ref_mid,
if(t.fill_price > q.mid, 1, -1) AS side
FROM
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
sec - 1 AS ref_sec,
toFloat64(price) AS fill_price,
size AS fill_size
FROM global_markets.stocks_trades
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:01', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 19:55:00', 'UTC')
AND price > 0
AND size > 0
) AS t
INNER JOIN mid_by_second AS q ON q.sec = t.ref_sec
WHERE t.fill_price != q.mid
)
SELECT
multiIf(f.horizon_s < 60,
concat(toString(f.horizon_s), ' sec'),
concat(toString(intDiv(f.horizon_s, 60)), ' min')) AS horizon,
round(avgIf(f.side * (fut.mid - f.ref_mid) / f.ref_mid, f.fill_size < 1000) * 10000, 3) AS small_fill_bps,
round(avgIf(f.side * (fut.mid - f.ref_mid) / f.ref_mid, f.fill_size >= 1000) * 10000, 3) AS block_fill_bps,
countIf(f.fill_size >= 1000) AS block_fill_count
FROM
(
SELECT
sec,
fill_size,
ref_mid,
side,
horizon_s,
sec + horizon_s AS future_sec
FROM signed_fills
ARRAY JOIN [1, 5, 15, 60, 300] AS horizon_s
) AS f
INNER JOIN mid_by_second AS fut ON fut.sec = f.future_sec
GROUP BY f.horizon_s
HAVING countIf(f.fill_size < 1000) > 0
AND countIf(f.fill_size >= 1000) > 0
ORDER BY f.horizon_s5 min সময়সীমার ক্ষেত্রে, এক হাজার শেয়ারের নিচের প্রিন্টগুলো গড়ে 2.983 বেসিস পয়েন্ট হয়, যেখানে এক হাজার বা তার বেশি শেয়ারের 11588 প্রিন্টগুলো গড়ে 2.495 বেসিস পয়েন্ট হয়। এই দুই গ্রুপের বিপরীতে মোট একই পরিমাণ ভলিউম ফিল করা দুটি কোট দিনের শেষে একই অবস্থানে শেষ হয় না।
এক্সিকিউশন রিপোর্টে মার্কআউট যেভাবে স্প্রেড সংখ্যায় পরিণত হয়
মার্কআউট হলো স্ট্যান্ডার্ড স্প্রেড ডিকম্পোজিশনের অনুপস্থিত অংশ। কার্যকর স্প্রেড বা ইফেক্টিভ স্প্রেড হলো একজন টেকার যা আসলে পরিশোধ করেছেন: মিড প্রাইস থেকে প্রিন্টের সাইনড দূরত্বের দ্বিগুণ। একে দুই ভাগে ভাগ করুন। একটি অংশ হলো রিয়েলাইজড স্প্রেড, যা বাজার পরিবর্তিত হওয়ার পর একজন মেকার নিজের কাছে রাখেন। অন্য অংশটি হলো অ্যাডভার্স সিলেকশন, যা মিড বেসিস মার্কআউটের দ্বিগুণ। এই সমীকরণটি নিখুঁত: ইফেক্টিভ স্প্রেড = রিয়েলাইজড স্প্রেড + অ্যাডভার্স সিলেকশন।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH
mid_by_second AS
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
argMax((toFloat64(bid_price) + toFloat64(ask_price)) / 2, sip_timestamp) AS mid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 20:00:00', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
GROUP BY sec
),
signed_fills AS
(
SELECT
t.sec + 60 AS future_sec,
t.et_time AS et_time,
t.fill_price AS fill_price,
q.mid AS ref_mid,
if(t.fill_price > q.mid, 1, -1) AS side
FROM
(
SELECT
dateDiff('second', toDateTime('2026-06-10 13:30:00', 'UTC'), sip_timestamp) AS sec,
sec - 1 AS ref_sec,
toFloat64(price) AS fill_price,
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), toIntervalMinute(30)), '%H:%i') AS et_time
FROM global_markets.stocks_trades
WHERE ticker = 'INTC'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:01', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 19:55:00', 'UTC')
AND price > 0
AND size > 0
) AS t
INNER JOIN mid_by_second AS q ON q.sec = t.ref_sec
WHERE t.fill_price != q.mid
)
SELECT
f.et_time AS et_time,
round(avg(2 * f.side * (f.fill_price - f.ref_mid) / f.ref_mid) * 10000, 3) AS effective_spread_bps,
round(avg(2 * f.side * (f.fill_price - fut.mid) / f.ref_mid) * 10000, 3) AS realized_spread_bps,
round(avg(2 * f.side * (fut.mid - f.ref_mid) / f.ref_mid) * 10000, 3) AS adverse_selection_bps,
count() AS fill_count
FROM signed_fills AS f
INNER JOIN mid_by_second AS fut ON fut.sec = f.future_sec
GROUP BY f.et_time
ORDER BY f.et_timeইস্টার্ন সময় 09:30 থেকে শুরু হওয়া আধা ঘণ্টায়, ইফেক্টিভ স্প্রেড গড়ে 10.651 বেসিস পয়েন্ট, যার মধ্যে 8.313 হলো ষাট সেকেন্ডের সময়সীমার অ্যাডভার্স সিলেকশন এবং 2.338 হলো মেকারের অর্জিত অংশ। প্যানেলটি 13 আধা ঘণ্টার বাকেট কভার করে।
এই উপাদানগুলোই Rule 605 এবং 606 এক্সিকিউশন রিপোর্ট-এ ভেন্যু অনুযায়ী সারসংক্ষেপ করা থাকে এবং এগুলোই সাব পেনি রুল এবং প্রাইস ইমপ্রুভমেন্ট-এর দাবির পেছনের গাণিতিক ভিত্তি। রিবেট হলো শেয়ার প্রতি একটি নির্দিষ্ট ক্রেডিট। অ্যাডভার্স সিলেকশন হলো একটি কোট প্রকৃতপক্ষে যে ফিলগুলো পায় তার ওপর শেয়ার প্রতি পরিবর্তনশীল খরচ। একটি হেডলাইন রেট কার্ডের পরিবর্তে পরিমাপকৃত কার্ভের ওপর ভিত্তি করে একটির বিপরীতে অন্যটিকে যাচাই করাই হলো মেকার টেকার ফি এবং রিবেট-এর পেছনের পরীক্ষা, এবং এটি কেন মার্কেট মেকাররা টাকা হারায়-এর মেকানিক্সের পাশাপাশি অবস্থান করে।
এই সংখ্যাগুলো কীভাবে গণনা করা হয়েছে
প্রতিটি প্যানেল জুন 10, 2026-এর নিয়মিত সেশনের, 09:30 থেকে 16:00 ইস্টার্ন সময়ের INTC কোট এবং প্রিন্টগুলো পড়ে। কোটগুলো প্রতি সেকেন্ডে একটি মিড প্রাইসে সংকুচিত করা হয়েছে, যা সেই সেকেন্ডের শেষ প্রিন্ট। একটি প্রিন্টকে বাই-ইনিশিয়েটেড হিসেবে শ্রেণীবদ্ধ করা হয়েছে যখন এটি আগের সেকেন্ডের মিড প্রাইসের উপরে সম্পন্ন হয়েছে এবং সেল-ইনিশিয়েটেড যখন এটি নিচে সম্পন্ন হয়েছে, যা স্ট্যান্ডার্ড কোট রুল। ঠিক মিড প্রাইসে থাকা প্রিন্টগুলো বাদ দেওয়া হয়েছে, তাই মিডপয়েন্ট এক্সিকিউশনগুলো নমুনার বাইরে রাখা হয়েছে। রেফারেন্স হিসেবে আগের সেকেন্ডের মিড প্রাইস ব্যবহার করা হয়েছে যাতে রেফারেন্সটি ভবিষ্যতের দিকে না তাকায়। সময়সীমাগুলো প্রিন্টের সেকেন্ড থেকে গণনা করা পূর্ণ সেকেন্ড এবং একটি ফিল তখনই একটি সময়সীমার মধ্যে প্রবেশ করে যখন টার্গেট সেকেন্ডে একটি কোট বিদ্যমান থাকে।
FAQ
ট্রেডিংয়ে মার্কআউট কী?
মার্কআউট হলো একটি ফিল সম্পন্ন হওয়ার পর একটি নির্দিষ্ট সময়সীমা শেষে মিড প্রাইসের সাইনড পরিবর্তন। ইতিবাচক মানে হলো ফিল হওয়ার পর বাজার আপনার ট্রেডের দিকেই এগিয়েছে। নেতিবাচক মানে হলো এটি বিপরীত দিকে গেছে, যা অ্যাডভার্স সিলেকশনের সংজ্ঞা।
নেতিবাচক মার্কআউট কি সবসময় খারাপ ফিল?
না। মার্কেটেবল অর্ডারের ক্ষেত্রে এক সেকেন্ডে নেতিবাচক মার্কআউট মূলত সেই স্প্রেড যা অর্ডারটি পরিশোধ করেছে, যা তাৎক্ষণিকভাবে ট্রেড সম্পন্ন করার মূল্য। গুরুত্বপূর্ণ বিষয় হলো কার্ভটি দীর্ঘ সময়সীমার পরেও নিচে নামতে থাকে নাকি সমতল হয়ে যায়।
মার্কআউট এবং স্লিপেজের মধ্যে পার্থক্য কী?
স্লিপেজ একটি ফিলকে ডিসিশন প্রাইস বা অ্যারাইভাল প্রাইসের সাথে তুলনা করে, তাই এটি একটি অর্ডারের পুরো পথকে মূল্যায়ন করে। মার্কআউট একটি ফিলকে ফিলের পরের সময়সীমার মিড প্রাইসের সাথে তুলনা করে, তাই এটি পরবর্তী ঘটনাকে মূল্যায়ন করে। একটি প্যারেন্ট অর্ডারকে স্কোর করে, অন্যটি প্রতিটি পৃথক ফিলকে স্কোর করে।
মার্কআউটের জন্য কোন সময়সীমা ব্যবহার করা উচিত?
এটি ফিলটি কীসের জন্য ছিল তার ওপর নির্ভর করে। এক সেকেন্ডের কম সময়সীমা ল্যাটেন্সি-সংবেদনশীল এক্সিকিউশনকে মূল্যায়ন করে, আর এক মিনিট হলো লিকুইড নামগুলোর ক্ষেত্রে অ্যাডভার্স সিলেকশনের জন্য সাধারণ ডিফল্ট। সংখ্যার পাশে সময়সীমা উল্লেখ করাই দুটি মার্কআউটকে তুলনার যোগ্য করে তোলে।
মার্কআউট কীভাবে ইফেক্টিভ স্প্রেডের সাথে সম্পর্কিত?
ইফেক্টিভ স্প্রেড রিয়েলাইজড স্প্রেড এবং অ্যাডভার্স সিলেকশন উপাদানে বিভক্ত হয়, এবং সেই উপাদানটি হলো মিড বেসিস মার্কআউটের দ্বিগুণ। সময়সীমা পরিবর্তন করলে এই দুইয়ের বিভাজনও পরিবর্তিত হয়, যে কারণে সময়সীমা ছাড়া প্রকাশিত স্প্রেড পরিসংখ্যান অসম্পূর্ণ।
এখানে প্রতিটি প্যানেল সেই SQL-এর সাথে আসে যা এটি তৈরি করেছে। একটি খুলুন, টিকার বা তারিখ পরিবর্তন করুন, এবং একই মার্কআউট কার্ভ Strasmore টার্মিনালে নতুন করে তৈরি হবে।