Skip to content
FinObservatory

Derivatives positioning / Methodology

Derivatives Positioning (CFTC COT): methodology

This page documents /positioning: where the data comes from, the exact files and market codes, what each exhibit computes, the trader-class definitions in the CFTC's own words, the build-time verification, and what this data can and cannot say.

What this layer is, and is not

/positioning is the who-holds-it side of US derivatives markets: each Tuesday's futures open interest broken down by class of large trader, from the CFTC's Commitments of Traders (COT) reports, for a curated financial core of 15 markets. It is a positioning record, not a flow record and not a forecast. The CFTC describes the reports as providing "a breakdown of each Tuesday's open interest for futures and options on futures markets in which 20 or more traders hold positions equal to or above the reporting levels established by the CFTC" and publishes them "generally ... each Friday at 3:30 pm Eastern Time (US), using the data from the immediately preceding Tuesday of that week" (CFTC, Commitments of Traders). Three consequences:

  • Tuesdays only. Anything built or unwound intraweek and closed by the next Tuesday never appears.
  • Three-day lag. The newest reading is always the Tuesday before the most recent Friday 3:30pm ET release; holidays push the schedule.
  • Positions, not flows. A week-over-week change in net position is the net of all trading in between, not gross activity.

Source files

Commodity Futures Trading Commission, historical compressed COT files (https://www.cftc.gov/MarketReports/CommitmentsofTraders/HistoricalCompressed/index.htm), all URLs verified live 2026-07-18, all fetched by scripts/build_cftc_cot.py:

  • Traders in Financial Futures (TFF), futures only: fin_fut_txt_2006_2016.zip (one file, 2006-06-13 to 2016-12-27) plus fut_fin_txt_<YYYY>.zip yearly from 2010. The build reads the combined file for pre-2017 dates and the yearly files from 2017; the overlapping 2010-2016 yearly files are then re-read and asserted byte-equivalent in value to the combined file on every curated row (a free cross-publication check, passed on the 2026-07-18 pull).
  • Legacy report, futures only: deacot<YYYY>.zip yearly from 1986.

Only current-year files are re-downloaded on refresh; past years are immutable on the CFTC site and cached under data/raw/cftc_cot/. The futures-and-options-combined variants of both reports exist but are not used: the futures-only series is the longer, cleaner convention and avoids delta-adjustment of options.

The 15 markets

Codes are the CFTC contract market codes exactly as they appear in the files. Names in the files change over time (e.g. "CRUDE OIL, LIGHT SWEET" became "WTI-PHYSICAL"); the code is the stable key, and every verbatim name seen is preserved in cftc_cot_meta.source_names.

MarketCodeReportExchangeHistory from
S&P 500 (consolidated)13874+TFFCME2010-06-15
Nasdaq-100 (consolidated)20974+TFFCME2010-06-15
2-year Treasury note042601TFFCBOT2006-06-13
10-year Treasury note043602TFFCBOT2006-06-13
Treasury bond (long bond)020601TFFCBOT2006-06-13
3-month SOFR134741TFFCME2018-07-24
Euro FX099741TFFCME2006-06-13
Japanese yen097741TFFCME2006-06-13
British pound096742TFFCME2006-06-13
Swiss franc092741TFFCME2006-06-13
Canadian dollar090741TFFCME2006-06-13
Australian dollar232741TFFCME2006-06-13
Mexican peso095741TFFCME2006-06-13
Gold088691LegacyCOMEX1986-01-15
WTI crude oil067651LegacyNYMEX1986-01-15

Selection notes:

  • The two equity indexes use the CFTC's consolidated series (code suffix +), which combine full-size, E-mini and micro contracts converted to a common contract size. Consolidated reporting starts 2010-06-15; the E-mini alone reaches back to 2006 but misses the micro complex that now carries a large share of open interest, so the consolidated series is used.
  • 3-month SOFR is the successor of the 3-month eurodollar contract, which the files carry as a separate market (132741, ended 2023) and which is deliberately not spliced onto SOFR: they are different contracts and their positioning levels are not comparable.
  • The Treasury bond contract is the classic CBOT "long bond" (deliverable window at the long end; since 2011 the 25-years-plus segment is carried by the separate Ultra bond contract, not included here).
  • Gold and WTI are physical commodities outside the TFF universe. They are carried from the legacy report, whose commercial/non-commercial classes run from 1986. The disaggregated report (2006+, four classes for physical markets) is a possible future upgrade; the legacy series was chosen for the four extra decades of history.

Trader classes, in the CFTC's words

The TFF report (Explanatory Notes, PDF) divides reportable traders in financial futures into four categories:

  • Dealer/Intermediary: "what are typically described as the 'sell side' of the market ... These include large banks (U.S. and non-U.S.) and dealers in securities, swaps and other derivatives."
  • Asset Manager/Institutional: "institutional investors, including pension funds, endowments, insurance companies, mutual funds and those portfolio/investment managers whose clients are predominantly institutional."
  • Leveraged Funds: "typically hedge funds and various types of money managers, including registered commodity trading advisors (CTAs); registered commodity pool operators (CPOs) or unregistered funds identified by CFTC."
  • Other Reportables: "Reportable traders that are not placed into one of the first three categories ... includes corporate treasuries, central banks, smaller banks, mortgage originators, credit unions."

The legacy report (Explanatory Notes) has two reportable classes: a trader is commercial when it reports on CFTC Form 40 that it is "engaged in business activities hedged by the use of the futures or option markets"; everyone else reportable is non-commercial. Classification caveats that apply to everything on the page:

  • Classifications are self-reported (Form 40) and adjusted by Commission staff judgment; they are per-trader, not per-position, so a leveraged fund's hedges and its speculative positions land in the same bucket.
  • TFF history before the report's 2010 launch was backfilled: "the CFTC does not maintain a history of large-trader classifications, so, recent classifications had to be used to classify the historical positions of each reportable trader"; this "'backcasting' approach diminishes the data's accuracy as it goes further back in time" (TFF Explanatory Notes).
  • Small positions below the reporting thresholds appear only in the non-reportable remainder.

Computed columns and exhibits

The build produces one row per market, Tuesday, and trader class (cftc_cot parquet): long, short, and spreading contracts as published ("All" positions, futures only), plus:

  • net = long minus short. "Spreading" (equal offsetting long and short held by one trader, as computed by the CFTC) is excluded from net by construction: it adds to both sides equally.
  • net_share = net / that Tuesday's total open interest of the market. This is the normalization used everywhere on the page; it makes 1986 gold and 2026 gold comparable and different-size markets comparable.
  • The legacy schema publishes no commercial spreading column, so spread_pos is null for the commercial class.

Exhibits on /positioning:

  • Net positioning charts: weekly net_share per class, per market. Values are rounded to 0.01 percentage points for the chart payload (sub-pixel at chart scale); tables and percentiles use full precision. Chart transforms (YoY %, index, log) are deliberately absent: net share is a signed ratio and those transforms are meaningless on it (the same rejection recorded for the FCI in the transforms wave).
  • Percentiles: percent rank of the latest net_share within that market-class's own weekly history, computed twice: over the full history and over the trailing 5 years ending at the latest report (inclusive of it). Percent rank = share of weeks with net_share at or below the latest.
  • Extremes table: the readings whose trailing-5-year percent rank is at or beyond 5/95. "Crowded long" and "crowded short" describe the rank, not a view.

Verification at build time

scripts/build_cftc_cot.py fails loudly (assert) on any of:

  • Additivity, every row: the four TFF class longs plus spreading sum to total reportable longs, total reportables plus non-reportables equal open interest, and likewise on the short side; same identities for the legacy classes. Exact on all rows except the two consolidated equity markets, where the CFTC's per-cell rounding of contract-size conversion leaves deviations of at most a few contracts (tolerance 5; maximum observed 3).
  • Published-percentage cross-check: the recomputed net share must agree with the files' own % of open interest columns (published at 0.1 granularity) within 0.2 percentage points, on every market-class-week (58,042 cells on the 2026-07-18 pull, zero blank).
  • Cross-publication check: the 2010-2016 yearly TFF files must carry exactly the values of the 2006-2016 combined file on every curated row.
  • Anchors from the verified 2026-07-18 pull, e.g. gold's first legacy row (1986-01-15: non-commercial long 18,589, short 7,706, open interest 148,186) and the 10-year note's leveraged-funds record net short (2025-08-26: -2,534,616 contracts). An anchor drift means the CFTC restated history and stops the build for review.
  • Freshness and shape: the latest report date is a Tuesday no more than 21 days old; no duplicate (market, date, class) keys; open interest positive; |net| never exceeds open interest.

Refresh cadence

COT publishes weekly (Friday 3:30pm ET for Tuesday data). refresh.sh has no weekly tier, so the source is registered in the daily tier, which is the documented convention when no matching tier exists: a re-run between releases only re-downloads the current-year files and rebuilds to identical output.

License and redistribution posture

The COT reports are US federal government work, public domain (17 U.S.C. 105). FinObservatory displays the data with attribution to the CFTC and, per its standing no-redistribution ruling, serves no bulk download files and no row-serving endpoints; the CFTC's own historical compressed files (linked above) are the canonical way to obtain the data.