The CFTC Commitments of Traders (COT) report, explained

The Commitments of Traders (COT) report is one of the few genuine positioning x-rays in public markets: every week the U.S. Commodity Futures Trading Commission publishes who is long and who is short across the futures complex, broken out by type of trader. It is free. It is also scattered across decades of files whose format changed more than once, which is why most people who "use the COT" are actually using a truncated, mislabelled slice of it.

What the report is

Every Tuesday the CFTC snapshots open positions in reportable futures (and options) markets. The report is released the following Friday afternoon. For each market it tells you the number of long and short contracts held by each category of trader, plus open interest and the number of traders. The core idea is simple: price tells you *where* the market is; COT tells you *who is positioned* to get there.

The three flavours — and why the category labels matter

There is no single COT report. There are three overlapping ones, and picking the wrong labels quietly corrupts your analysis:

  • Legacy. The original split: commercial (hedgers with a business in the physical) versus non-commercial (speculators) versus non-reportable (small traders). Long history, coarse buckets.
  • Disaggregated. For physical commodities, it breaks the coarse buckets into producer/merchant/processor/user, swap dealers, managed money (CTAs, hedge funds) and other reportables. This is what you want for energy, metals and ags.
  • Traders in Financial Futures (TFF). For financial contracts — rates, FX, equity index — it splits into dealer/intermediary, asset manager/institutional, leveraged funds and other. This is what you want for Treasuries, the S&P and the dollar.

Using legacy "non-commercial net" for a rates market when TFF gives you the clean leveraged-fund vs asset-manager split is the single most common COT mistake.

What people actually do with it

  • Crowding and extremes. When managed money is more net-long than it has been in three years, the marginal buyer is running out. Positioning extremes are a mean-reversion tell, not a timing signal.
  • Commercials as the contrarian anchor. Hedgers are structurally on the other side of the speculative crowd; a record commercial short is the mirror of a record spec long.
  • Trend confirmation. A rising price with rising managed-money longs is a different animal from a rising price on short-covering.

The discipline that separates signal from noise: never read raw contract counts. Normalise. Net position as a share of open interest, or a multi-year z-score of that share, is comparable across time and across markets. Raw contracts are not — open interest in a market can triple over a decade.

Why assembling the history is the hard part

The analysis is easy once the data is clean. Getting it clean is not:

  • History lives in per-year files, and the column layout is not identical across the whole span.
  • The same economic market appears under different contract codes across exchanges and eras; you need a stable mapping to build a continuous series.
  • Futures-only and futures-and-options-combined are separate reports that are easy to accidentally mix.
  • Report timing (Tuesday data, Friday print) trips up anyone who naively stamps rows with the release date.

Our CFTC COT Archive is the whole history stitched into one tidy Parquet: consistent columns, stable market identifiers, the trader-category breakdowns preserved, timestamps anchored to the Tuesday as-of date. You compute z-scores; you do not reverse-engineer a 2006 file layout. It pairs naturally with the US Treasury Yield Curve when you want positioning and price in the same frame.

Skip the ETL

Stop building parsers. Start at the analysis.

We've already cleaned, documented and QC'd sources like the one in this post into query-ready Parquet - with a free sample on every dataset. Buy a file from €9, or go All-Access for the lot.