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.
| Pair | Differential | Change vs previous report | Differential z-score by rolling window — same series, different window | Stance 52w | Rate | Record | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| USD | Direction | 52w1y | 90w1.7y | 104w2y | 156w3y | 260w5y | 520w10y | |||||
| Dollar pairs | observed contracts, re-expressed | |||||||||||
| EURUSDobserved | −$8.08bn | −$411.53m | added to shorts | -2.80σ | -2.32σ | -2.39σ | -2.70σ | -2.18σ | -0.70σ | Very Short | 1.14080 | 20.2y |
| GBPUSDobserved | +$2.78bn | +$390.84m | added to longs | +0.60σ | +0.17σ | -0.10σ | +0.06σ | +0.53σ | +0.82σ | Mildly Long | 1.33740 | 20.2y |
| AUDUSDobserved | +$1.74bn | −$161.32m | trimmed longs | -0.04σ | +0.56σ | +0.64σ | +0.88σ | +1.24σ | +0.75σ | Mildly Short | 0.700800 | 20.2y |
| NZDUSDobserved | −$1.81bn | −$128.50m | added to shorts | -2.09σ | -2.59σ | -2.47σ | -2.72σ | -3.20σ | -2.23σ | Very Short | 0.583200 | 20.1y |
| USDCADobserved | +$6.98bn | +$383.64m | added to longs | +2.52σ | +2.09σ | +1.91σ | +1.95σ | +2.24σ | +2.34σ | Very Long | 1.40970 | 20.2y |
| USDCHFobserved | +$1.37bn | −$98.41m | trimmed longs | +1.43σ | +0.66σ | +0.68σ | +0.74σ | +0.96σ | +0.75σ | Long | 0.812200 | 20.2y |
| USDJPYobserved | +$7.38bn | +$401.71m | added to longs | +1.46σ | +1.47σ | +1.60σ | +1.34σ | +1.55σ | +1.33σ | Long | 163.010 | 20.2y |
| Crosses | implied from two dollar-leg books | |||||||||||
| EURGBPimplied | −$10.86bn | −$802.36m | added to shorts | -3.04σ | -2.26σ | -2.19σ | -2.53σ | -2.50σ | -1.20σ | Very Short | 0.852998 | 20.2y |
| EURAUDimplied | −$9.82bn | −$250.21m | added to shorts | -2.41σ | -2.57σ | -2.67σ | -3.20σ | -3.03σ | -0.95σ | Very Short | 1.62785 | 20.2y |
| EURNZDimplied | −$6.27bn | −$283.03m | added to shorts | -2.65σ | -2.06σ | -2.04σ | -2.18σ | -1.63σ | -0.43σ | Very Short | 1.95610 | 20.1y |
| EURCADimplied | −$1.10bn | −$27.89m | added to shorts | -2.22σ | -1.96σ | -2.06σ | -1.92σ | -0.79σ | +0.09σ | Very Short | 1.60819 | 20.2y |
| EURCHFimplied | −$6.71bn | −$509.93m | added to shorts | -2.76σ | -2.33σ | -2.40σ | -2.65σ | -1.96σ | -0.57σ | Very Short | 0.926558 | 20.2y |
| EURJPYimplied | −$705.59m | −$9.82m | added to shorts | -2.45σ | -1.03σ | -0.96σ | -1.28σ | -1.00σ | -0.03σ | Very Short | 185.962 | 20.2y |
| GBPAUDimplied | +$1.04bn | +$552.16m | added to longs | +0.32σ | -0.42σ | -0.56σ | -0.69σ | -0.66σ | +0.15σ | Mildly Long | 1.90839 | 20.2y |
| GBPNZDimplied | +$4.59bn | +$519.34m | added to longs | +1.64σ | +1.41σ | +1.23σ | +1.31σ | +1.61σ | +1.39σ | Long | 2.29321 | 20.1y |
| GBPCADimplied | +$9.76bn | +$774.48m | added to longs | +3.06σ | +1.92σ | +1.41σ | +1.52σ | +1.79σ | +2.00σ | Very Long | 1.88533 | 20.2y |
| GBPCHFimplied | +$4.15bn | +$292.43m | added to longs | +1.47σ | +0.57σ | +0.31σ | +0.46σ | +0.90σ | +1.11σ | Long | 1.08624 | 20.2y |
| GBPJPYimplied | +$10.15bn | +$792.55m | added to longs | +1.88σ | +1.69σ | +1.75σ | +1.53σ | +1.87σ | +1.40σ | Long | 218.010 | 20.2y |
| AUDNZDimplied | +$3.55bn | −$32.82m | trimmed longs | +0.47σ | +1.02σ | +1.14σ | +1.51σ | +1.97σ | +1.69σ | Mildly Long | 1.20165 | 20.1y |
| AUDCADimplied | +$8.72bn | +$222.32m | added to longs | +1.35σ | +1.71σ | +1.77σ | +2.06σ | +2.36σ | +2.76σ | Long | 0.987918 | 20.2y |
| AUDCHFimplied | +$3.11bn | −$259.72m | trimmed longs | +0.39σ | +0.87σ | +0.95σ | +1.23σ | +1.68σ | +1.18σ | Mildly Long | 0.569190 | 20.2y |
| AUDJPYimplied | +$9.11bn | +$240.39m | added to longs | +0.82σ | +1.21σ | +1.35σ | +1.44σ | +1.82σ | +1.45σ | Mildly Long | 114.237 | 20.2y |
| NZDCADimplied | +$5.17bn | +$255.14m | added to longs | +1.54σ | +1.16σ | +0.88σ | +1.01σ | +1.44σ | +1.55σ | Long | 0.822137 | 20.1y |
| NZDCHFimplied | −$443.66m | −$226.90m | added to shorts | -0.54σ | -0.76σ | -0.88σ | -0.91σ | -1.02σ | -0.55σ | Mildly Short | 0.473675 | 20.1y |
| NZDJPYimplied | +$5.56bn | +$273.21m | added to longs | +0.82σ | +1.08σ | +1.18σ | +0.75σ | +0.80σ | +0.81σ | Mildly Long | 95.0674 | 20.1y |
| CADCHFimplied | −$5.61bn | −$482.04m | added to shorts | -2.07σ | -1.83σ | -1.68σ | -1.89σ | -2.10σ | -2.01σ | Very Short | 0.576151 | 20.2y |
| CADJPYimplied | +$397.12m | +$18.07m | added to longs | -0.55σ | +0.53σ | +0.66σ | +0.15σ | -0.23σ | -0.20σ | Mildly Short | 115.635 | 20.2y |
| CHFJPYimplied | +$6.01bn | +$500.11m | added to longs | +1.14σ | +1.18σ | +1.31σ | +1.06σ | +1.17σ | +1.02σ | Long | 200.702 | 20.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.
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.
z(52w) = (net -8,081,284,600 − mean 2,343,118,446) ÷ σ 3,722,417,874 = -2.80σ · 52 weekly reports to 2026-07-21 · sample σ (n−1)
Blue area, left axis: Net leveraged-fund positioning differential (USD), base leg minus quote leg. Dark line, right axis: EURUSD rate, daily close on or before the CFTC report date; never a later close. Gold line below: the z-score of the blue series against a 52-week rolling window (52 weekly reports, sample sigma, n−1).
Both panes are in EURUSD convention: a rising line means EUR strengthened against USD, whether it is the rate or the position. No axis is inverted.
How EURUSD was built
observed — the CME EUR future re-expressed in EURUSD convention and in US dollars
net position in contracts, measured against this contract's own history — the same series, window and sigma the currency view publishes for it
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.
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.

