Technical writing
CFTC Commitments of Traders: The Weekly Federal Report Behind Futures Market Positioning
Every Friday at 3:30 PM Eastern time the Commodity Futures Trading Commission releases a document that forces the most-active hedge funds, grain merchants, oil majors, and central-bank currency desks in the world to show their hand. The Commitments of Traders report has run, mostly uninterrupted, since 1962—making it one of the oldest continuous windows into institutional market positioning held anywhere in the federal government.
What the COT Report Is
The Commodity Futures Trading Commission (CFTC) is the independent federal agency that regulates U.S. derivatives markets. Under the Commodity Exchange Act, every large trader in a regulated futures market is required to report their positions to the CFTC. The Commitments of Traders (COT) report aggregates those disclosures and publishes a weekly snapshot of who holds what, sorted by trader category.
The as-of date is always the Tuesday close of the reporting week. The CFTC then spends Wednesday and Thursday collecting, auditing, and tabulating the submissions before publishing on Friday afternoon. That three-day lag is a material limitation: by the time a trader reads Friday's release, the positions it describes are already 72 hours stale. Markets can move sharply in that window, and a crowded position visible in the data may already be unwinding.
The report covers every regulated commodity and financial futures market in the United States: energy (crude oil, natural gas, heating oil, RBOB gasoline), metals (gold, silver, copper, platinum), agriculture (corn, wheat, soybeans, sugar, coffee, cotton, live cattle, lean hogs), equity index futures (S&P 500 E-mini, Nasdaq E-mini), interest rates (2-year Treasury note, 10-year Treasury note, 30-year Treasury bond), foreign exchange (EUR/USD, JPY/USD, GBP/USD), and newer additions such as VIX futures and Bitcoin futures on the CME.
The Four Report Formats
Legacy (Traditional) COT
The oldest and most widely cited format. Every futures participant is classified into one of three buckets:
- Commercial: Entities that use futures to hedge a commercial exposure. A grain elevator that sells corn futures to lock in harvest prices, an airline that buys crude oil futures to cap its jet fuel costs, or a gold mining company that sells forward production all appear here. The CFTC assigns the Commercial label based on the trader's declared purpose, not the counterparty's identity.
- Non-Commercial: Large speculators and investment funds whose primary activity is taking directional or relative-value bets. Commodity Trading Advisors (CTAs), macro hedge funds, and proprietary trading firms typically fall here if they exceed the CFTC's reporting thresholds (which vary by market).
- Non-Reportable: The residual—all traders whose positions fall below reporting thresholds. Retail futures accounts and small commercial operators aggregate here. The CFTC derives this figure arithmetically: open interest minus the sum of all reportable positions.
Critics long noted that the Legacy format hid an important category: swap dealers, who were classified as Commercial despite acting more like financial intermediaries than physical hedgers.
Disaggregated COT
Introduced in September 2009 for physical commodity markets (energy, metals, agriculture), the Disaggregated format breaks the old Commercial and Non-Commercial buckets into four more precise categories:
- Producer/Merchant/Processor/User: True physical-market participants—oil companies, refiners, grain elevators, copper smelters, cattle feedlots. These entities have a direct underlying commodity exposure they are hedging.
- Swap Dealers: Financial firms whose futures positions arise from their OTC swap-dealer business. A bank that sold a commodity swap to a corporate client might hedge that exposure in the listed futures market. Swap dealers typically appear net short in energy because they are buying swaps from producers and laying off the risk.
- Managed Money: Commodity pool operators, hedge funds, and CTAs trading primarily for speculative profit. This is the category most closely watched as a sentiment indicator.
- Other Reportables: Large traders that meet reporting thresholds but don't fit the other three categories—endowments, family offices, and large commercial participants with a mix of activities.
Traders in Financial Futures (TFF)
Financial futures markets—equity index, Treasury, currency, and VIX contracts—use the TFF format, which applies categories more relevant to financial market participants:
- Dealer/Intermediary: Sell-side institutions, typically broker-dealers and prime brokers, whose futures positions arise from client-facilitation activity.
- Asset Manager/Institutional: Pension funds, insurance companies, mutual funds, and sovereign wealth funds. These are often long equity index futures as a cash-equitisation tool and long Treasury futures as duration management.
- Leveraged Funds: Hedge funds, CTAs, and other highly leveraged speculative accounts. In Treasury futures, the Leveraged Fund short position has periodically attracted regulatory attention as a potential source of basis-trade-related stress.
- Other Reportables: The residual large-trader bucket for entities that do not fit the first three categories.
Supplemental COT
A smaller, less frequently cited format that covers a subset of commodity markets (primarily agricultural) using combined futures-plus-options data. It adds an Index Trader category to capture commodity index funds—passive vehicles like the Bloomberg Commodity Index or S&P GSCI that roll futures positions mechanically and carry substantial long exposure across many markets simultaneously.
Key Data Fields
Each row in the COT CSV corresponds to a single market-category pair on a given as-of date. The most analytically important columns are:
- Open Interest (All): Total contracts outstanding across all traders. A rising open interest alongside a price move confirms new conviction; falling open interest suggests position liquidation rather than fresh directional bets.
- Long / Short / Spreading positions by category: Reported in contracts. For options-included reports, positions are expressed as delta-adjusted equivalents—an at-the-money call on 100 barrels of crude contributes roughly 50 barrels to the long count. The spreading figure captures calendar spread positions that are simultaneously long one contract month and short another.
- Number of traders: The count of distinct legal entities in each category. A 100,000-contract net long position held by three funds is far more concentrated—and potentially more fragile—than the same position spread across forty funds.
- Changes from prior week: Delta columns (e.g.
change_in_noncomm_long) let analysts track flow rather than just level. A market where Managed Money has been adding shorts for six consecutive weeks tells a different story from one where a large short appeared in a single week. - Percent of open interest: Each category's gross long and short expressed as a share of total open interest, useful for normalising across markets of different absolute sizes.
COT as a Sentiment and Contrarian Indicator
Market analysts have used COT data as a positioning sentiment tool since the 1980s. The core logic is simple: futures markets are zero-sum. Every long contract is matched by a short contract, so when one category accumulates an unusually large net position, some other category must hold the opposite. Two competing frameworks govern how analysts interpret that imbalance.
The Commercial (“Smart Money”) Theory
Commercial hedgers understand their physical markets better than any financial speculator. A grain elevator net short 200,000 corn contracts has made an operational judgment that corn prices are high enough to lock in margin; a copper producer aggressively selling futures forward has concluded that spot prices are attractive relative to its production cost curve. When commercials are at extreme net short levels, it suggests the underlying commodity is at or near a price that producers consider attractive to hedge—which over time tends to be near a cyclical high. Conversely, a historically small commercial short (or a commercial net long) implies producers see current prices as low, consistent with a cyclical bottom.
Steve Briese's The Commitments of Traders Bible (2008) is the most systematic treatment of this framework, documenting backtested signals across dozens of markets over multiple decades. His core metric, the “COT Index,” ranks the current net position of commercials within a trailing look-back window—a reading near 100 is the most bullish commercial positioning seen in the period; near 0 is the most bearish.
The Large Speculator Theory
A complementary view focuses on Managed Money (or the old Non-Commercial bucket) as a contrary indicator at extremes. When hedge funds and CTAs accumulate an unusually large net long position, they have already deployed their conviction and may have limited capacity to add more. The next marginal buyer becomes harder to find, and the trade becomes “crowded.” Any negative surprise can trigger stop-loss selling that cascades into a sharp price reversal—not because the fundamental thesis was wrong, but because too many leveraged accounts were positioned the same way.
The reverse—an extreme Managed Money net short—creates short-squeeze risk. If prices begin to rally, forced covering by leveraged shorts can amplify the move well beyond what fundamentals would justify.
Limitations
The COT report captures only exchange-traded futures on U.S.-regulated markets. A major oil producer that hedges exclusively in the London ICE Brent market, or through OTC swaps with a bank counterparty, will not appear in the CME WTI data. The OTC market for interest-rate and currency derivatives dwarfs the listed futures market by notional value, so the TFF report captures only a fraction of total institutional positioning in those asset classes.
The three-day publication lag also matters. In fast-moving markets—a Federal Reserve decision week, a surprise OPEC+ production cut announcement—Tuesday's snapshot may already be obsolete when Friday's report appears. Analysts who rely on COT data for short-term trading signals must account for what has likely happened in the intervening days.
Finally, category boundaries are set by the CFTC's classification rules and a trader's own reported purpose. A large commodity trading house with both physical and financial operations may appear in the Commercial bucket for some markets and Non-Commercial for others, or may shift buckets as its activities evolve. The data is authoritative but not perfectly precise.
Accessing the Data
All COT files are available at cftc.gov/MarketReports/CommitmentsofTraders. The CFTC publishes both long-format and compressed files, in fixed-width text and CSV formats, for each of the four report types. Annual bulk download ZIP files cover every week back to 1986 for the Legacy and Disaggregated reports—the historical depth is unusual among federal financial datasets and makes multi-decade backtests straightforward.
File naming conventions follow the pattern: Legacy combined futures+options is in files named fut_fin_xls_YYYY.zip; disaggregated combined is incom_disagg_xls_YYYY.zip; TFF combined is infin_disagg_xls_YYYY.zip. Each ZIP contains a single CSV with one row per market-as-of-date-category combination. Markets appear as full descriptive strings (e.g. CRUDE OIL, LIGHT SWEET - NEW YORK MERCANTILE EXCHANGE), so string matching is required to isolate a specific contract.
Working With COT Data in Python
The following script downloads the most recent annual Legacy COT file from the CFTC, filters to WTI crude oil and gold, and computes the net non-commercial position as a percentage of open interest together with a 52-week rolling z-score—a simple normalisation that identifies when speculative positioning is historically stretched.
import pandas as pd
import requests
import io
import zipfile
# Download the most recent COT Legacy report (combined futures + options CSV)
COT_URL = "https://www.cftc.gov/files/dea/history/fut_fin_xls_2024.zip"
resp = requests.get(COT_URL, timeout=60)
resp.raise_for_status()
with zipfile.ZipFile(io.BytesIO(resp.content)) as zf:
csv_name = [n for n in zf.namelist() if n.lower().endswith(".csv")][0]
df = pd.read_csv(zf.open(csv_name), low_memory=False)
# Normalise column names
df.columns = [c.strip() for c in df.columns]
# Filter to WTI Crude Oil and Gold futures
targets = {
"WTI_CRUDE": "CRUDE OIL, LIGHT SWEET - NEW YORK MERCANTILE EXCHANGE",
"GOLD": "GOLD - COMMODITY EXCHANGE INC.",
}
rows = []
for key, mkt_name in targets.items():
mask = df["Market_and_Exchange_Names"].str.upper().str.contains(
mkt_name.split(" - ")[0], na=False
)
subset = df[mask].copy()
subset["market_key"] = key
rows.append(subset)
combined = pd.concat(rows, ignore_index=True)
# Coerce numeric columns
for col in [
"Open_Interest_All",
"NonComm_Positions_Long_All",
"NonComm_Positions_Short_All",
]:
combined[col] = pd.to_numeric(combined[col], errors="coerce")
# Parse date and sort ascending
combined["As_of_Date_in_Form_YYMMDD"] = pd.to_datetime(
combined["As_of_Date_in_Form_YYMMDD"], format="%y%m%d", errors="coerce"
)
combined.sort_values(["market_key", "As_of_Date_in_Form_YYMMDD"], inplace=True)
# Net non-commercial position and as a % of open interest
combined["net_noncomm"] = (
combined["NonComm_Positions_Long_All"] - combined["NonComm_Positions_Short_All"]
)
combined["net_noncomm_pct_oi"] = (
combined["net_noncomm"] / combined["Open_Interest_All"] * 100
)
# 52-week (52 weekly observations) rolling z-score of net position %
combined["roll_mean_52w"] = (
combined.groupby("market_key")["net_noncomm_pct_oi"]
.transform(lambda s: s.rolling(52, min_periods=26).mean())
)
combined["roll_std_52w"] = (
combined.groupby("market_key")["net_noncomm_pct_oi"]
.transform(lambda s: s.rolling(52, min_periods=26).std())
)
combined["net_noncomm_zscore"] = (
(combined["net_noncomm_pct_oi"] - combined["roll_mean_52w"])
/ combined["roll_std_52w"]
)
# Print the most recent week for each market
latest = combined.groupby("market_key").last().reset_index()
for _, row in latest.iterrows():
print(row["market_key"])
print(" As-of date : " + str(row["As_of_Date_in_Form_YYMMDD"].date()))
print(" Open interest: " + str(int(row["Open_Interest_All"])) + " contracts")
print(" Net non-comm : " + str(int(row["net_noncomm"])) + " contracts")
print(" Net non-comm % OI: " + str(round(row["net_noncomm_pct_oi"], 2)) + " %")
print(" 52-wk z-score: " + str(round(row["net_noncomm_zscore"], 2)))
print()
The 52-week z-score approach is more robust than a raw percentile rank because it treats each market on its own scale: a z-score above +2 suggests speculative longs are at a level rarely seen in the past year, which has historically correlated with elevated mean-reversion risk. A z-score below −2 flags potential short-squeeze conditions. Neither is a standalone trading signal; both are most useful when confirmed by price structure and fundamental context.
For production use, the annual ZIP files should be replaced with a rolling multi-year download that concatenates several annual files, since any given year's file only provides 52 weekly observations—exactly the look-back window used here. Pulling three years (156 observations) gives the z-score calculation substantially more statistical stability.
Market Coverage in Practice
The breadth of COT coverage means it can be applied across nearly every major asset class traded in the United States. In energy, WTI and Brent crude, natural gas, heating oil, and RBOB gasoline all have COT files. In metals, gold, silver, copper, and platinum futures on the COMEX/NYMEX are covered. Agricultural markets span corn, wheat (multiple exchanges), soybeans and soy products, sugar, coffee, cocoa, cotton, live cattle, feeder cattle, and lean hogs.
Financial futures coverage is similarly comprehensive: S&P 500 and Nasdaq E-mini contracts, the full Treasury curve from 2-year notes through 30-year bonds, major currency pairs (EUR, JPY, GBP, AUD, CAD, CHF, MXN), VIX futures, and CME Bitcoin futures. Each market has its own distinct participant base, and the COT categories reveal genuinely different dynamics: in Treasury futures, the Asset Manager long and Leveraged Fund short often reflect the well-documented basis trade; in currency futures, commercial positions frequently reflect corporate FX hedging rather than speculative directional bets.
Relationship to Other Federal Market Data
The COT report sits within a broader ecosystem of federal financial data. The EIA publishes weekly petroleum and natural gas supply and demand data, which provides the fundamental context for interpreting energy-market COT positioning—a large speculative crude long against a backdrop of building EIA inventory is more fragile than the same position during a supply draw. The FERC publishes energy enforcement actions that can reveal when large energy-market participants face regulatory scrutiny, occasionally affecting their futures hedging activity. On the equity side, the SEC's Form 4 insider transaction filings reveal how company insiders are positioning around specific names, a complement to the index-level view that equity futures COT data provides.
Together, these datasets form a layered picture of institutional market behaviour—from the individual-stock level captured in Form 4 filings, through the sector and commodity-level view in COT, to the macro supply-demand balances tracked by EIA and FERC.
Summary
The Commitments of Traders report is a rare case of a federal regulatory disclosure that generates genuine informational value for anyone willing to read it carefully. Its four formats—Legacy, Disaggregated, TFF, and Supplemental—address different market structures with different category definitions suited to each. The data is free, updated weekly, machine-readable, and available back to 1986. Its limitations—the three-day lag, the exchange-only scope, the category classification ambiguities—are real but well-understood, and do not prevent the report from serving as one of the most substantive public datasets on institutional market positioning that the federal government produces.
Related: EIA Electricity Data—the Energy Information Administration's weekly and monthly energy supply datasets that provide fundamental context for energy futures positioning visible in COT data.
Related: FERC Energy Enforcement—Federal Energy Regulatory Commission enforcement actions in wholesale energy markets, a complement to CFTC oversight of energy derivatives.
Related: SEC Form 4 Insider Trading—the individual-equity counterpart to the COT report's institutional positioning data, disclosing how corporate insiders buy and sell their own company's stock.