Quando sai o relatório COT?
A CFTC divulga o relatório COT toda sexta-feira às 15h30 ET, com dados do fechamento de terça-feira. Veja o calendário, o atraso de três dias e como interpretar o relatório.
O relatório Commitments of Traders, o relatório COT, é divulgado todas as sextas-feiras às 15h30, no horário do leste dos EUA, pela U.S. Commodity Futures Trading Commission. Ele contabiliza as posições no fechamento do expediente da terça-feira anterior. Há três dias entre a medição e a divulgação. Esse intervalo, junto com um limite de reporte que abrange apenas os maiores traders, define o que esse arquivo semanal gratuito pode dizer com segurança.
Quando o relatório COT é divulgado a cada semana?
Às 15h30 de sexta-feira, no horário do leste dos EUA, publicado pelo próprio regulador. A página de Commitments of Traders da CFTC disponibiliza os arquivos gratuitamente, em tabelas para consulta e em texto para download.
Dois detalhes do calendário são mais importantes do que o horário:
- A data dos dados é terça-feira, não sexta-feira. Cada número do arquivo de sexta-feira descreve como estavam as posições no fechamento do expediente de terça-feira.
- Feriados federais alteram a divulgação. Um feriado dentro da semana de reporte adia a publicação em um ou dois dias, e a CFTC publica um calendário com a data efetiva de cada semana. A regra de sexta-feira vale em uma semana normal, mas é ajustada nas semanas com feriado federal.
A mesma terça-feira também aparece em mais de um arquivo: uma versão apenas de futuros e outra que combina opções e futuros. Nesta última, as posições em opções são convertidas para uma base equivalente a futuros usando fatores delta fornecidos pelas bolsas. Duas pessoas que citam números diferentes para o mesmo mercado no mesmo dia muitas vezes estão lendo versões diferentes.
Por que o relatório COT tem três dias quando você o consulta?
O intervalo entre o retrato e a divulgação é o ponto mais importante para entender os dados de posicionamento. Qualquer operação feita pelos maiores traders na quarta-feira, na quinta-feira ou na manhã de sexta-feira não aparece no arquivo divulgado às 15h30. Para dimensionar esse ponto cego, os painéis aqui medem ETFs que acompanham os mercados cobertos pelo COT: ações, Treasuries, metais e energia. Os fundos não são contratos futuros. Eles são uma referência razoável para medir quanto esses mercados se deslocam em três dias.
O SQL exato por trás de cada número
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 DESCAo longo de dois anos de semanas com relatório, a distância mediana entre o fechamento de terça-feira e o print das 15h30 de sexta-feira variou de 2.97% em UNG a 0.66% em TLT, medida em 97 semanas. Metade das semanas ficou abaixo dessas medianas. A cauda da distribuição é o que torna um retrato de terça-feira defasado: em uma de cada dez semanas, o mercado se moveu 8.68% ou mais em UNG, e 68% das semanas superaram dois por cento.
Um mercado, observado semana a semana, mostra como esse intervalo pode variar.
O SQL exato por trás de cada número
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 weekNas 48 semanas com relatório no ano até 31 de julho de 2026, a primeira semana do gráfico, encerrada em Aug 8, 2025, teve um intervalo de 1.45%, enquanto a última, encerrada em Jul 31, 2026, teve 0.86%. Em algumas semanas, o arquivo está quase atualizado. Em outras, ele descreve um mercado que já mudou. Nada no arquivo informa em qual desses cenários você está. A posição vendida também apresenta esse problema, em um ciclo mais longo: quando a posição vendida é divulgada mostra esse calendário, e por que a posição vendida tem duas semanas de defasagem explica o intervalo.
O que acontece às 15h30 de uma sexta-feira?
O arquivo chega meia hora antes do fechamento do mercado acionário dos EUA, às 16h, no horário do leste. Veja como uma sessão completa de sexta-feira distribui a negociação ao longo do pregão, em intervalos de quinze minutos.
O SQL exato por trás de cada número
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.bucketO volume de uma sessão nos EUA tem formato de sorriso. O primeiro quarto de hora concentra 6.98% das ações negociadas no dia, o intervalo das 12h cai para 2.72%, e o último quarto de hora da negociação contínua responde por 13.17%. O intervalo das 15h30, aquele em que o relatório é divulgado, concentra 4.92%. A divulgação ocorre durante a aceleração de fechamento do último dia da semana de negociação. Isso é um fato do calendário, não uma afirmação sobre as operações registradas no arquivo.
Legacy, disaggregated ou TFF: qual relatório COT é qual?
Quatro relatórios usam o nome COT e segmentam o mesmo open interest de terça-feira de formas diferentes.
- Legacy divide cada mercado em posições comerciais, não comerciais e não reportáveis. É o formato mais antigo e aquele a que a maioria das pessoas se refere quando fala em “relatório COT”.
- Supplemental cobre 13 commodities agrícolas e destaca os traders de índices como uma categoria própria.
- Disaggregated cobre mercados de commodities físicas, de agricultura e petróleo a gás natural, eletricidade e metais, usando quatro categorias: produtor/comerciante/processador/usuário, swap dealers, managed money e outros reportáveis.
- Traders in Financial Futures, o relatório TFF, cobre contratos financeiros, incluindo moedas, títulos do Tesouro, índices de ações e volatilidade. Suas categorias são dealer/intermediário no lado vendedor; depois, gestor de ativos/institucional, fundos alavancados e outros reportáveis no lado comprador.
Quando uma manchete diz que os hedge funds mantêm sua maior posição vendida em petróleo bruto em anos, a série subjacente geralmente é a de managed money no relatório disaggregated. A mesma frase sobre o S&P 500 significa fundos alavancados no TFF. Os rótulos não são intercambiáveis.
Quem é efetivamente contado no relatório COT?
Os grandes traders, e mais ninguém. Membros de compensação, futures commission merchants e brokers estrangeiros enviam relatórios diários sobre todo trader cuja posição esteja no nível de reporte definido pela regulamentação da CFTC ou acima dele. Um mercado só aparece no COT quando 20 ou mais traders mantêm posições nesses níveis. As posições reportáveis normalmente abrangem de 70% a 90% do open interest de um mercado. O restante aparece em uma única linha não reportável, sem categoria nem contagem de traders.
As categorias representam ocupações declaradas, não estratégias. Um participante comercial, ou produtor/comerciante/processador/usuário, é uma empresa cuja atividade operacional é protegida pela posição em futuros, conforme declarado em seu Formulário 40 da CFTC. Managed money é capital especulativo agrupado: consultores, operadores de pools e fundos que negociam em nome de clientes. Um armazém de grãos que faz hedge de seu estoque e um fundo que se posiciona para uma variação de preço podem deter contratos idênticos em colunas opostas. O relatório informa quem detém uma posição. Ele nunca informa o motivo.
Duas formas de interpretar o relatório COT de maneira incorreta
Uma posição líquida comprada recorde não é uma ferramenta de timing. Uma posição líquida é um número formado por dois componentes: posições compradas menos posições vendidas, em contratos, dentro de uma única categoria. Uma leitura recorde indica que a exposição dessa categoria estava em um extremo na terça-feira. Ela não informa quando, nem se, essa exposição será desfeita. Indicadores de posicionamento da multidão têm a mesma limitação em diferentes classes de ativos: o put/call ratio e os dados de posições vendidas da FINRA descrevem uma posição que já foi assumida.
A contagem bruta de contratos não permite comparar produtos diferentes. Uma tabela COT conta contratos, e um contrato representa uma quantidade de algo. Um contrato de ouro da COMEX corresponde a 100 onças troy. Um contrato de petróleo bruto da NYMEX corresponde a 1.000 barris. Classificar mercados pela contagem de contratos significa classificá-los por definições de unidade estabelecidas pelas bolsas décadas atrás. A mesma lógica se aplica às ações, nas quais a unidade é o papel.
O SQL exato por trás de cada número
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 DESCUma unidade de SPY trocou de mãos a uma média de $744.99 em julho de 2026, contra $10.52 por uma unidade de UNG. Mil unidades de cada ativo não representam o mesmo volume financeiro. Nos sete fundos, SPY respondeu por 31.75% das unidades negociadas e 50.07% dos dólares, enquanto UNG respondeu por 5.41% das unidades e 0.12% dos dólares. A participação nas unidades equivale à participação nos dólares apenas quando todas as unidades têm o mesmo preço. Compare o posicionamento dentro de um único mercado ao longo do tempo ou converta os contratos em valor nocional antes de fazer qualquer classificação.
Perguntas frequentes sobre o relatório COT
A que horas o relatório COT é divulgado?
Às 15h30 de sexta-feira, no horário do leste dos EUA, no site da CFTC. As posições são medidas no fechamento do expediente da terça-feira anterior, portanto o arquivo tem três dias de defasagem quando é divulgado. Um feriado federal na semana de reporte adia a divulgação em um ou dois dias.
O relatório COT é gratuito?
Sim. A CFTC o publica gratuitamente, em tabelas para consulta e arquivos para download. Produtos comerciais de posicionamento reorganizam os mesmos dados públicos com gráficos e histórico.
Qual é a diferença entre os relatórios COT legacy e disaggregated?
O Legacy divide um mercado em posições comerciais, não comerciais e não reportáveis. O Disaggregated divide os mercados de commodities físicas em produtor/comerciante/processador/usuário, swap dealers, managed money e outros reportáveis. Os mercados financeiros recebem tratamento equivalente no relatório Traders in Financial Futures.
O relatório COT mostra a posição de cada trader?
Não. Ele contabiliza os traders que estão nos níveis de reporte da CFTC ou acima deles. Isso normalmente abrange de 70% a 90% do open interest de um mercado, e um mercado só é publicado quando 20 ou mais traders estão nesses níveis. Todos os participantes abaixo do limite são agrupados em uma única linha anônima não reportável.
O relatório COT pode prever movimentos de preços?
Ele é um censo de posições com três dias de defasagem, não uma previsão. Registra onde estavam os grandes traders na terça-feira, e uma leitura extrema não informa quando ela chegará ao fim.
Todos os números desta página vêm de uma consulta armazenada sobre o histórico de preços e volume em nível de minuto, com o SQL disponível abaixo de cada painel. O arquivo COT continua onde sempre esteve: gratuito, todas as sextas-feiras, às 15h30. Execute os mesmos painéis nos mercados que você acompanha no terminal Strasmore.