What Is a Z-Score? Positioning Against Its Own History
What is a z-score? It tells you how unusual a number is compared with its own past: how many standard deviations it sits above or below its average. In COT data that matters, because a net position of 80,000 contracts means nothing until you know what is normal for that market.
The positions themselves are the CFTC’s, week by week, on COT report for forex and on each currency’s page, such as the New Zealand dollar COT report.
The calculation
Take this week’s value, subtract the average, and divide by the standard deviation.
The average and the standard deviation come from a lookback window you choose, say the last three years of weekly reports. The standard deviation is, roughly, the typical distance between a week and that average. A market whose position swings wildly has a large one; a quiet market has a small one.
Say a market’s net position has averaged +20,000 contracts over your window, with a standard deviation of 35,000. This week it prints +115,000. These numbers are invented.
- Subtract the average: 115,000 − 20,000 = 95,000 above normal.
- Divide by the standard deviation: 95,000 ÷ 35,000 ≈ 2.7.
The z-score is +2.7. The funds are 2.7 standard deviations longer than usual. A negative z-score works the same way on the short side, and 0 is exactly average.
What the number means
If positioning followed a normal distribution, +1 would sit at about the 84th percentile, +2 at about the 97.7th, and about 95% of weeks would fall between −2 and +2 (NIST normal table). That is where the habit of calling ±2 “extreme” comes from.
COT positioning doesn’t follow a normal distribution. It trends, it can be lopsided, and it can sit near one end for years. Treat those percentages as a rough guide. If you want the real share of history, use a percentile, which ranks the week against the weeks that actually happened.
Why rescale at all
Because markets are different sizes. Imagine funds are net long 150,000 euro contracts and 30,000 New Zealand dollar contracts. The euro position looks five times bigger.
Now put each against its own history, again with invented numbers. The euro has averaged 40,000 with a standard deviation of 55,000, so its z-score is (150,000 − 40,000) ÷ 55,000 = 2.0. The New Zealand dollar has averaged −5,000 with a standard deviation of 12,000, so its z-score is (30,000 + 5,000) ÷ 12,000 ≈ 2.9.
The small position is the more stretched one. That is the whole point of a z-score: it puts every market on the same scale, so a list of currencies can be read side by side.
The window changes the answer
Here is a real week. On 9 July 2024 leveraged funds were net short about 110,600 Japanese yen contracts (CFTC TFF futures-only data). Measure that against three different windows, each ending that week:
- The last 52 weeks: average about −62,000, standard deviation 24,000, z-score −2.0.
- The last three years: average about −45,000, standard deviation 23,000, z-score −2.9.
- The last ten years: average about −31,000, standard deviation 38,000, z-score −2.1.
Same week, same position, and the answer runs from “unusual” to “very unusual”. The ten-year window includes 2015 and 2017, when the funds were even a little shorter, so it has seen this before. In the one-year window the funds were short every week, often deeply, so this week stands out less there too.
Across whole markets the window matters even more. Take the leveraged funds’ net position in seven currency futures, the euro, yen, pound, Swiss franc and the Canadian, Australian and New Zealand dollars, over the 3,798 weeks from May 2016 to October 2026 in which all three windows exist, and count the weeks beyond ±2 (CFTC TFF futures-only data):
- The last 52 weeks: 9.5% of weeks.
- The last three years: 8.6%.
- The last ten years: 4.1%.
The normal table says about 4.6%, so the shorter windows call about twice as many weeks extreme as that table suggests. Market by market it varies more. For the euro the share falls from 13.6% of weeks with a one-year window to 0.6% with ten years. For the New Zealand dollar it hardly moves, at about 10% to 12% in all three. And in 15% of all weeks the three windows disagree about whether that week is extreme at all.
No window is the right one. Pick one, keep it, and when you see a z-score on someone else’s chart, find out which window it uses before you compare it with yours.
Three ways to misread a z-score
- Treating it as a timer. Selling because a reading is past −2 or +2 and “it must revert”. On 16 April 2024 the three-year z-score of that same yen short was about −3.5, more stretched than in July. The dollar still climbed from 154.57 yen that day to 161.73 on 10 July (Federal Reserve noon rates, via FRED).
- Forgetting the window. A short window can make an ordinary week look extreme, and a long one can hide a change that matters now.
- Reading the z-score of the wrong thing. A z-score of the net position and a z-score of its weekly change answer different questions. The first asks how crowded the trade is. The second asks how fast it is moving.
How an extreme fits with the other warning signs, how that yen short ended and how often extremes in seven currencies have turned since 2009 is in COT Data Reversals.