COT রিপোর্ট কখন প্রকাশিত হয়
CFTC প্রতি শুক্রবার 3:30 p.m. ET-এ COT রিপোর্ট প্রকাশ করে। ডেটা মঙ্গলবারের বাজার বন্ধের, তাই 3 দিনের ব্যবধান ও রিপোর্ট পড়ার নিয়ম জানুন।
The Commitments of Traders report, the COT report, is released every Friday at 3:30 p.m. Eastern time by the U.S. Commodity Futures Trading Commission, and it counts positions as of the close of business on the preceding Tuesday. Three days sit between the measurement and the publication. That gap, along with a reporting threshold that captures only the largest traders, defines what this free weekly file can honestly tell you.
COT report প্রতি সপ্তাহে কখন প্রকাশিত হয়?
শুক্রবার Eastern time অনুযায়ী 3:30 p.m.-এ। নিয়ন্ত্রক সংস্থাই এটি প্রকাশ করে। CFTC-এর Commitments of Traders পেজ-এ ফাইলগুলো বিনামূল্যে দেখা যায়। এগুলো viewable table এবং downloadable text—দুই ফরম্যাটেই থাকে।
ক্যালেন্ডারের দুটি বিষয় ঘড়ির সময়ের চেয়ে বেশি গুরুত্বপূর্ণ:
- ডেটার তারিখ মঙ্গলবার, শুক্রবার নয়। শুক্রবারের ফাইলে থাকা প্রতিটি পরিসংখ্যান মঙ্গলবারের ব্যবসা শেষ হওয়ার সময়কার position নির্দেশ করে।
- Federal holiday হলে প্রকাশের তারিখ বদলে যায়। Reporting week-এর মধ্যে কোনো holiday থাকলে publication এক বা দুই দিন পিছিয়ে যায়। CFTC এমন একটি release schedule প্রকাশ করে, যেখানে প্রতি সপ্তাহের প্রকৃত তারিখ দেওয়া থাকে। স্বাভাবিক সপ্তাহে শুক্রবারের নিয়ম কার্যকর থাকে, তবে federal holiday-এর সপ্তাহে তা পরিবর্তিত হয়।
একই মঙ্গলবারের তথ্য একাধিক ফাইলেও থাকে: একটি futures-only version এবং একটি options-and-futures-combined version। দ্বিতীয়টিতে exchange-গুলোর সরবরাহ করা delta factor ব্যবহার করে option position-কে futures-equivalent basis-এ রূপান্তর করা হয়। একই দিনে একই market-এর জন্য দুই ব্যক্তি ভিন্ন সংখ্যা উদ্ধৃত করলে, তারা প্রায়ই ভিন্ন version পড়ছেন।
প্রকাশের সময় COT report তিন দিন পুরোনো থাকে কেন?
Positioning data বোঝার ক্ষেত্রে snapshot থেকে release পর্যন্ত ব্যবধানটি সবচেয়ে গুরুত্বপূর্ণ বিষয়। বুধবার, বৃহস্পতিবার বা শুক্রবার সকালে বড় traders যা করেছেন, 3:30-এ প্রকাশিত ফাইলে তার কিছুই থাকে না। এই অদৃশ্য অংশের পরিমাণ বোঝাতে এখানে COT-এর আওতাভুক্ত market অনুসরণ করা exchange-traded fund মাপা হয়েছে: stocks, Treasuries, metals এবং energy। এই fund-গুলো futures contract নয়। তবে তিন দিনে এই market-গুলো কতটা নড়াচড়া করে, তা মাপার জন্য এগুলো যথেষ্ট উপযোগী।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH raw AS (
SELECT ticker,
toTimeZone(window_start, 'America/New_York') AS et,
close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'TLT', 'GLD', 'SLV', 'USO', 'UNG')
AND window_start >= toDateTime('2024-08-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
SELECT ticker,
toDate(et) AS session_date,
toDayOfWeek(et) AS day_of_week,
toHour(et) * 60 + toMinute(et) AS minute_of_day,
close
FROM raw
WHERE toDayOfWeek(et) IN (2, 5)
AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
tuesday_snapshot AS (
SELECT ticker,
toMonday(session_date) AS week_start,
argMax(close, minute_of_day) AS tuesday_close
FROM bars
WHERE day_of_week = 2
GROUP BY ticker, week_start
),
friday_release AS (
SELECT ticker,
toMonday(session_date) AS week_start,
argMax(close, minute_of_day) AS friday_1530
FROM bars
WHERE day_of_week = 5
AND minute_of_day BETWEEN 900 AND 930
GROUP BY ticker, week_start
)
SELECT t.ticker AS ticker,
count() AS weeks_counted,
round(quantileDeterministic(0.5)(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100,
cityHash64(toString(t.week_start))), 2) AS median_abs_move_pct,
round(quantileDeterministic(0.9)(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100,
cityHash64(toString(t.week_start))), 2) AS p90_abs_move_pct,
round(100 * countIf(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100 >= 2) / count(), 1) AS pct_weeks_over_2pct
FROM tuesday_snapshot AS t
INNER JOIN friday_release AS f
ON t.ticker = f.ticker AND t.week_start = f.week_start
GROUP BY t.ticker
ORDER BY median_abs_move_pct DESCদুই বছরের report week-এ মঙ্গলবারের close থেকে শুক্রবার 3:30 p.m.-এর print পর্যন্ত median দূরত্ব 2.97% থেকে 0.66%-এ নেমেছে—যথাক্রমে UNG এবং TLT-এর মধ্যে—97 সপ্তাহের তথ্যের ওপর ভিত্তি করে। অর্ধেক সপ্তাহে এই median-এর চেয়ে কম নড়াচড়া হয়েছে। মঙ্গলবারের snapshot কখন পুরোনো হয়ে যায়, তা বোঝায় tail: প্রতি 10 সপ্তাহে 1 সপ্তাহে UNG-এর মধ্যে 8.68% বা তার বেশি movement হয়েছে, এবং 68% সপ্তাহে movement 2 শতাংশ ছাড়িয়েছে।
একটি market-এর সপ্তাহভিত্তিক চিত্র এই ব্যবধানের অসম প্রকৃতি দেখায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH raw AS (
SELECT toTimeZone(window_start, 'America/New_York') AS et,
close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-08-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
SELECT toDate(et) AS session_date,
toDayOfWeek(et) AS day_of_week,
toHour(et) * 60 + toMinute(et) AS minute_of_day,
close
FROM raw
WHERE toDayOfWeek(et) IN (2, 5)
AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
tuesday_snapshot AS (
SELECT toMonday(session_date) AS week_start,
argMax(close, minute_of_day) AS tuesday_close
FROM bars
WHERE day_of_week = 2
GROUP BY week_start
),
friday_release AS (
SELECT toMonday(session_date) AS week_start,
max(session_date) AS friday_date,
argMax(close, minute_of_day) AS friday_1530
FROM bars
WHERE day_of_week = 5
AND minute_of_day BETWEEN 900 AND 930
GROUP BY week_start
)
SELECT f.friday_date AS week,
formatDateTime(f.friday_date, '%b %e, %Y') AS friday_label,
round((toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100, 2) AS change_pct,
round(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100, 2) AS abs_change_pct
FROM tuesday_snapshot AS t
INNER JOIN friday_release AS f ON t.week_start = f.week_start
ORDER BY weekJuly 31, 2026 পর্যন্ত বছরের 48 report week-এর মধ্যে প্রথম charted week, যা Aug 8, 2025 তারিখে শেষ হয়েছে, সেখানে gap ছিল 1.45%। শেষ week, যা Jul 31, 2026 তারিখে শেষ হয়েছে, সেখানে gap ছিল 0.86%। কোনো কোনো সপ্তাহে file প্রায় বর্তমান থাকে। আবার কোনো কোনো সপ্তাহে এটি এমন market-এর বর্ণনা দেয়, যা ইতিমধ্যে এগিয়ে গেছে। আপনি কোন ধরনের সপ্তাহে আছেন, তা file-এর কোনো print জানায় না। Short interest-এর সমস্যাটিও একই রকম, তবে সময়সীমা দীর্ঘ: short interest কখন প্রকাশিত হয় সেই calendar ব্যাখ্যা করে, আর short interest কেন দুই সপ্তাহ পুরোনো এই lag ব্যাখ্যা করে।
শুক্রবার 3:30 p.m.-এ কী ঘটে?
U.S. stock market Eastern time অনুযায়ী 4:00 p.m.-এ বন্ধ হওয়ার আধা ঘণ্টা আগে file প্রকাশিত হয়। 15 মিনিটের bucket-এ ভাগ করলে একটি পূর্ণ শুক্রবারের session-এর trading volume ঘড়িজুড়ে এভাবে ছড়ায়।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH raw AS (
SELECT toTimeZone(window_start, 'America/New_York') AS et,
volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-08-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
SELECT toDate(et) AS session_date,
toHour(et) * 60 + toMinute(et) AS minute_of_day,
intDiv((toHour(et) * 60 + toMinute(et)) - 570, 15) AS bucket,
volume AS shares
FROM raw
WHERE toDayOfWeek(et) = 5
AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
full_sessions AS (
SELECT session_date
FROM bars
GROUP BY session_date
HAVING sumIf(shares, minute_of_day >= 930) >= 0.05 * sum(shares)
)
SELECT formatDateTime(toDateTime(toDate('2026-01-02')) + (570 + b.bucket * 15) * 60, '%H:%i') AS et_time,
round(100 * sum(b.shares) / sum(sum(b.shares)) OVER (), 2) AS share_of_session_pct,
round(sum(b.shares) / uniqExact(b.session_date) / 1000000, 2) AS avg_volume_millions
FROM bars AS b
INNER JOIN full_sessions AS s ON b.session_date = s.session_date
GROUP BY b.bucket
ORDER BY b.bucketU.S. session-এ volume-এর আকার একটি হাসির রেখার মতো। প্রথম 15 মিনিটে দিনের শেয়ারের 6.98% লেনদেন হয়। 12:00-এর bucket-এ তা কমে 2.72% হয়। Continuous trading-এর শেষ 15 মিনিটে তা বেড়ে 13.17% হয়। Report প্রকাশের সময়কার 15:30 bucket-এ থাকে 4.92%। Trading week-এর শেষ দিনে closing ramp-এর মধ্যেই report প্রকাশিত হয়। এটি calendar-এর একটি তথ্য। File-এ কী trade হয়েছে, সে বিষয়ে এটি কোনো দাবি নয়।
Legacy, disaggregated, নাকি TFF: কোনটি কোন COT report?
চারটি report-এ COT নাম রয়েছে। এগুলো একই মঙ্গলবারের open interest ভিন্নভাবে ভাগ করে।
- Legacy প্রতিটি market-কে commercial, non-commercial এবং nonreportable position-এ ভাগ করে। এটি সবচেয়ে পুরোনো format এবং অধিকাংশ মানুষ “COT report” বলতে এটিকেই বোঝেন।
- Supplemental 13টি agricultural commodity কভার করে এবং index trader-দের আলাদা category হিসেবে দেখায়।
- Disaggregated agriculture ও petroleum থেকে natural gas, electricity এবং metals পর্যন্ত physical commodity market কভার করে। এতে চারটি category আছে: producer/merchant/processor/user, swap dealers, managed money এবং other reportables।
- Traders in Financial Futures, বা TFF report, currencies, Treasury securities, stock indices এবং volatility-সহ financial contract কভার করে। এর category হলো sell side-এ dealer/intermediary এবং buy side-এ asset manager/institutional, leveraged funds ও other reportables।
কোনো headline-এ যদি বলা হয় hedge fund-গুলো বহু বছরের মধ্যে crude oil-এ সবচেয়ে বড় short position ধরে আছে, তাহলে underlying series সাধারণত disaggregated report-এর managed money। একই কথা S&P 500-এর ক্ষেত্রে বলা হলে তা TFF-এর leveraged funds বোঝায়। এই label-গুলো একে অপরের পরিবর্তে ব্যবহার করা যায় না।
COT report-এ বাস্তবে কাদের গণনা করা হয়?
বড় traders-দের। অন্য কাউকে নয়। Clearing member, futures commission merchant এবং foreign broker-রা এমন প্রতিটি trader-এর daily report জমা দেয়, যার position CFTC regulation-এ নির্ধারিত reporting level-এ বা তার ওপরে রয়েছে। কোনো market-এ অন্তত 20 জন trader ওই level-এ position রাখলেই সেটি COT-এ প্রকাশিত হয়। সাধারণত reportable position কোনো market-এর open interest-এর 70 থেকে 90 শতাংশ কভার করে। বাকি অংশ একটি single nonreportable line-এ যায়। সেখানে কোনো category বা trader count দেওয়া থাকে না।
Category-গুলো ঘোষিত পেশা নির্দেশ করে, strategy নয়। Commercial, বা producer/merchant/processor/user, এমন একটি firm যার business activity-কে futures position hedge করে, যেমনটি তার CFTC Form 40-এ উল্লেখ করা থাকে। Managed money হলো pooled speculative capital: advisor, pool operator এবং client-এর হয়ে trade করা fund। একটি grain elevator inventory hedge করতে পারে, আর একটি fund price move-এর প্রত্যাশায় position নিতে পারে। তারা বিপরীত column-এ একই ধরনের contract ধরে রাখতে পারে। Report বলে কে position ধরে রেখেছে। কেন ধরে রেখেছে, তা কখনও বলে না।
COT report ভুল বোঝার দুটি উপায়
Record net long timing tool নয়। Net position হলো দুটি সংখ্যার পার্থক্য—long minus short—যা একটি নির্দিষ্ট category-র contract-এ প্রকাশ করা হয়। Record reading জানায়, মঙ্গলবার ওই category-র exposure একটি extreme level-এ ছিল। কিন্তু ওই exposure কখন বা আদৌ unwind হবে কি না, সে বিষয়ে এটি কোনো তথ্য দেয় না। সব asset class-এই crowd-position gauge-এর একই সীমাবদ্ধতা রয়েছে: put/call ratio এবং FINRA short interest data—দুটিই ইতিমধ্যে নেওয়া একটি অবস্থান বর্ণনা করে।
Raw contract count দিয়ে বিভিন্ন product তুলনা করা যায় না। COT table contract গণনা করে, আর contract হলো কোনো কিছুর একটি নির্দিষ্ট quantity। একটি COMEX gold contract-এ 100 troy ounce থাকে। একটি NYMEX crude contract-এ 1,000 barrel থাকে। Contract count দিয়ে market rank করলে মূলত exchange বহু বছর আগে নির্ধারণ করা unit definition-কে rank করা হয়। Equities-এর ক্ষেত্রেও একই হিসাব প্রযোজ্য, যেখানে share হলো unit।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH raw AS (
SELECT ticker,
toTimeZone(window_start, 'America/New_York') AS et,
close,
volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'TLT', 'GLD', 'SLV', 'USO', 'UNG')
AND window_start >= toDateTime('2026-07-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
),
rth AS (
SELECT ticker,
volume AS shares,
toFloat64(close) * volume AS dollars
FROM raw
WHERE (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
)
SELECT ticker,
round(sum(dollars) / sum(shares), 2) AS unit_size_usd,
round(100 * sum(shares) / sum(sum(shares)) OVER (), 2) AS share_of_units_pct,
round(100 * sum(dollars) / sum(sum(dollars)) OVER (), 2) AS share_of_dollars_pct
FROM rth
GROUP BY ticker
ORDER BY unit_size_usd DESCJuly 2026-এ SPY-এর 1 unit গড়ে $744.99 দরে লেনদেন হয়েছে। UNG-এর 1 unit-এর গড় মূল্য ছিল $10.52। প্রতিটির 1,000 unit সমান অর্থমূল্য নয়। সাতটি fund-এর মধ্যে SPY মোট traded unit-এর 31.75% এবং dollar volume-এর 50.07% দখল করেছে। অন্যদিকে UNG unit-এর 5.41% এবং dollar volume-এর 0.12% দখল করেছে। প্রতিটি unit-এর দাম একই হলেই unit-এর share এবং dollar-এর share সমান হবে। একটি market-এর সময়ের সঙ্গে positioning তুলনা করুন। অথবা ranking করার আগে contract-কে notional value-তে রূপান্তর করুন।
COT report FAQ
COT report কখন প্রকাশিত হয়?
শুক্রবার Eastern time অনুযায়ী 3:30 p.m.-এ CFTC website-এ। Position মঙ্গলবারের আগের business day-এর close নয়, তার আগের মঙ্গলবারের business close অনুযায়ী মাপা হয়। তাই প্রকাশের সময় file তিন দিন পুরোনো থাকে। Reporting week-এ federal holiday থাকলে publication এক বা দুই দিন পিছিয়ে যায়।
COT report কি বিনামূল্যে?
হ্যাঁ। CFTC এটি বিনামূল্যে প্রকাশ করে। Viewable table এবং downloadable file—দুই format-এই এটি পাওয়া যায়। Commercial positioning product-গুলো একই public data chart ও historical information-সহ পুনরায় প্রকাশ করে।
Legacy এবং disaggregated COT report-এর মধ্যে পার্থক্য কী?
Legacy একটি market-কে commercial, non-commercial এবং nonreportable position-এ ভাগ করে। Disaggregated physical commodity market-কে producer/merchant/processor/user, swap dealers, managed money এবং other reportables-এ ভাগ করে। Financial market-এ একই ধরনের বিভাজন Traders in Financial Futures report-এ করা হয়।
COT report কি প্রতিটি trader-এর position দেখায়?
না। এটি CFTC reporting level-এ বা তার ওপরে থাকা trader-দের গণনা করে। সাধারণত এতে একটি market-এর open interest-এর 70 থেকে 90 শতাংশ কভার হয়। কোনো market-এ অন্তত 20 জন trader ওই level-এ থাকলেই তা প্রকাশিত হয়। Threshold-এর নিচে থাকা সবাইকে একটি anonymous nonreportable line-এ একত্র করা হয়।
COT report কি price movement পূর্বাভাস দিতে পারে?
এটি তিন দিনের lag-সহ একটি position census, forecast নয়। মঙ্গলবার বড় traders কোথায় অবস্থান করছিল, এটি তা নথিভুক্ত করে। কোনো extreme reading কখন শেষ হবে, তার কোনো তারিখ এতে দেওয়া থাকে না।
এই পেজের প্রতিটি number minute-level price এবং volume history-র ওপর চালানো stored query থেকে নেওয়া হয়েছে। প্রতিটি panel-এর নিচে SQL উন্মুক্ত রয়েছে। COT file আগের মতোই প্রতি শুক্রবার 3:30-এ বিনামূল্যে প্রকাশিত হয়। Strasmore terminal-এ আপনি যে market অনুসরণ করেন, সেই market-এ একই panel চালান।