Strasmore Research
Apprendre Matt ConnorPar Matt Connor

Quand le rapport COT est-il publié ?

La CFTC publie le rapport COT chaque vendredi à 15 h 30, heure de l’Est, sur les positions du mardi. Comprenez le décalage de trois jours et sa lecture.

Le rapport Commitments of Traders, ou rapport COT, est publié chaque vendredi à 15 h 30, heure de l’Est des États-Unis, par la Commodity Futures Trading Commission (CFTC). Il recense les positions à la clôture de la séance du mardi précédent. Trois jours séparent donc la mesure de la publication. Ce décalage, ainsi que le seuil déclaratif qui ne couvre que les plus gros intervenants, détermine ce que ce fichier hebdomadaire gratuit peut réellement vous apprendre.

Quand le rapport COT est-il publié chaque semaine ?

Le vendredi à 15 h 30, heure de l’Est, directement par le régulateur. La page Commitments of Traders de la CFTC met les fichiers gratuitement à disposition, sous forme de tableaux consultables et de fichiers texte téléchargeables.

Deux éléments du calendrier comptent davantage que l’heure précise :

  • La date des données est le mardi, pas le vendredi. Chaque chiffre du fichier publié le vendredi indique où en étaient les positions à la clôture du mardi.
  • Les jours fériés fédéraux décalent la publication. Un jour férié pendant la semaine de reporting retarde la publication d’un ou deux jours. La CFTC publie un calendrier précisant la date effective de chaque semaine. La règle du vendredi s’applique lors d’une semaine normale, mais elle est adaptée pendant les semaines comprenant un jour férié fédéral.

Le même mardi figure aussi dans plusieurs fichiers : une version futures uniquement et une version combinant options et futures. Dans cette dernière, les positions sur options sont converties en équivalent futures au moyen de facteurs delta fournis par les places de marché. Lorsque deux personnes citent des chiffres différents pour le même marché le même jour, elles consultent souvent des versions différentes.

Pourquoi le rapport COT a-t-il trois jours de retard lorsque vous le lisez ?

Le décalage entre le snapshot et la publication est le point le plus important à comprendre dans les données de positionnement. Les opérations effectuées par les plus gros intervenants le mercredi, le jeudi ou le vendredi matin ne figurent pas dans le fichier publié à 15 h 30. Pour mesurer cette zone aveugle, les graphiques ci-dessous suivent des ETF qui répliquent les marchés couverts par le COT : actions, Treasuries, métaux et énergie. Ces ETF ne sont pas les contrats futures. Ils constituent toutefois une mesure raisonnable de l’amplitude des mouvements de ces marchés sur trois jours.

RequêteDistance parcourue par sept marchés entre la clôture du mardi et vendredi à 15 h 30 ET, août 2024 à juillet 2026
Le SQL exact derrière chaque chiffre
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
Run this yourself

Sur deux années de semaines de publication, la distance médiane entre la clôture du mardi et le print du vendredi à 15 h 30 s’est située entre 2.97% en UNG et 0.66% en TLT, sur 97 semaines. La moitié des semaines est restée sous ces médianes. C’est la queue de distribution qui rend un snapshot du mardi rapidement obsolète : une semaine sur dix a enregistré un mouvement d’au moins 8.68% en UNG, et 68% de ses semaines ont dépassé deux pour cent.

L’évolution d’un seul marché, semaine après semaine, montre à quel point ce décalage peut varier.

RequêteSPY : variation entre la clôture du mardi et vendredi à 15 h 30 ET, semaine par semaine, août 2025 à juillet 2026
Le SQL exact derrière chaque chiffre
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
Run this yourself

Sur les 48 semaines de publication de l’année jusqu’au 31 juillet 2026, la première semaine représentée, se terminant le Aug 8, 2025, affichait un écart de 1.45%. La dernière, se terminant le Jul 31, 2026, affichait 0.86%. Certaines semaines, le fichier est presque à jour. D’autres, il décrit un marché qui a déjà évolué. Rien dans le fichier ne vous indique dans quel cas vous vous trouvez. Les positions short présentent le même problème, mais sur un calendrier plus long : la publication des positions short détaille ce calendrier, et pourquoi les positions short ont deux semaines de retard explique ce décalage.

Que se passe-t-il le vendredi à 15 h 30 ?

Le fichier est publié une demi-heure avant la clôture du marché actions américain, à 16 h, heure de l’Est. Voici comment une séance complète du vendredi répartit les échanges sur la journée, par tranches de quinze minutes.

RequêteOù se situe le volume du vendredi dans la journée : SPY, tranches de 15 minutes, séances complètes du vendredi sur l’année écoulée
Le SQL exact derrière chaque chiffre
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
Run this yourself

Le volume d’une séance américaine dessine une courbe en sourire. Le premier quart d’heure représente 6.98% des actions échangées dans la journée, la tranche de 12 h tombe à 2.72%, et le dernier quart d’heure de cotation continue représente 13.17%. La tranche de 15 h 30, celle pendant laquelle le rapport est publié, représente 4.92%. La publication intervient donc pendant l’accélération de fin de séance, le dernier jour de la semaine de trading. Il s’agit d’un fait de calendrier, pas d’une indication sur les opérations enregistrées dans le fichier.

Legacy, disaggregated ou TFF : quel rapport COT correspond à quoi ?

Quatre rapports portent le nom COT et répartissent différemment le même open interest du mardi.

  • Legacy répartit chaque marché entre positions commerciales, non commerciales et non déclarables. C’est le format historique et celui auquel la plupart des intervenants font référence lorsqu’ils parlent du « rapport COT ».
  • Supplemental couvre 13 matières premières agricoles et distingue les traders indiciels dans une catégorie spécifique.
  • Disaggregated couvre les marchés de matières premières physiques, de l’agriculture et du pétrole au gaz naturel, à l’électricité et aux métaux. Il utilise quatre catégories : producteurs/négociants/transformateurs/utilisateurs, swap dealers, managed money et autres positions déclarables.
  • Traders in Financial Futures, ou rapport TFF, couvre les contrats financiers, notamment les devises, les titres du Trésor, les indices actions et la volatilité. Ses catégories sont les dealers/intermédiaires du côté vendeur, puis les asset managers/institutionnels, les leveraged funds et les autres positions déclarables du côté acheteur.

Lorsqu’un titre indique que les hedge funds détiennent leur plus grosse position short sur le pétrole brut depuis plusieurs années, la série utilisée est généralement celle du managed money dans le rapport disaggregated. La même phrase concernant le S&P 500 renvoie aux leveraged funds dans le rapport TFF. Ces catégories ne sont pas interchangeables.

Qui est réellement pris en compte dans le rapport COT ?

Les gros intervenants, et personne d’autre. Les membres compensateurs, les futures commission merchants et les courtiers étrangers transmettent chaque jour des déclarations pour tout trader dont la position atteint ou dépasse le seuil déclaratif fixé par la réglementation de la CFTC. Un marché n’apparaît dans le COT que lorsque 20 traders ou plus détiennent des positions à ces niveaux. Les positions déclarables couvrent généralement 70 à 90 % de l’open interest d’un marché. Le solde figure sur une seule ligne non déclarable, sans catégorie ni nombre de traders associé.

Les catégories correspondent à des activités déclarées, pas à des stratégies. Une entreprise classée comme commerciale, ou producteur/négociant/transformateur/utilisateur, est une société dont l’activité est couverte par la position futures, conformément à sa déclaration CFTC Form 40. Le managed money correspond à du capital spéculatif mutualisé : conseillers, gestionnaires de pools et fonds opérant pour le compte de leurs clients. Un silo à grains qui couvre son stock et un fonds qui se positionne sur une variation de prix peuvent détenir des contrats identiques dans des colonnes opposées. Le rapport indique qui détient une position. Il n’indique jamais pourquoi.

Deux erreurs fréquentes d’interprétation du rapport COT

Un record net long n’est pas un outil de timing. Une position nette est un chiffre construit à partir de deux autres : les positions longues moins les positions short, exprimées en contrats, au sein d’une même catégorie. Un record indique que l’exposition de cette catégorie se situait à un niveau extrême un mardi donné. Il ne fournit aucune information sur le moment où cette exposition sera débouclée, ni même sur la possibilité qu’elle le soit. Les indicateurs de positionnement des intervenants ont la même limite sur les différentes classes d’actifs : le ratio put/call et les données de positions short de la FINRA décrivent tous deux une position déjà prise.

Les nombres bruts de contrats ne permettent pas de comparer les produits entre eux. Un tableau COT compte des contrats, et un contrat représente une quantité déterminée d’un actif. Un contrat or du COMEX porte sur 100 onces troy. Un contrat pétrole brut du NYMEX porte sur 1 000 barils. Classer les marchés selon le nombre de contrats revient à les classer selon des unités définies par les places de marché il y a plusieurs décennies. Le même raisonnement s’applique aux actions, dont l’unité est le titre.

RequêteUnités versus dollars : sept fonds répliquant les marchés couverts par le COT, juillet 2026
Le SQL exact derrière chaque chiffre
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
Run this yourself

Une unité de SPY s’est échangée à un prix moyen de $744.99 en juillet 2026, contre $10.52 pour une unité de UNG. Mille unités de chacun de ces produits ne représentent donc pas le même montant. Sur les sept fonds, SPY a représenté 31.75% des unités échangées et 50.07% des montants en dollars, tandis que UNG a représenté 5.41% des unités et 0.12% des montants en dollars. La part des unités correspond à la part des montants uniquement lorsque chaque unité coûte le même prix. Comparez le positionnement au sein d’un même marché dans le temps, ou convertissez les contrats en valeur notionnelle avant d’établir un classement.

FAQ sur le rapport COT

À quelle heure le rapport COT est-il publié ?

Le vendredi à 15 h 30, heure de l’Est, sur le site de la CFTC. Les positions sont mesurées à la clôture de la séance du mardi précédent. Le fichier a donc trois jours de retard lors de sa publication. Un jour férié fédéral pendant la semaine de reporting retarde la publication d’un ou deux jours.

Le rapport COT est-il gratuit ?

Oui. La CFTC le publie gratuitement sous forme de tableaux consultables et de fichiers téléchargeables. Les produits commerciaux de suivi du positionnement reprennent les mêmes données publiques en y ajoutant des graphiques et un historique.

Quelle est la différence entre les rapports COT legacy et disaggregated ?

Le rapport legacy répartit un marché entre positions commerciales, non commerciales et non déclarables. Le rapport disaggregated répartit les marchés de matières premières physiques entre producteurs/négociants/transformateurs/utilisateurs, swap dealers, managed money et autres positions déclarables. Les marchés financiers font l’objet d’un traitement parallèle dans le rapport Traders in Financial Futures.

Le rapport COT montre-t-il la position de chaque trader ?

Non. Il recense les traders dont les positions atteignent ou dépassent les seuils déclaratifs de la CFTC. Cela couvre généralement 70 à 90 % de l’open interest d’un marché. Un marché n’est publié que lorsque 20 traders ou plus atteignent ces niveaux. Tous les autres sont regroupés sur une seule ligne anonyme de positions non déclarables.

Le rapport COT peut-il prévoir les mouvements de prix ?

Il s’agit d’un recensement des positions avec trois jours de retard, pas d’une prévision. Le rapport indique où se situaient les gros intervenants un mardi donné. Un niveau extrême ne fournit aucune date à laquelle cette position prendra fin.


Tous les chiffres de cette page proviennent d’une requête stockée sur un historique des prix et des volumes à la minute. Le SQL est accessible sous chaque graphique. Le fichier COT reste disponible comme auparavant, gratuitement, chaque vendredi à 15 h 30. Exécutez les mêmes graphiques sur les marchés que vous suivez dans le terminal Strasmore.

#cot report#cftc#positioning#futures#release schedule