Methodology
Every number on this site, defined. If a formula isn't on this page, we don't publish it.
Sources
All position data comes from the U.S. Commodity Futures Trading Commission's Commitments of Traders publications: the weekly flat files at cftc.gov and the CFTC's public Socrata datasets (legacy, disaggregated, and Traders in Financial Futures; futures-only and combined variants). On every ingest the two sources are cross-checked — row counts, report dates, open interest, and net positions must agree before anything publishes. History coverage: legacy from 1986, disaggregated and TFF from 2006. CFTC data is a U.S. government work in the public domain.
Definitions
- Net position
net = long − shortper trader category. Spread positions (reported separately by the CFTC) cancel long-against-short by construction and are excluded from net. Since every long is someone's short, category nets in a market sum to approximately zero (the residual is CFTC rounding, at most a couple of contracts). We verify that identity on ≥99% of rows on every ingest and abort the publish if it fails — it is the sharpest available detector of a mis-parsed file.- Net % of open interest
100 × net / open_interest, the same nets normalized by market size, used for cross-market comparison and the bias-corrected COT index.- COT index (26w / 52w / 3y)
100 × (net − min) / (max − min)over a trailing window of 26, 52, or 156 weekly reports including the current one; 50 when max = min; not reported when fewer than 60% of the window's reports exist. Also computed on net-%-of-OI. Full discussion: COT index explained.- Percentile (5y / all history)
- Midrank percentile of the current net among the trailing 260 reports (5y) or the market's entire history: percent of values strictly below, plus half of ties. Needs at least 8 observations.
- Z-score (3y)
(net − mean) / σover the trailing 156 reports, population standard deviation; not reported when σ = 0 or coverage is under 60%.- Records
- Highest and lowest net in the market's published history, and the number of report weeks since each was set. "Weeks" counts reports, not calendar weeks — the CFTC skips no markets, but holiday cycles shift dates.
Rounding and display
Contract counts are shown as reported, unrounded. COT index and percentiles are shown to one decimal; z-scores to two. Missing data renders as an em dash, never as zero — 0 always means a measured zero.
Market coverage and tiers
The CFTC reports several hundred markets, most of them regional energy basis contracts with no public interest. FuturesBench publishes a full page for markets people actually follow and analyze (major commodities, currencies, rates, equity indexes — plus any market clearing an activity bar of ≥10,000 contracts of open interest and ≥5 years of history). Every other market still appears in its group page and in the bulk data downloads; no market is silently dropped. A market page whose contract stops reporting stays up, marked with its final report date.
Charts
Charts are server-rendered from exactly the series shown in the adjacent table — the page contains no client-side data fetching, so what a crawler, a screen reader, and a browser see are the same numbers. Blue fill is net-long territory, red fill is net-short; the palette avoids the red/green pair for color-vision accessibility.
Corrections
The CFTC occasionally re-releases a report with corrections. We detect re-releases by content hash, re-ingest, and the affected pages update with the corrected values. The report date shown is always the CFTC's data date, never our processing date.
Contact
Found a number that doesn't match the CFTC's files? That's a bug — the whole point of this site is that it never happens. Email data@futuresbench.com with the market and report date and we'll trace it against the source files.