Positioning tells you what regime you are in. Your own system tells you when to trade. This indicator's job is to mark where those two things line up — and to publish the hit rate for every claim it makes, next to the rate you would have got for free.
Data is the weekly CFTC Commitments of Traders report, released Friday afternoon covering the prior Tuesday. That lag is inherent to the data and cannot be removed by any tool.
Almost every COT indicator on the market tells you a crowded reading means reversal risk. We tested it across 12 markets and 26 years: price made a 4-week low within 2 reports 46.7% of the time, against a 45.2% rate it would have managed anyway. A +1.5 point edge on 8 of 12 markets — indistinguishable from nothing.
It is worse than merely useless. Bucketing forward returns by index level, the 80–90 bucket is mildly positive (+0.84% excess at 13 weeks, the best of the ten). There is no sign flip at 80. Shading that zone red points you the wrong way, so this indicator does not do it.
This matters beyond one indicator. "Fade the crowd" is the single most repeated idea in COT education, and on this data it does not survive contact with a base rate. Everything in the rest of this guide is what was left after the same testing was applied to every other claim.
Once positioning crosses into the extreme, it stays there far longer than most traders expect.
| Still crowded (≥80) after | Accuracy | Free rate | Lift | Markets |
|---|---|---|---|---|
| 2 reports | 65.7% | 37.2% | +28.5 | 12/12 |
| 4 reports | 55.8% | 34.9% | +20.8 | 12/12 |
| 8 reports | 42.0% | 32.4% | +9.5 | 9/12 |
Softer reading — still elevated (≥70): 85.3% / 71.8% / 57.3% at 2/4/8 reports against free rates of 72.7 / 57.9 / 48.1 (n=443 trigger events). Median episode 7 reports; 47% run 8 or longer — measured over 320 crowded-long episodes, entry at 80 and exit below 70.
The free rate here is drawn from the adjacent 76–80 band — four points below the trigger. That matters: a wider 65–80 control would have shown a +31.1 lift, but part of that gap is simply "starts higher, stays higher." Against the adjacent band the extreme itself is still worth +20.8, and all twelve markets agree.
Do not fade a fresh extreme. Excess return from fading is negative in 16 of the 18 sub-8 age/horizon cells measured, both directions — the two exceptions are +0.01% and +0.06%, indistinguishable from zero with bootstrap CIs straddling it. A crowded reading is a mature trend that is still running, not a trend about to end. Positioning unwinds after price turns, not before.
This is the part that puts an edge on the chart. Teal shading marks where two independent things agree:
The measurement is a barrier race, not an event count: from the zone bar, does price reach +1 ATR before −1 ATR within 13 reports? That is a payoff question. "Makes a 4-week high" is not — a 4-week high can be +0.05% and can arrive after a brutal drawdown. A barrier race cannot hide that.
| Accuracy | Free rate | Lift | Markets | n | |
|---|---|---|---|---|---|
| Watch zone, ±1 ATR | 60.2% | 52.8% | +7.4 | 8/12 | 362 |
| Same zone, ±1.5 ATR | — | — | +9.8 | — | — |
| Same zone, ±2 ATR | — | — | +12.8 | — | — |
The edge grows as the barrier widens. That is what a real effect does — a curve-fit artefact degrades when you change the measurement. Walk-forward: +14.0 fitted before 2010, +4.6 out-of-sample 2010–2026. The out-of-sample number is a third of the in-sample one, which is honest decay, not a failure — it stays positive and the bootstrap CI over markets excludes zero at [+2.4, +13.8].
The zone appears roughly 0.5 times per market per year — 162 distinct openings across 313 market-years, 2.3% of all weeks. It is rare on purpose. A zone that paints half the time is not a location, it is wallpaper.
Crowding does exhaust. Once the marginal buyer is gone the position has to come off eventually. The question is only how long "eventually" takes — and the answer is far longer than instinct suggests.
Crowded long at resistance, asking whether price falls 1 ATR before it rises 1 ATR: 42.7% against a 47.1% base rate. A lift of −4.4 on 4 of 11 markets. That is the mirror toggle, off by default — a crowded long typically squeezes up before it breaks, so a symmetric barrier test cannot see the effect and an 8-week horizon fails too.
Red shading marks specs crowded long for 16 or more reports. Shorting that state:
| Horizon | Excess | Hit | Markets | In → out of sample |
|---|---|---|---|---|
| 13 weeks | +2.35% | 61.6% | 10/10 | 6.91 → 1.10 |
| 26 weeks | +5.22% | 69.7% | 8/10 | 8.80 → 4.48 |
| 13 wks + stoch overbought | +3.23% | 69.7% | 7/7 | 7.76 → 1.13 |
Excess return rises monotonically with episode age — wk0 −0.48%, wk4 −0.14%, wk8 +0.75%, wk12 +1.64%, wk16 +2.35%. A smooth ramp like that is the signature of a real effect; a fitted one spikes at one setting and collapses either side of it.
Treat these as two different trades. The teal watch zone is a swing location. The red mature zone is a quarterly position read — at 8 weeks it fails outright, and you should expect an adverse excursion before it resolves. Size for that, or don't take it.
The asymmetry in speed has a mechanism. A crowded short is forced — margin and unlimited loss compel covering, so it resolves quickly. A crowded long can sit indefinitely; nothing makes those holders act until the trend itself rolls. Same exhaustion, very different clock.
| Alert | Fires when |
|---|---|
| WATCH ZONE opens (longs) | Specs crowded short past the configured minimum (8 reports by default) and price reaches support. The message carries the measured 60.2% / 52.8% figures. |
| Specs entered CROWDED LONG | The positioning index crosses up through 80. |
| Specs entered CROWDED SHORT | The positioning index crosses down through 20. |
| MATURE UNWIND zone opens | Specs crowded long past the maturity threshold (16 reports by default). Silent if the mature-unwind zone is switched off in Settings. |
| New COT report ingested | A fresh weekly CFTC report lands on the chart. |
All five mark a state or a location. None is an entry. Set them to Once Per Bar Close on a weekly chart — the data only changes once a week, on Friday.
| Row | What it tells you |
|---|---|
| Large specs | Index 0–100, meter, and state chip. |
| Commercials | The hedgers' index. They accumulate against trends. |
| Episode age | Reports spent in the current extreme, and whether you are past the median 7. Below 8 it says too early to fade. |
| Persistence claim | The pooled figure: 55.8% vs 34.9%, +20.8, 12/12. |
| … on this chart | The same claim recomputed on your symbol only. It will differ — a single market is a small, noisy sample, and seeing that is the point. |
| Watch zone | Pooled: 60.2% vs 52.8%, +7.4, 8/12. |
| … on this chart | Live barrier race on your symbol — the watch zone only. Reads "—" until a zone has opened and resolved at least once here. Armed off the weekly close and resolved against the weekly high and low, so it uses the same convention as the pooled 60.2% on any chart period. |
| Mature unwind | Pooled: +2.35% excess over 13 weeks, 61.6% hit, 10/10 markets. The slow short — see §5. No live row: a 13-week excess-return study cannot be recomputed honestly on a single chart. |
| Verdict bar | Plain-language state: zone open, crowded and waiting, or neutral. |
All nine rows show at Small, Normal and Large. Compact keeps only Large specs and the verdict bar.
There are three states where the indicator will not show you numbers. It says which one you are in rather than printing a confident-looking "neutral" over data it does not have:
| Message | What it means |
|---|---|
| No COT market mapped for this symbol | The symbol has no CFTC contract behind it — a stock, an index, crypto, or a currency with no futures market. Nothing is plotted. |
| Not enough report history on this chart yet | The COT index needs 20 weekly reports before it will emit a value; with fewer, a min–max ranking pins everything to 0 or 100 and paints false extremes. Use a Daily or Weekly chart with more history. |
| Chart period is above 1W | On a monthly chart only one report reaches the script per bar, so episode age, the 156-report window and the 13-report horizon would all silently become months. The indicator disables itself rather than mislead you. |
| Setting | Default | Note |
|---|---|---|
| Minimum reports crowded | 8 | The threshold where fading stops losing. Lowering it widens the zone and dilutes it. |
| Support: P3A lower band | on | COTVault internal — the P3A pivot envelope — three-period averages of the pivot. |
| Support: monthly S1 | on | COTVault internal — monthly floor pivot, non-repainting. |
| Show the mirror | off | Measured at −4.4 lift. On is the untested configuration. Shades slate, not red. |
| Watch zone on the price chart | on | Turns off the price-chart shading and triangle (both the teal zone and the mirror). The pane shading is unaffected. |
| Mature-unwind zone (the slow short) | on | The red price-chart shading and its alert. See §5. |
| Reports crowded before mature | 16 | Where all ten markets with a 16+ report sample agree. Excess return rises monotonically with age, so lowering it weakens the read. |
| Require stochastic overbought for mature zone | off | Sharpens it — 13w goes +2.35% → +3.23%, hit rate 61.6% → 69.7%, on 7 of 7 markets — at the cost of roughly three quarters of the occurrences. |
| COT Index lookback | 156 | Three years, the classic setting. Counted in reports, not bars. |
| 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 every published number. |
| Small traders line | off | The non-reportable cohort. Off by default — it adds noise more often than information. |
| Audit tape (weekly charts) | on | The dots along the bottom. Weekly charts only; hidden elsewhere. |
| Data box | Normal | Small / Normal / Large change text size only. Compact is a content mode — it keeps the specs reading and the verdict bar and hides the other seven rows. |
| Show the full guide on the chart | off | Renders the on-chart manual as a panel. TradingView always drops the ⓘ tooltip downward, so it runs off the bottom of the screen when the data box sits low — this is the way around it. |
| Guide position / text size / page | Middle left / Small / Page 1 | Nine anchor points, independent of the data box so the two never collide. The manual runs to three pages. |
Both support tools are computed on weekly data whatever your chart period. Levels and the price they are tested against are drawn from the same weekly bar, using confirmed bars only — so nothing repaints and nothing peeks at the future. On a weekly chart the zone is exact; on faster periods it lags by one week, because the last confirmed weekly bar is the newest honest data available intraweek. That lag is deliberate. The alternative — reading the developing week — would let the indicator see information that did not exist when the bar it marks was forming, and would move the zone under you the moment a live bar became historical.
One colour language runs across the whole COTVault suite, so a colour never means two things:
| Colour | Meaning |
|---|---|
| GOLD | A state, never a direction. Positioning or concentration is at an extreme. A fresh crowded-long reading is not bearish. |
| TEAL | A measured bullish edge is live — the watch zone is open. |
| RED | A measured bearish edge is live. In Classic that means the mature-unwind zone: crowded long for 16+ reports. |
| SLATE | Neutral, or measured and rejected. Nothing that survived testing is happening. The mirror zone shades slate for exactly this reason. |
A meter's colour always matches the word printed beside it — if they ever disagree, that's a bug worth reporting. Gold deliberately does not mean "danger": colouring a crowded reading red would restate the reversal-risk claim this suite tested and rejected.
60.2% is a barrier-race rate, not a profit figure. It says price reached +1 ATR before −1 ATR more often than baseline. It says nothing about your entry, your stop, your size or your costs. A 60% barrier race with poor execution still loses money.
12 markets — EUR, GBP, JPY, CHF, CAD, AUD, NZD, US Dollar Index, Gold, Silver, WTI Crude, Corn — using CFTC Legacy futures-only data joined to weekly OHLC. The CFTC series itself reaches back to 1986, but the measured sample is bounded by weekly price history: 2000–2026 for ten markets, 1992 for the US Dollar Index, 2003 for NZD — 16,284 market-weeks in total. This is the same dataset and the same report series the COTVault dashboard runs on.
Every claim is reported as accuracy against a base rate, never as accuracy alone. Persistence claims use a matched adjacent-band control, because an all-bars control is meaningless for a state-transition claim — most bars already sit in the resolved state. Price claims use an all-bars control, which is valid. Any claim whose free rate exceeded 85% was rejected outright regardless of accuracy: an indicator that "predicts" a near-certain event has taught you nothing.
Guards applied to the zone: per-market breadth, a market-resampled bootstrap CI, replication at 1.5 and 2 ATR barriers, and a walk-forward split at 2010. The number of combinations tested is published above so you can discount for it yourself.