Methodology

How Meaterm computes its figures

How the figures on Meaterm’s public pages are computed, written out so you can reproduce them from the source files. It covers futures positioning from the CFTC Commitments of Traders report: the figures on the COT report page and the pages under /cot.

Checked against the code on October 8, 2026.

Futures positioning (COT)

Every positioning figure on those pages comes from the CFTC’s futures-only Commitments of Traders files. Net position is long contracts minus short contracts; week over week is this week’s net minus the previous report’s; the 156-week rank is the share of the last 156 weekly nets that sat below this week’s. A rank of 90 or above is labelled “Crowded long”, 10 or below “Crowded short”: a description of where positioning sits against its own history, not a signal.

Which report, and which traders

The CFTC publishes several Commitments of Traders reports, and they do not use the same trader categories. Meaterm reads two, chosen by asset class, and only their futures-only files: the futures-and-options files add option positions on a delta-adjusted basis, which gives a different number.

Traders in Financial Futures (TFF) covers financial contracts such as stock indices, currencies and bitcoin, and splits reportable traders into Dealer/Intermediary, Asset Manager/Institutional, Leveraged Funds and Other Reportables. Meaterm shows Leveraged Funds, which the CFTC describes as typically hedge funds and various types of money managers.

Disaggregated covers physical commodities and splits traders into Producer/Merchant/Processor/User, Swap Dealers, Managed Money and Other Reportables. Meaterm shows Managed Money, which plays the equivalent role there.

The six markets, and the CFTC row each one is read from
MarketCFTC reportTrader category shownCFTC row (contract code)
S&P 500TFFLeveraged FundsS&P 500 Consolidated (13874+)
Nasdaq-100TFFLeveraged FundsNASDAQ-100 Consolidated (20974+)
Euro FXTFFLeveraged FundsEURO FX (099741)
Bitcoin (CME)TFFLeveraged FundsBITCOIN (133741)
GoldDisaggregatedManaged MoneyGOLD (088691)
WTI crude oilDisaggregatedManaged MoneyWTI-PHYSICAL (067651)

Each market is read from one row of the CFTC file: among the rows whose name contains the market’s search term, the one with the largest open interest, leaving out micro and nano contracts, dividend futures and look-alikes (euro cross rates; bitcoin perpetual-style, bitcoin cash and ether contracts). The choice is made again on every read. The rows above are what it gave for the 15 September 2026 report, checked against the CFTC file on 24 September 2026. For the S&P 500 and the Nasdaq-100 that is the CFTC’s Consolidated row, not the E-mini row, and the two give different numbers.

These are different categories in different reports. A Leveraged Funds net in the S&P 500 and a Managed Money net in gold are not the same measurement, so comparing their sizes across markets says little. Each market is compared only with its own history.

The arithmetic

net position = long contracts − short contracts
week over week = net this week − net in the previous report
156-week rank = weekly nets below this week’s ÷ weekly nets in the window × 100, rounded

The net position is in futures contracts, for the category above. In the TFF file it is lev_money_positions_long − lev_money_positions_short; in the Disaggregated file it is m_money_positions_long_all − m_money_positions_short_all.

The rank is a plain empirical rank: not a z-score, not an interpolated quantile and not a probability. Take the 156 weekly nets ending at this report (156 weeks is three years), count how many are below this week’s, divide by the number of weeks and round. A rank of 90 means 90% of those weeks sat below this one. It is taken on the net in contracts, not on net as a share of open interest, and this week is inside its own window, so a new extreme reads 99, not 100.

With fewer than 8 weekly observations no rank is computed. The weekly pages and the contract page hold a stricter line: they print a rank, and a label, only where the full 156 weeks exist; otherwise the column shows a dash.

There are two labels and only two. A rank of 90 or above prints “Crowded long”, 10 or below prints “Crowded short”, and anything between prints nothing. The weekly summary on the COT report page uses the same thresholds and the same 156-week rule.

“Weeks since positioning was last this extreme”, on the contract page, is counted over the same 156 nets: with a rank of 50 or more, the number of weeks back to the most recent earlier week whose net was greater than or equal to this week’s; below 50, less than or equal. If no week in the window qualifies, the page says so instead of printing a number.

A report date is shown only when at least 4 of the six markets reported it, so a dated page is never a one- or two-row table. Each dated page is computed from its own week backwards, so its figures do not change when newer reports arrive.

Which day a figure describes

Every figure describes positions held on a Tuesday. The CFTC normally publishes the report that Friday at 15:30 ET; a US federal holiday moves the release to the following Monday. So the newest positioning available anywhere is at least three days old when it comes out. Meaterm’s copy of the CFTC files refreshes every six hours and the public COT pages rebuild at most once an hour, so a new report can take up to about seven hours to appear here. Nothing on these pages is live.

What this data cannot tell you

  • It is not everyone’s position. Only traders at or above the CFTC’s reporting levels are sorted into categories. Everyone below them appears in a single non-reportable total, so no category figure includes them.
  • A market can drop out. When fewer than 20 reportable traders hold positions in a contract, the CFTC leaves it out of the report altogether.
  • A category is not an intention. The CFTC classifies a trader by its main business, not by the purpose of any one position: a fund counted as Leveraged Funds may be hedging, and a producer may be speculating.
  • Futures only. Options, and exposure held away from US futures exchanges, are not in these numbers. For currencies in particular, the futures book is a small part of the market.
  • An extreme is not a forecast. A high or low rank says how stretched positioning is against its own recent history. It says nothing about when, whether or in which direction that changes.

The COT module inside the web terminal is a different view and is not specified here: it shows more trader categories and ranks net positioning as a share of open interest, so its percentiles and labels are not the figures above.

Check it yourself

These are the files Meaterm reads. Both are public and free and need no account; filter on report_date_as_yyyy_mm_dd to read the same rows.

Match on the dataset id, not the name. The CFTC’s catalogue has other tables with the same display names (98ig-3k9y and ubmb-6exi), plus futures-and-options variants, and they give different numbers.

If a figure here disagrees with the CFTC’s file, the CFTC is right and we want to know: write to support@meaterm.com. Corrections are listed on the errata page.

Where these figures are published: the COT report page, the weekly report and its archive and the Euro FX contract page.

Research only, not financial advice. Meaterm is a research and analysis platform: it does not execute trades, does not manage money and does not make recommendations. Positioning data is context for your own work, not a signal to buy, sell or hold anything. See the risk disclaimer.