Коли публікують COT report
CFTC публікує COT report щоп’ятниці о 15:30 ET за даними на закриття вівторка. Дізнайтеся про графік, триденну затримку та читання звіту.
Звіт Commitment of Traders, або COT report, щоп’ятниці о 15:30 за східним часом США публікує Комісія з торгівлі товарними ф’ючерсами США. Він містить дані про позиції станом на кінець робочого дня попереднього вівторка. Між датою вимірювання та публікацією минає три дні. Цей проміжок разом із порогом звітності, який охоплює лише найбільших трейдерів, визначає, що саме можна обґрунтовано дізнатися з цього безкоштовного щотижневого файлу.
Коли щотижня публікують COT report?
У п’ятницю о 15:30 за східним часом США. Звіт публікує сам регулятор. Сторінка CFTC зі звітами Commitments of Traders містить файли безкоштовно: у вигляді таблиць для перегляду та текстових файлів для завантаження.
У календарі є дві деталі, важливіші за час публікації:
- Дата даних — вівторок, а не п’ятниця. Кожна цифра у п’ятничному файлі описує позиції станом на кінець робочого дня вівторка.
- Федеральні свята змінюють дату публікації. Свято в межах звітного тижня відкладає публікацію на один або два дні. CFTC публікує календар, у якому зазначено фактичну дату для кожного тижня. Правило п’ятниці діє у звичайний тиждень, але змінюється у тижні з федеральним святом.
Ті самі дані за вівторок також потрапляють до кількох файлів: окремої версії для ф’ючерсів і комбінованої версії для опціонів та ф’ючерсів. У комбінованій версії позиції за опціонами перераховують на базі ф’ючерсного еквівалента із застосуванням коефіцієнтів delta, які надають біржі. Якщо двоє людей наводять різні цифри для одного ринку в один день, часто вони просто використовують різні версії звіту.
Чому COT report є триденним застарілим на момент публікації?
Проміжок між знімком даних і публікацією — головне, що потрібно знати про дані щодо позиціонування. Будь-які дії найбільших трейдерів у середу, четвер або вранці п’ятниці не відображені у файлі, який публікується о 15:30. Щоб оцінити цей пропуск, панелі нижче вимірюють рух ETF, що відстежують ринки, які охоплює COT: акції, Treasury, метали та енергоресурси. Ці фонди не є ф’ючерсними контрактами. Вони слугують достатньо точним орієнтиром для оцінки руху цих ринків протягом трьох днів.
Точний 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За два роки звітних тижнів медіанна відстань від закриття у вівторок до print о 15:30 у п’ятницю становила від 2.97% у UNG до 0.66% у TLT, розраховано за 97 тижнями. У половині тижнів показник був нижчим за ці медіанні значення. Саме крайні значення роблять знімок за вівторок застарілим: один тиждень із десяти показав рух на 8.68% або більше у UNG, а протягом 68% тижнів рух перевищив два відсотки.
Динаміка одного ринку по тижнях показує, наскільки нерівномірним є цей розрив.
Точний 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 weekЗа 48 звітними тижнями року до 31 липня 2026 року перший тиждень на графіку, що завершився Aug 8, 2025, мав розрив 1.45%, а останній, що завершився Jul 31, 2026, — 0.86%. У деякі тижні файл майже відповідає поточним даним. В інші він описує ринок, який уже змінився. Сам файл не містить інформації про те, до якого саме типу тижня належить поточний період. Така сама проблема характерна для short interest, але за довшим календарем: коли публікують дані про short interest описує відповідний календар, а чому дані про short interest відстають на два тижні пояснює затримку.
Що відбувається о 15:30 у п’ятницю?
Файл публікують за пів години до закриття фондового ринку США о 16:00 за східним часом. Нижче показано, як повна п’ятнична сесія розподіляє торгівлю протягом дня за п’ятнадцятихвилинними інтервалами.
Точний 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.bucketОбсяг торгів на сесії у США має форму усмішки. На перші п’ятнадцять хвилин припадає 6.98% денного обсягу акцій, о 12:00 активність знижується до 2.72%, а на останні п’ятнадцять хвилин безперервної торгівлі припадає 13.17%. На інтервал 15:30, коли виходить звіт, припадає 4.92%. Публікація відбувається в період активізації торгів перед закриттям в останній день торгового тижня. Це факт календаря, а не твердження про те, які саме угоди відображені у файлі.
Legacy, disaggregated чи TFF: чим відрізняються звіти COT?
Чотири звіти мають назву COT і по-різному розподіляють відкритий інтерес станом на той самий вівторок.
- Legacy розподіляє кожен ринок на комерційні, некомерційні та нерепортовані позиції. Це найстаріший формат і саме той звіт, який більшість людей має на увазі під «COT report».
- Supplemental охоплює 13 сільськогосподарських товарів і виділяє індексних трейдерів в окрему категорію.
- Disaggregated охоплює фізичні товарні ринки — від сільськогосподарської продукції та нафти до природного газу, електроенергії й металів. Він використовує чотири категорії: виробники/торговці/переробники/користувачі, swap dealers, managed money та інші звітні учасники.
- Traders in Financial Futures, або TFF report, охоплює фінансові контракти, зокрема валюти, Treasury securities, фондові індекси та волатильність. До його категорій належать dealer/intermediary на стороні продажу, а також asset manager/institutional, leveraged funds та інші звітні учасники на стороні купівлі.
Коли в заголовку написано, що hedge funds утримують найбільшу за багато років коротку позицію в нафті, зазвичай ідеться про категорію managed money у disaggregated report. Те саме формулювання щодо S&P 500 означає leveraged funds у TFF. Ці назви категорій не є взаємозамінними.
Хто саме враховується у COT report?
Великі трейдери — і ніхто інший. Clearing members, futures commission merchants та іноземні брокери щодня подають звіти про кожного трейдера, чия позиція дорівнює або перевищує рівень звітності, встановлений правилами CFTC. Ринок потрапляє до COT лише тоді, коли на таких рівнях позиції утримують щонайменше 20 трейдерів. Звітні позиції зазвичай охоплюють від 70 до 90 відсотків відкритого інтересу на ринку. Решта потрапляє до одного рядка нерепортованих позицій без зазначення категорії та кількості трейдерів.
Категорії відображають заявлений вид діяльності, а не торгові стратегії. Комерційний учасник, або виробник/торговець/переробник/користувач, — це компанія, діяльність якої хеджує ф’ючерсна позиція, згідно з її формою CFTC Form 40. Managed money — це об’єднаний спекулятивний капітал: радники, оператори пулів і фонди, які торгують від імені клієнтів. Зерновий елеватор, що хеджує запаси, і фонд, який відкриває позицію в очікуванні руху ціни, можуть утримувати однакові контракти в протилежних колонках. Звіт показує, хто утримує позицію. Він не пояснює чому.
Два способи неправильно прочитати COT report
Рекордно велика net long позиція не є інструментом для визначення моменту входу чи виходу. Net position — це одне число, сформоване з двох показників: довгі позиції мінус короткі, у контрактах, у межах однієї категорії. Рекордне значення означає, що експозиція цієї категорії станом на вівторок була екстремальною. Воно не містить інформації про те, коли або чи взагалі ця експозиція буде закрита. Така сама межа властива індикаторам позиціонування в різних класах активів: put/call ratio та дані FINRA про short interest описують позицію, яку вже відкрито.
Сирі показники кількості контрактів не можна порівнювати між продуктами. Таблиця COT рахує контракти, а контракт є певною кількістю базового активу. Один контракт COMEX gold охоплює 100 тройських унцій. Один контракт NYMEX crude охоплює 1 000 барелів. Ранжування ринків за кількістю контрактів фактично ранжує їх за одиницями вимірювання, визначеними біржами десятиліття тому. Та сама арифметика застосовується до акцій, де одиницею є акція.
Точний 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 DESCОдна одиниця SPY у липні 2026 року переходила з рук у руки в середньому за $744.99, тоді як одна одиниця UNG коштувала $10.52. Тисяча одиниць кожного активу — це не однакова сума коштів. Серед семи фондів на 31.75% припало SPY торгованих одиниць і 50.07% доларового обсягу, тоді як на 5.41% припало UNG одиниць і 0.12% доларового обсягу. Частка одиниць дорівнює частці доларового обсягу лише тоді, коли кожна одиниця має однакову ціну. Порівнюйте позиціонування на одному ринку в динаміці або спочатку перераховуйте контракти в номінальну вартість, а вже потім ранжуйте показники.
Поширені запитання про COT report
О котрій годині публікують COT report?
У п’ятницю о 15:30 за східним часом США на вебсайті CFTC. Позиції вимірюють станом на кінець робочого дня попереднього вівторка, тому на момент публікації дані відстають на три дні. Федеральне свято у звітному тижні відкладає публікацію на один або два дні.
Чи є COT report безкоштовним?
Так. CFTC публікує його безкоштовно у вигляді таблиць для перегляду та файлів для завантаження. Комерційні продукти про позиціонування перепаковують ті самі загальнодоступні дані, додаючи графіки та історію.
У чому різниця між legacy і disaggregated COT reports?
Legacy розподіляє ринок на комерційні, некомерційні та нерепортовані позиції. Disaggregated розподіляє фізичні товарні ринки на виробників/торговців/переробників/користувачів, swap dealers, managed money та інших звітних учасників. Для фінансових ринків аналогічний розподіл наведено у Traders in Financial Futures report.
Чи показує COT report позицію кожного трейдера?
Ні. Він враховує трейдерів, чиї позиції досягають рівнів звітності CFTC або перевищують їх. Це зазвичай охоплює від 70 до 90 відсотків відкритого інтересу на ринку. Звіт публікують лише тоді, коли на таких рівнях перебувають щонайменше 20 трейдерів. Усіх учасників нижче порога об’єднують в один анонімний рядок нерепортованих позицій.
Чи може COT report прогнозувати рух цін?
Це перепис позицій із триденною затримкою, а не прогноз. Він фіксує, які позиції великі трейдери утримували у вівторок. Екстремальне значення не містить дати, коли воно завершиться.
Кожна цифра на цій сторінці отримана зі збереженого запиту до історії цін та обсягів із хвилинною деталізацією. SQL-код відкритий під кожною панеллю. Сам COT file залишається таким, яким був завжди: безкоштовним і доступним щоп’ятниці о 15:30. Запускайте ті самі панелі для ринків, за якими стежите, у терміналі Strasmore.