RoboMacro Logo
RoboMacro
No Human in the Loop

FX Positioning — CFTC COT Monitor

Net leveraged-fund positioning from the CFTC's weekly Traders in Financial Futures report, z-scored against a rolling window you choose — default 52w (1.0y). Twenty years of weekly reports, plotted against spot.

Pair positioning dashboard — Leveraged funds (hedge funds and CTAs)

CFTC report 2026-07-21 · net positioning differential in US dollars and its change since the previous report, with the z-score at 6 rolling windows. Select a row to open its chart.

CFTC Leveraged funds (hedge funds and CTAs) positioning differential by currency pair, CFTC report date 2026-07-21, z-scored against 52w (1.0y) of weekly reports. 28 pairs. A positive differential is net long the base currency against the quote, in US dollars. Crosses are implied from the two dollar-leg futures books; no futures contract exists for them. EURUSD: −$8.08bn, net short EUR against USD, added to shorts, z −2.80σ, rate 1.14080, observed. GBPUSD: +$2.78bn, net long GBP against USD, added to longs, z +0.60σ, rate 1.33740, observed. AUDUSD: +$1.74bn, net long AUD against USD, trimmed longs, z −0.04σ, rate 0.700800, observed. NZDUSD: −$1.81bn, net short NZD against USD, added to shorts, z −2.09σ, rate 0.583200, observed. USDCAD: +$6.98bn, net long USD against CAD, added to longs, z +2.52σ, rate 1.40970, observed. USDCHF: +$1.37bn, net long USD against CHF, trimmed longs, z +1.43σ, rate 0.812200, observed. USDJPY: +$7.38bn, net long USD against JPY, added to longs, z +1.46σ, rate 163.010, observed. EURGBP: −$10.86bn, net short EUR against GBP, added to shorts, z −3.04σ, rate 0.852998, implied. EURAUD: −$9.82bn, net short EUR against AUD, added to shorts, z −2.41σ, rate 1.62785, implied. EURNZD: −$6.27bn, net short EUR against NZD, added to shorts, z −2.65σ, rate 1.95610, implied. EURCAD: −$1.10bn, net short EUR against CAD, added to shorts, z −2.22σ, rate 1.60819, implied. EURCHF: −$6.71bn, net short EUR against CHF, added to shorts, z −2.76σ, rate 0.926558, implied. EURJPY: −$705.59m, net short EUR against JPY, added to shorts, z −2.45σ, rate 185.962, implied. GBPAUD: +$1.04bn, net long GBP against AUD, added to longs, z +0.32σ, rate 1.90839, implied. GBPNZD: +$4.59bn, net long GBP against NZD, added to longs, z +1.64σ, rate 2.29321, implied. GBPCAD: +$9.76bn, net long GBP against CAD, added to longs, z +3.06σ, rate 1.88533, implied. GBPCHF: +$4.15bn, net long GBP against CHF, added to longs, z +1.47σ, rate 1.08624, implied. GBPJPY: +$10.15bn, net long GBP against JPY, added to longs, z +1.88σ, rate 218.010, implied. AUDNZD: +$3.55bn, net long AUD against NZD, trimmed longs, z +0.47σ, rate 1.20165, implied. AUDCAD: +$8.72bn, net long AUD against CAD, added to longs, z +1.35σ, rate 0.987918, implied. AUDCHF: +$3.11bn, net long AUD against CHF, trimmed longs, z +0.39σ, rate 0.569190, implied. AUDJPY: +$9.11bn, net long AUD against JPY, added to longs, z +0.82σ, rate 114.237, implied. NZDCAD: +$5.17bn, net long NZD against CAD, added to longs, z +1.54σ, rate 0.822137, implied. NZDCHF: −$443.66m, net short NZD against CHF, added to shorts, z −0.54σ, rate 0.473675, implied. NZDJPY: +$5.56bn, net long NZD against JPY, added to longs, z +0.82σ, rate 95.0674, implied. CADCHF: −$5.61bn, net short CAD against CHF, added to shorts, z −2.07σ, rate 0.576151, implied. CADJPY: +$397.12m, net long CAD against JPY, added to longs, z −0.55σ, rate 115.635, implied. CHFJPY: +$6.01bn, net long CHF against JPY, added to longs, z +1.14σ, rate 200.702, implied.
PairDifferentialChange vs previous reportDifferential z-score by rolling window — same series, different windowStance 52wRateRecord
USDDirection52w1y90w1.7y104w2y156w3y260w5y520w10y
Dollar pairsobserved contracts, re-expressed
EURUSDobserved−$8.08bn−$411.53madded to shorts-2.80σ-2.32σ-2.39σ-2.70σ-2.18σ-0.70σVery Short1.1408020.2y
GBPUSDobserved+$2.78bn+$390.84madded to longs+0.60σ+0.17σ-0.10σ+0.06σ+0.53σ+0.82σMildly Long1.3374020.2y
AUDUSDobserved+$1.74bn−$161.32mtrimmed longs-0.04σ+0.56σ+0.64σ+0.88σ+1.24σ+0.75σMildly Short0.70080020.2y
NZDUSDobserved−$1.81bn−$128.50madded to shorts-2.09σ-2.59σ-2.47σ-2.72σ-3.20σ-2.23σVery Short0.58320020.1y
USDCADobserved+$6.98bn+$383.64madded to longs+2.52σ+2.09σ+1.91σ+1.95σ+2.24σ+2.34σVery Long1.4097020.2y
USDCHFobserved+$1.37bn−$98.41mtrimmed longs+1.43σ+0.66σ+0.68σ+0.74σ+0.96σ+0.75σLong0.81220020.2y
USDJPYobserved+$7.38bn+$401.71madded to longs+1.46σ+1.47σ+1.60σ+1.34σ+1.55σ+1.33σLong163.01020.2y
Crossesimplied from two dollar-leg books
EURGBPimplied−$10.86bn−$802.36madded to shorts-3.04σ-2.26σ-2.19σ-2.53σ-2.50σ-1.20σVery Short0.85299820.2y
EURAUDimplied−$9.82bn−$250.21madded to shorts-2.41σ-2.57σ-2.67σ-3.20σ-3.03σ-0.95σVery Short1.6278520.2y
EURNZDimplied−$6.27bn−$283.03madded to shorts-2.65σ-2.06σ-2.04σ-2.18σ-1.63σ-0.43σVery Short1.9561020.1y
EURCADimplied−$1.10bn−$27.89madded to shorts-2.22σ-1.96σ-2.06σ-1.92σ-0.79σ+0.09σVery Short1.6081920.2y
EURCHFimplied−$6.71bn−$509.93madded to shorts-2.76σ-2.33σ-2.40σ-2.65σ-1.96σ-0.57σVery Short0.92655820.2y
EURJPYimplied−$705.59m−$9.82madded to shorts-2.45σ-1.03σ-0.96σ-1.28σ-1.00σ-0.03σVery Short185.96220.2y
GBPAUDimplied+$1.04bn+$552.16madded to longs+0.32σ-0.42σ-0.56σ-0.69σ-0.66σ+0.15σMildly Long1.9083920.2y
GBPNZDimplied+$4.59bn+$519.34madded to longs+1.64σ+1.41σ+1.23σ+1.31σ+1.61σ+1.39σLong2.2932120.1y
GBPCADimplied+$9.76bn+$774.48madded to longs+3.06σ+1.92σ+1.41σ+1.52σ+1.79σ+2.00σVery Long1.8853320.2y
GBPCHFimplied+$4.15bn+$292.43madded to longs+1.47σ+0.57σ+0.31σ+0.46σ+0.90σ+1.11σLong1.0862420.2y
GBPJPYimplied+$10.15bn+$792.55madded to longs+1.88σ+1.69σ+1.75σ+1.53σ+1.87σ+1.40σLong218.01020.2y
AUDNZDimplied+$3.55bn−$32.82mtrimmed longs+0.47σ+1.02σ+1.14σ+1.51σ+1.97σ+1.69σMildly Long1.2016520.1y
AUDCADimplied+$8.72bn+$222.32madded to longs+1.35σ+1.71σ+1.77σ+2.06σ+2.36σ+2.76σLong0.98791820.2y
AUDCHFimplied+$3.11bn−$259.72mtrimmed longs+0.39σ+0.87σ+0.95σ+1.23σ+1.68σ+1.18σMildly Long0.56919020.2y
AUDJPYimplied+$9.11bn+$240.39madded to longs+0.82σ+1.21σ+1.35σ+1.44σ+1.82σ+1.45σMildly Long114.23720.2y
NZDCADimplied+$5.17bn+$255.14madded to longs+1.54σ+1.16σ+0.88σ+1.01σ+1.44σ+1.55σLong0.82213720.1y
NZDCHFimplied−$443.66m−$226.90madded to shorts-0.54σ-0.76σ-0.88σ-0.91σ-1.02σ-0.55σMildly Short0.47367520.1y
NZDJPYimplied+$5.56bn+$273.21madded to longs+0.82σ+1.08σ+1.18σ+0.75σ+0.80σ+0.81σMildly Long95.067420.1y
CADCHFimplied−$5.61bn−$482.04madded to shorts-2.07σ-1.83σ-1.68σ-1.89σ-2.10σ-2.01σVery Short0.57615120.2y
CADJPYimplied+$397.12m+$18.07madded to longs-0.55σ+0.53σ+0.66σ+0.15σ-0.23σ-0.20σMildly Short115.63520.2y
CHFJPYimplied+$6.01bn+$500.11madded to longs+1.14σ+1.18σ+1.31σ+1.06σ+1.17σ+1.02σLong200.70220.2y

Scroll sideways for all 6 windows. Tap a row for its chart.

net positioning differential in US dollars: each leg's net futures position (long minus short) converted at that leg's contract size and the daily close joined to the report date, then the quote leg subtracted from the base leg. It is a differential, not the size of a carveable cross position.

A positive differential is a net long in the base currency against the quote, for the leveraged-fund book. Z-scores use the sample standard deviation, dividing by n-1 over a rolling window of weekly reports, and a window with fewer than its full count of prior reports returns null, never a shorter window relabelled.

Source: CFTC Traders in Financial Futures (TFF), futures-only; CME contract specifications; FRED daily spot. Report date 2026-07-21 is the CFTC report date (a Tuesday), not a trade date — the file is published the following Friday.

How EURUSD was built

observed — the CME EUR future re-expressed in EURUSD convention and in US dollars

Base · EUREUR
−$8.08bn
-56,671 contracts
-56,671 contracts × 125,000 EUR × 1.1408 = −$8.08bn
-2.83σ52w · Very Short

net position in contracts, measured against this contract's own history — the same series, window and sigma the currency view publishes for it

Quote · USDUSD

USD is the numeraire on this exhibit — the CFTC publishes no bilateral dollar contract, so there is no dollar book to score. A zero here would read as a flat book rather than as the absence of one.

EURUSD z · 52w
-2.80σ
dollar differential basis
Leg z-spread
net contracts basis
Leg correlation
52w (1.0y)

USD is the numeraire on this exhibit — the CFTC publishes no bilateral dollar contract, so there is no dollar book to score. A zero here would read as a flat book rather than as the absence of one.

About the positioning monitor

The monitor tracks net positioning in CME and ICE currency futures from the CFTC's Traders in Financial Futures (TFF) report — long contracts minus short, for the trader category you select. Coverage is the ten bilateral currency futures (EUR, GBP, JPY, CHF, CAD, AUD, NZD, MXN, BRL, ZAR) plus the ICE dollar index, shown separately because a trade-weighted basket is not a bilateral position and does not belong in a cross-sectional ranking.

Positioning is a contrarian-leaning input: extreme longs or shorts mark trades that are crowded, and crowded trades unwind hard when the narrative breaks. A stretched z-score does not time the turn, but it tells you which currencies have the most positioning fuel for one.

Two controls, two different jobs. History changes what is drawn and never changes a number. The z window changes how many weekly reports enter the mean and standard deviation, and so changes the z-score itself: 90w (1.7y) and 52w (1.0y) on the same weekly series are two different measurements, and both are correct.

Two different “net speculative” series circulate. The legacy Commitments of Traders report publishes a non-commercial net; the TFF report publishes separate leveraged-fund and asset-manager books. They are different traders and they do not match — asset managers are frequently long a currency that leveraged funds are short. Everything here is TFF, long minus short, and every figure is labelled with the category it came from.

Questions

There is no GBPAUD futures contract. Where does its positioning come from?
From the GBP and AUD contracts, which the CFTC does report. Each leg's net position is converted to US dollars — contracts multiplied by the CME contract size and by the daily close on or before that report date — and the quote leg is subtracted from the base leg. The seven dollar pairs are the reported contracts re-expressed and are labelled observed; the 21 crosses are inferred and are labelled implied. The number is a differential rather than the size of a carveable cross position, which is why a book long one billion dollars of euro against one billion short of Australian dollar reads as two billion. That convention moves no z-score — a z is scale-invariant — only the headline dollar figure.
Why is USDJPY no longer drawn upside down?
Because the position is now in pair convention too. The currency view scores the yen contract, and a rising USDJPY means the yen weakened — so that view inverts the axis to keep “up” meaning “stronger”. In the pair view a positive differential is net long the dollar against the yen, which rises exactly when USDJPY rises. Both panes point the same way and nothing is inverted anywhere.
Why does the leg z-spread disagree with the pair's own z-score?
Two reasons, and the panel under the chart shows both. Each leg is scored on its net position in contracts against that contract's own history — the identical number the by-currency view publishes — while the pair is scored on the dollar differential. Different quantities, different sigmas. And the spread of two z-scores whose legs correlate ρ has a standard deviation of √(2(1−ρ)) rather than 1, so it is not itself a z-score. The correlation is published beside the spread so that is arithmetic you can check rather than a claim you have to take.
Why does my terminal show a different z-score for the same currency?
Almost always the window. A terminal's Z-Score(90) on a weekly series normalises against 90w (1.7y) of reports; our default normalises against 52w (1.0y). Same series, same latest position, two different means and standard deviations, two different sigmas — and both are correct measurements of different things. Select 90w in the z-window row to reproduce the 90w reading. Any small residual left is the standard-deviation convention: we use the sample standard deviation, dividing by n−1. The working is printed under the z pane so the arithmetic can be checked directly rather than taken on trust.
What is the difference between the history selector and the z-window selector?
The history selector is the x-axis: it decides whether you see two years of reports or twenty, and never changes a number. The z-window selector is the arithmetic: it decides how many prior reports form the mean and standard deviation the position is measured against, so it recomputes the z-score everywhere on the chart. Neither refetches — the whole record arrives with every window pre-computed.
Which trader category is this, and what does the spot line represent?
Whichever you select: leveraged funds (the hedge-fund and CTA book) or asset managers (institutional real money), long contracts minus short in each case. The spot line is the daily close on or before each CFTC report date, so every point on both panes shares one date and no price from after a report is ever shown against it. Where a currency is the quote leg of its market-convention pair — USDJPY, USDMXN — the spot axis is inverted, so a rising line always means that currency strengthened.
Why is a z-score sometimes blank?
Because the window has not opened. A 520-week window needs 520 weekly reports; the rand contract has 507 since 2010 and the real 743 since 2011, so their longest windows are genuinely unavailable and show an em-dash with the reason on hover. A shorter window is never substituted and relabelled.
What is the CFTC COT report?
The Commitments of Traders report is published weekly by the US Commodity Futures Trading Commission. The Traders in Financial Futures variant breaks currency futures positions down by trader type — dealers, asset managers, leveraged funds and others. The report date is a Tuesday and the file is published the following Friday at 15:30 Eastern, so positioning is always three to five days behind the price it is plotted against.

Positioning from the CFTC Traders in Financial Futures report — free weekly data. The spot overlay uses FRED daily closes matched to each CFTC report date.

RoboMacro

Automating macroeconomic research and analysis through AI-powered podcast generation and research papers.

Explore

© 2026 RoboMacro. All rights reserved.