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.
The positioning read (bullish / bearish tilt)
The coloured "positioning read" on the homepage and each market page is interpretation, not data - a plain-English summary of how traders are positioned versus their own history, computed identically for every market. It is not a price forecast, a trading signal, or advice. It rests on the two oldest ideas in COT analysis:
- Commercials (hedgers) as contrarian "smart money." The higher the commercial net position sits inside its own 26-week range (its 26-week COT index), the more bullish the tilt; the lower, the more bearish. This is the same commercial-net, 26-week definition the popular public COT gauges use.
- Large speculators as a crowding gauge. When large-spec net reaches the top of its 3-year range (COT index ≥ 80) the long side is crowded, which is read as a bearish tilt for the setup; at the bottom (≤ 20) the short side is crowded, read as bullish. The crowding term only contributes at these extremes.
The two are combined into a score from −1 (bearish) to +1 (bullish):
score = clamp( (commercial_signal + 0.5 × crowding_signal) ÷ 1.5 ), where
commercial_signal = (commercial_index_26 − 50) ÷ 50. The score maps to
Bullish tilt / Bullish lean / Mixed / Bearish lean / Bearish tilt, and its magnitude
(0–100) is shown as the conviction meter. Because the two trader nets mirror each other,
the lenses usually agree. Every input is one of the COT-index numbers already published
on the page, so the read is fully reproducible - and, like everything here, it is a
description of the positioning, never a claim about where the price will go. Traders
weigh COT positioning very differently; see
the strategies survey for the range of views
and the disclaimer.
Reporting gaps
A few contracts have multi-year holes in their history. This is faithful to the CFTC's files, not a processing error: each Commitments of Traders contract code is reported only while that specific contract is listed and above the reporting thresholds. When a contract migrates exchanges, is delisted and relaunched, or drops below the threshold for a spell, its code simply produces no reports during that time. The clearest example is the E-mini Russell 2000: the index-futures licence moved from CME to ICE around September 2008 and back to CME in July 2017, so the CME contract code we track has no data for those nine years (the ICE-listed contract of that period is a separate code we don't stitch on). The freshly relaunched 2017 contract shows just ~13,000 open interest versus ~500,000 in 2008 - exactly what a restart looks like. Others with gaps include Euro FX (pre-1999 predecessor data), Brazilian Real, South African Rand, New Zealand Dollar, Palladium and VIX.
Our charts break the line across any gap wider than about three months rather than drawing a straight line through it, and affected pages carry a note with the gap dates. One caveat: the rolling COT index and z-score use a trailing window of reports, so for a market that resumed within the last three years the window can still reach back across the gap; it self-corrects once enough post-gap reports accumulate.
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.