Quando viene pubblicato il report COT?
La CFTC pubblica il report COT ogni venerdì alle 15:30 Eastern, con dati rilevati alla chiusura di martedì. Scopri calendario, ritardo di tre giorni e lettura del report.
Il Commitments of Traders report, o report COT, viene pubblicato ogni venerdì alle 15:30 Eastern dalla U.S. Commodity Futures Trading Commission e rileva le posizioni alla chiusura della giornata lavorativa del martedì precedente. Tra la rilevazione e la pubblicazione passano tre giorni. Questo intervallo, insieme a una soglia di reporting che include solo i trader più grandi, determina ciò che questo file settimanale gratuito può dirti con accuratezza.
Quando viene pubblicato ogni settimana il report COT?
Venerdì alle 15:30 Eastern, pubblicato direttamente dall’autorità di vigilanza. La pagina Commitments of Traders della CFTC rende disponibili i file gratuitamente, sia in tabelle consultabili sia come testo scaricabile.
Due dettagli del calendario contano più dell’orario:
- La data dei dati è il martedì, non il venerdì. Ogni dato contenuto nel file del venerdì descrive la situazione delle posizioni alla chiusura della giornata lavorativa del martedì.
- Le festività federali spostano la pubblicazione. Una festività nella settimana di reporting ritarda la pubblicazione di uno o due giorni, e la CFTC pubblica un calendario con la data effettiva di ogni settimana. La regola del venerdì vale nelle settimane normali, ma cambia nelle settimane con festività federali.
Lo stesso martedì compare in più di un file: una versione relativa ai soli futures e una versione combinata di opzioni e futures, nella quale le posizioni in opzioni vengono convertite su base equivalente-futures usando i fattori delta forniti dalle borse. Due persone che citano valori diversi per lo stesso mercato nello stesso giorno stanno spesso leggendo versioni diverse.
Perché il report COT ha tre giorni di ritardo quando lo leggi?
L’intervallo tra rilevazione e pubblicazione è l’elemento più importante da conoscere sui dati di posizionamento. Qualunque operazione effettuata dai trader più grandi mercoledì, giovedì o venerdì mattina è assente dal file pubblicato alle 15:30. Per misurare questa zona d’ombra, i pannelli qui riportati analizzano gli ETF quotati in borsa che seguono i mercati coperti dal COT: azioni, Treasury, metalli ed energia. Gli ETF non sono contratti futures. Sono però un indicatore ragionevole dell’ampiezza degli spostamenti di questi mercati in tre giorni.
L'esatto SQL dietro ogni numero
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 DESCNelle settimane di pubblicazione osservate nell’arco di due anni, la distanza mediana tra la chiusura di martedì e il print delle 15:30 di venerdì è variata da 2.97% in UNG a 0.66% in TLT, calcolata su 97 settimane. In metà delle settimane il movimento è rimasto al di sotto di queste mediane. È la coda della distribuzione a rendere rapidamente obsoleta una rilevazione del martedì: una settimana su dieci ha registrato un movimento di almeno 8.68% in UNG, e 68% delle settimane ha superato il due percento.
Un mercato, osservato settimana per settimana, mostra quanto possa essere irregolare questo intervallo.
L'esatto SQL dietro ogni numero
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 weekNelle 48 settimane di pubblicazione dell’anno terminato il 31 luglio 2026, la prima settimana rappresentata, terminata il Aug 8, 2025, presentava un intervallo del 1.45%, mentre l’ultima, terminata il Jul 31, 2026, presentava 0.86%. In alcune settimane il file è quasi aggiornato. In altre descrive un mercato che si è già mosso. Nulla di ciò che è stampato nel file indica in quale dei due casi ci si trovi. Lo short interest presenta lo stesso problema, ma su un calendario più lungo: quando viene pubblicato lo short interest ne illustra le scadenze, mentre perché lo short interest ha due settimane di ritardo spiega il ritardo.
Cosa accade alle 15:30 di venerdì?
Il file viene pubblicato mezz’ora prima della chiusura del mercato azionario statunitense, alle 16:00 Eastern. Ecco come una seduta completa del venerdì distribuisce gli scambi nell’arco della giornata, suddivisi in intervalli di quindici minuti.
L'esatto SQL dietro ogni numero
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.bucketIl volume di una seduta statunitense ha una forma a sorriso. Il primo quarto d’ora rappresenta 6.98% delle azioni scambiate nella giornata, il periodo delle 12:00 scende a 2.72% e l’ultimo quarto d’ora di negoziazione continua rappresenta 13.17%. L’intervallo delle 15:30, quello in cui viene pubblicato il report, rappresenta 4.92%. La pubblicazione avviene durante l’accelerazione finale dell’ultima giornata della settimana di trading. Questo è un dato del calendario, non un’affermazione sugli scambi effettuati sul file.
Legacy, disaggregated o TFF: quale report COT è quale?
Quattro report riportano il nome COT e suddividono in modo diverso lo stesso open interest del martedì.
- Legacy divide ogni mercato in posizioni commercial, non-commercial e nonreportable. È il formato più antico e quello a cui la maggior parte delle persone si riferisce quando parla del “report COT”.
- Supplemental copre 13 commodity agricole e indica i trader sugli indici come categoria separata.
- Disaggregated copre i mercati delle commodity fisiche, dall’agricoltura e dal petrolio al gas naturale, all’elettricità e ai metalli, usando quattro categorie: producer/merchant/processor/user, swap dealers, managed money e other reportables.
- Traders in Financial Futures, il report TFF, copre i contratti finanziari, tra cui valute, Treasury securities, indici azionari e volatilità. Le sue categorie sono dealer/intermediary sul lato delle vendite, quindi asset manager/institutional, leveraged funds e other reportables sul lato degli acquisti.
Quando un titolo dice che gli hedge fund detengono la maggiore posizione short sul crude oil da anni, la serie sottostante è di norma quella del managed money nel report disaggregated. La stessa frase riferita all’S&P 500 indica invece i leveraged funds nel TFF. Le etichette non sono intercambiabili.
Chi viene effettivamente conteggiato nel report COT?
I trader di grandi dimensioni, e nessun altro. Clearing member, futures commission merchant e broker esteri presentano report giornalieri su ogni trader la cui posizione raggiunge o supera il livello di reporting stabilito dalla normativa CFTC; un mercato compare nel COT solo quando almeno 20 trader detengono posizioni a quei livelli. Le posizioni reportable coprono normalmente dal 70 al 90 percento dell’open interest di un mercato. Il resto confluisce in un’unica voce nonreportable, senza categoria né numero di trader indicato.
Le categorie descrivono attività dichiarate, non strategie. Un commercial, o producer/merchant/processor/user, è una società la cui attività economica viene coperta dalla posizione in futures, come indicato nel Form 40 della CFTC. Il managed money è capitale speculativo aggregato: advisor, pool operator e fondi che operano per conto dei clienti. Un silo cerealicolo che copre l’inventario e un fondo che assume una posizione in previsione di un movimento dei prezzi possono detenere contratti identici in colonne opposte. Il report indica chi detiene una posizione. Non spiega mai il motivo.
Due modi in cui il report COT viene interpretato male
Una posizione net long record non è uno strumento di timing. Una posizione netta è un unico valore ottenuto da due valori, long meno short, espressi in contratti e all’interno di una singola categoria. Un dato record indica che l’esposizione di quella categoria si trovava a un estremo alla data del martedì. Non fornisce informazioni su quando, o se, tale esposizione verrà chiusa. Gli indicatori del posizionamento del mercato condividono questo limite in tutte le asset class: il put/call ratio e i dati FINRA sullo short interest descrivono entrambi una posizione già assunta.
Il numero grezzo di contratti non consente confronti tra prodotti. Una tabella COT conta i contratti, e un contratto rappresenta una quantità di un determinato sottostante. Un contratto COMEX sull’oro corrisponde a 100 once troy. Un contratto NYMEX sul crude oil corrisponde a 1.000 barili. Ordinare i mercati in base al numero di contratti significa ordinarli usando definizioni delle unità stabilite dalle borse decenni fa. Lo stesso criterio si applica alle azioni, dove l’unità è la singola azione.
L'esatto SQL dietro ogni numero
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 DESCUn’unità di SPY è stata scambiata a una media di $744.99 a luglio 2026, contro $10.52 per un’unità di UNG. Mille unità di ciascun prodotto non rappresentano lo stesso ammontare di denaro. Sui sette fondi, SPY ha rappresentato 31.75% delle unità scambiate e 50.07% dei dollari, mentre UNG ha rappresentato 5.41% delle unità e 0.12% dei dollari. La quota delle unità coincide con la quota dei dollari solo quando ogni unità ha lo stesso prezzo. Confronta il posizionamento all’interno di un singolo mercato nel tempo, oppure converti i contratti in valore nozionale prima di effettuare qualsiasi classifica.
Domande frequenti sul report COT
A che ora viene pubblicato il report COT?
Alle 15:30 Eastern di venerdì, sul sito della CFTC. Le posizioni vengono rilevate alla chiusura della giornata lavorativa del martedì precedente, quindi al momento della pubblicazione il file ha tre giorni di ritardo. Una festività federale nella settimana di reporting lo ritarda di uno o due giorni.
Il report COT è gratuito?
Sì. La CFTC lo pubblica gratuitamente, in tabelle consultabili e in file scaricabili. I prodotti commerciali sul posizionamento rielaborano gli stessi dati pubblici aggiungendo grafici e serie storiche.
Qual è la differenza tra i report COT legacy e disaggregated?
Il report Legacy divide un mercato in posizioni commercial, non-commercial e nonreportable. Il report disaggregated divide i mercati delle commodity fisiche in producer/merchant/processor/user, swap dealers, managed money e other reportables. I mercati finanziari ricevono un trattamento analogo nel report Traders in Financial Futures.
Il report COT mostra la posizione di ogni trader?
No. Conta i trader che raggiungono o superano i livelli di reporting della CFTC; questi rappresentano normalmente dal 70 al 90 percento dell’open interest di un mercato, e un mercato viene pubblicato solo quando almeno 20 trader si trovano a quei livelli. Tutti i trader al di sotto della soglia vengono aggregati in un’unica voce nonreportable anonima.
Il report COT può prevedere i movimenti dei prezzi?
È un censimento delle posizioni con tre giorni di ritardo, non una previsione. Registra la posizione dei trader più grandi a un martedì, e un dato estremo non indica quando tale condizione terminerà.
Ogni numero di questa pagina deriva da una stored query sulla cronologia dei prezzi e dei volumi a livello di minuto, con il codice SQL disponibile sotto ciascun pannello. Il file COT resta dove è sempre stato: gratuito, ogni venerdì alle 15:30. Esegui gli stessi pannelli sui mercati che segui sul terminale Strasmore.