COT index vs z-score
Two ways to say "stretched" — the formulas, one worked example computed both ways, and where each one lies to you.
The COT index rescales a net position onto its trailing min–max range (0–100); the z-score expresses the same net in standard deviations from its trailing mean, and is unbounded. They usually agree on direction but answer different questions — "where inside the range?" versus "how unusual?" As of the Jul 21, 2026 report, gold non-commercials (net long 183,910 contracts) score 46.1 on the 3-year COT index and -0.49 on the 3-year z-score.
The two formulas
| COT index | Z-score | |
|---|---|---|
| Formula | 100 × (net − min) / (max − min) |
(net − mean) / σ |
| Inputs from the window | Only the minimum and maximum | Every value (mean and standard deviation) |
| Output range | 0 to 100, by construction | Unbounded (±2 is uncommon, ±3 rare) |
| Reads as | Position inside the historical range | Distance from the historical average |
| On this site | 26-, 52-, 156-week windows | 156-week window, population σ |
One series, computed both ways
The six weeks below are an invented example series, chosen so the arithmetic is easy to follow by hand — they are not market data. Suppose a category's net position over six weekly reports was:
| Week | Net position | Deviation from mean (28.33) | Squared deviation |
|---|---|---|---|
| 1 | +10 | −18.33 | 336.1 |
| 2 | +40 | +11.67 | 136.2 |
| 3 | −20 | −48.33 | 2,335.9 |
| 4 | +60 | +31.67 | 1,002.8 |
| 5 | +30 | +1.67 | 2.8 |
| 6 (current) | +50 | +21.67 | 469.6 |
COT index for week 6, over the 6-week window: the minimum is −20 (week 3), the maximum +60 (week 4).
100 × (50 − (−20)) / (60 − (−20)) = 100 × 70 / 80 = 87.5
The current net sits 87.5% of the way up its range: high, but not the record.
Z-score for week 6: the mean is (10 + 40 − 20 + 60 + 30 + 50) / 6 = 28.33. The squared deviations sum to 4,283.3; dividing by 6 (population variance) gives 713.9, so σ = 26.7.
(50 − 28.33) / 26.7 = +0.81
Same week, same data: the index says "near the top of the range" (87.5), the z-score says "less than one standard deviation above average" (+0.81). Neither is wrong. The index compares against only the two most extreme weeks; the z-score averages against all six, and this series is volatile enough that +50 is not a statistically unusual reading. Disagreements of exactly this kind occur in real markets, which is why the tables on this site publish both.
Where the COT index misleads
- It saturates. Any new record prints exactly 100 (or 0), whether the record was broken by ten contracts or a hundred thousand. During a sustained positioning build-up the index can sit pinned at the boundary for weeks while the underlying net keeps growing — the index has no way to say "more extreme than last week's extreme."
- Two weeks define it. Only the window's min and max enter the formula, so a single outlier week stretches the denominator and compresses every subsequent reading toward the middle until it rolls out of the window.
- Range position is not rarity. In a series that spent the window drifting between two levels, mid-range values are common and boundary values may be too; 87.5 does not mean "87.5th percentile" (that is a different statistic, also published here).
Where the z-score misleads
- It assumes a well-behaved distribution. Interpreting ±2 as "rare" borrows intuition from the normal distribution. Positioning series are often skewed and regime-prone — commercials in gold, for example, have spent most of recorded history net short — so identical z-values are not equally rare in every market.
- The mean chases trends. After a long one-directional build, the trailing mean has moved with the position, so the z-score quietly re-baselines and an objectively enormous net can score as ordinary.
- σ is regime-dependent. A market coming off a volatile stretch has an inflated σ, muting the score exactly when positioning has been most dramatic.
Both statistics also share one structural bias when computed on raw contract counts in a growing market: recent, bigger years dominate. The COT index explainer covers the percent-of-open-interest variant this site computes to correct for that.
Why 26, 52, and 156 weeks
A lookback is a claim about which history is relevant, so FuturesBench publishes three rather than choosing for you: 26 weeks (six months — reactive, and the window many commercial COT tools quote), 52 weeks (one full year, one seasonal cycle), and 156 weeks (three years — strict; readings past 90/10 on this window are what the extremes screener lists). Gold's current spread across the three — 58.0 / 26.4 / 46.1 — is itself informative: when the short windows read high and the long window doesn't, the "extreme" is recent and local. Exact computation rules, including minimum-coverage thresholds and the population-σ convention, are on the methodology page.
- Which is better, the COT index or the z-score?
- Neither dominates; they fail differently. The index is intuitive and bounded but saturates at records and hangs on two data points; the z-score uses the whole window and distinguishes record extremes, but assumes distributional behavior positioning data doesn't always have. Publishing both, plus percentiles, is the honest answer.
- Can the two disagree outright?
- Yes — a high index with a modest z-score is common after volatile stretches (a wide range with a fat σ), exactly as in the worked example above. The disagreement usually says more about the window's shape than about this week's number.
- What z-score counts as extreme?
- There is no official threshold. Under a normal distribution ±2 would be roughly the outer 5% — but positioning series are not reliably normal, which is why this site reports the value and leaves the adjective to the reader.
- Does FuturesBench use sample or population standard deviation?
- Population (divide by N), over 156 weekly reports, with the score suppressed when σ is zero or window coverage falls under 60%. All conventions are in the methodology.
Gold figures are live from the CFTC report dated 2026-07-21; the six-week table is an illustrative example series, not market data.