There is no CFTC contract for GBPAUD, EURJPY, or any other FX cross. The Commitments of Traders report covers futures, and no cross trades as a future. So this builds one — and then tells you exactly what it is and isn't worth.
Each USD leg is indexed 0–100 against its own three-year range of weekly reports — the classic COT Index. The cross score is then simply:
score = base leg − quote leg
→ −100 … +100
GBPAUD with GBP at 82 and AUD at 18 scores +64: speculators are heavily long the pound and heavily short the Aussie, so the crowd is leaning hard toward the base currency of that cross.
Base 82 / quote 18 and base 96 / quote 32 both score +64, and they are not the same market. One is two crowded legs pulling together; the other is one leg pinned at the very top of its three-year range against a counterpart sitting mid-range. The score alone cannot tell them apart — the rail can. Read it before you read the score.
You do not have to measure the two lines by eye. The panel's Both legs row says it in words: "both legs stretched — pulling together", or "EUR is doing the work — AUD is mid-range", or "neither leg is stretched".
Measured across 21 crosses built from 7 currencies, weekly, 2000–2026.
| Score crosses… | Still there after | Accuracy | Free rate | Lift | Crosses agreeing |
|---|---|---|---|---|---|
| +60 (base favoured) | 2 reports | 55.5% | 24.6% | +30.9 | 20/20 |
| −60 (quote favoured) | 2 reports | 60.1% | 30.2% | +29.9 | 18/18 |
| +60 | 4 reports | 39.9% | 24.0% | +15.9 | 19/20 |
| −60 | 4 reports | 45.5% | 31.1% | +14.3 | 17/18 |
n=308 each side. The free rate comes from the adjacent 50–60 band — ten points below the trigger — so "high things stay high" is already inside the baseline and is not being claimed as insight.
Every figure here is published next to the rate you'd have got by chance. A hit rate without a baseline means nothing: "still at an extreme within 8 weeks" would score near 90% on any series that moves slowly, and would tell you exactly nothing.
Eighteen directional setups were tested: follow the lean, fade the lean, and trade the unwind when the score crosses back inside the band — each at 4, 13 and 26 weeks.
None survived. Against roughly 0.9 expected to clear by chance alone. No excess return exceeded 1.3% in either direction, breadth was a coin flip (6 to 16 of the 20–21 crosses with enough signals to measure), and in-sample and out-of-sample signs flipped.
That is why the colours in this indicator name a currency and never a direction, why there is no buy or sell marker anywhere in it, and why the verdict line ends with "no directional claim" whenever it flags a lean.
A tool that told you a crowded cross was about to turn would be asserting something 21 crosses and 26 years of data say is not there. Plenty of COT tools make exactly that claim. This one won't.
Positioning tells you what regime you are in: whether one side of a cross is crowded, how stretched it is, and — now measured — that the state will most likely still be there in a fortnight.
What it does not tell you is where to act. That needs a price-location layer: support and resistance structure, envelope bands, pivots. There is none in this script.
Used properly, this is a context filter. It tells you which crosses have a stretched crowd behind them, so you know which charts deserve attention — and then your own system decides everything else.
| Colour | Meaning |
|---|---|
| GOLD | The base currency of the pair. Not "bullish". The score line saturates toward gold as the reading gets more extreme and fades to neutral near zero — the claim is about extremes, so a balanced score is deliberately dull. |
| SLATE | The quote currency. Not "bearish". Same heat grading on the negative side. |
| GREY | Balanced — neither leg is crowded. Grey is also the warming-up state, before the leg index has its 20 reports; the panel says which of the two you are looking at. |
The absence of teal and red here is deliberate. Those colours carry directional meaning everywhere else in the COTVault suite, and using them for a score with no measured directional edge would imply something the testing rejected.
| Row | What it tells you |
|---|---|
| Cross score | −100 to +100, with a meter and which currency the crowd favours. |
| Base leg / Quote leg | Each currency's own COT index and state. The detail the score hides. Shown on crosses only. |
| Both legs | Whether the two legs are pulling together (both stretched, opposite ends) or one leg is doing all the work while the other sits mid-range. Same score, different market — see §2. Crosses only. |
| Weeks at extreme | How long the current reading has been beyond ±60. |
| Persistence claim | The pooled figure: 55.5% vs 24.6%, +30.9, 20/20 crosses. |
| … on this chart | The same claim recomputed live on your symbol. It will differ — one cross is a small, noisy sample, and seeing that is the point. |
| Verdict | Plain language. Whenever it flags a lean it ends in "no directional claim," so the limit travels with the reading. |
If the panel says "No CFTC currency leg for <symbol>" — this reads FX only. A cross, or a USD pair built from EUR GBP JPY CHF CAD AUD NZD MXN ZAR BRL. Stocks, indices, crypto, metals and energy futures have no currency leg to index, so no score is drawn. If it says "warming up", the leg index has not yet collected its 20 weekly reports on this chart.
Setting Data box to Compact keeps only the Cross score and the Verdict — the leg rows, Weeks at extreme and both persistence rows are hidden.
Seven currencies have a CFTC contract: EUR, GBP, AUD, NZD, CAD, CHF, JPY. Every pairing of those seven is
a cross, which is 21 markets — and because the cross score is nothing more than base leg
− quote leg, once the seven legs are indexed every pairing is already computed. No extra
data, no extra symbols, no scanning.
So the screener ranks all 21 by how far from balance they are, and does it on whichever chart you happen to have open. This is the difference between asking "is EURAUD crowded?" and asking "which cross is crowded right now?" — the second is the question worth opening the week with.
| Column | What it is |
|---|---|
| Pair | The cross, in the order a broker quotes it. A ▸ marks the chart you are on. |
| Score | −100 to +100, heat-graded the same way as the main line. |
| Specs favour | Which of the two currencies the crowd is leaning toward, and whether it is past the ±60 band. |
It sorts by how stretched positioning is, and the measured claim attached to a stretched reading is that it persists — not that it reverses, and not that the cross goes anywhere. A cross at the top of this list is one where the crowd is committed and likely to stay committed. That is a watchlist, not a signal list. §4 is still true: no directional setup survived testing.
The seven legs are the same seven legs whatever symbol you are on, so the ranking should not move when you switch charts. Only the ▸ moves. If you load AUDJPY and then CHFJPY, the six rows should be byte-for-byte the same.
The one exception: each leg is indexed against the weekly reports your chart has loaded. The window is 156 reports — three years. On a chart with less history than that, the legs rank against a shorter window, and the list genuinely can reorder between symbols. Weekly chart, three or more years of history, and the screener is identical everywhere. Below that, treat it as approximate.
It costs 14 of TradingView's 40 data requests. Turn it off in Settings if you want those back.
| Setting | Default | Note |
|---|---|---|
| Extreme at ± | 60 | The threshold the claim was measured at. Moving it invalidates the published figures. |
| Leg index lookback | 156 | Three years of weekly reports, the classic COT Index setting. |
| Rank all 21 crosses | on | The screener in §8. Costs 14 of the 40 data requests; turn it off to reclaim them. |
| How many to list / position | 6 · Bottom left | Between 3 and 10 rows, anchored anywhere. |
| Leg rail | on | Both legs along the bottom. Leave it on — see §2. Has no effect on USD pairs, which have a single leg. |
| Include options data | off | Leave it off. Every figure in this guide was measured on CFTC Legacy futures-only data. Switching it on swaps the dataset out from under the published numbers. |
| Mark entries into an extreme | on | Triangle on the report the score first crosses ±60. A state marker, not an entry. |
| Show data panel | on | The panel in §7. Off hides it entirely. |
| Data box | Normal | Text size — except Compact, which is a content mode: it drops the leg rows, Weeks at extreme and both persistence rows, leaving only the score and the verdict. |
| Data box position | Top right | Nine anchor points. |
| Glow on the score line | on | Cosmetic only. |
| Fill the score from centre | on | Cosmetic only — makes the size of the lean readable at a glance. |
| Show the full guide on the chart | off | Renders this manual as an on-chart panel, in two pages, anchored wherever you like. |
| Guide position / text size / page | Middle left · Small · Page 1 | Where the on-chart manual sits and which of its two pages shows. |
| Alert | Fires when |
|---|---|
| Specs favour the BASE currency | The score crosses up through the extreme band (+60 by default) — the first report beyond it, not every report it stays there. The message carries the measured persistence figures with it. |
| Specs favour the QUOTE currency | The score crosses down through −60, same first-report-only rule. |
| New COT report ingested | A fresh weekly CFTC report lands on the chart. |
All three are positioning states. None is an entry. Set them to Once Per Bar Close on a weekly chart — the data only changes once a week.
21 crosses built from all pairings of EUR, GBP, JPY, CHF, CAD, AUD and NZD. Each leg's COT index is the
same 156-week min-max range position the indicator computes live, so the study and the chart cannot drift
apart. Cross prices for the directional tests were built from the USD-quoted futures as XUSD /
YUSD, close-based only — the high of a ratio is not the ratio of the highs, and a barrier test on
approximated highs and lows would be measuring the approximation rather than the market.
Persistence uses a matched adjacent-band control. Directional tests used excess return versus each cross's own unconditional drift, with per-cross breadth, a bootstrap CI resampled over crosses, and a walk-forward split at 2010. The count of setups tested is published above so you can discount for multiple comparisons yourself — which, given none of them survived, is academic.