Is it real?
When does a hot streak mean something?
Every stat is part skill, part luck. These numbers say how many shots or games it takes before the skill part wins.
How long until it's real
| Stat | Half signal at | Unit | League avg |
|---|---|---|---|
| 3P% | 500 | 3-point attempts | 36.3% |
| FT% | 26 | free throw attempts | 79.3% |
| TS% | 220 | shooting possessions | 58.4% |
| Rim FG% | 86 | shots at the rim | 66.8% |
| Points per game | 0.9streaks: 10 | games | 10.9 |
Half signal at: the sample size where a player's number is half skill, half luck (reliability 0.5). League avg and spread are across players with a full sample (100+ attempts, 200+ shooting possessions or 20+ games).
Reliability vs sample size
Does it predict better?
| Stat | Window | Players | Window as is | Likely true |
|---|---|---|---|---|
| 3P% | 5 games | 232 | 10.4 pts | 4.4 pts |
| 3P% | 10 games | 201 | 7.4 pts | 4.6 pts |
| 3P% | 20 games | 106 | 6.0 pts | 4.5 pts |
| FT% | 5 games | 225 | 14.5 pts | 6.3 pts |
| FT% | 10 games | 198 | 9.7 pts | 5.9 pts |
| FT% | 20 games | 105 | 7.2 pts | 6.0 pts |
| TS% | 5 games | 263 | 7.8 pts | 3.8 pts |
| TS% | 10 games | 224 | 5.8 pts | 3.8 pts |
| TS% | 20 games | 117 | 4.7 pts | 3.7 pts |
| Points per game | 5 games | 263 | 2.62 | 2.07 |
| Points per game | 10 games | 224 | 2.21 | 1.99 |
| Points per game | 20 games | 117 | 2.21 | 2.17 |
Test: for each player, take games 31 to 30 + window, use games 1 to 30 as his season so far, and compare each guess with what he did in the rest of the season. Lower is better. Shooting misses are in percentage points; points misses are in points per game.
How this works
The method. For every player with enough 2025-26 regular-season shots, we split his attempts at random into two equal halves (for TS% and points, his games) and check how well one half predicts the other across all players. That correlation is the reliability at that sample size. We repeat it 200 times at several sizes and fit the curve reliability = n / (n + M). M is the stabilization point: the sample where reliability is 0.5. The Spearman-Brown formula links sizes: a sample k times larger has reliability k r / (1 + (k - 1) r).
Likely true level. (made + M x prior) / (attempts + M). The prior is the player's own rate in his other games this season, itself pulled toward the league average with M attempts of weight, so a player with few other games leans on the league. The 80% range comes from a Beta distribution with those counts. For points, the range uses a normal curve with the typical game-to-game swing (56% of a player's average).
What we measured. 3P% is half signal at about 500 3-point attempts; FT% is half signal at about 26 free throw attempts; TS% is half signal at about 220 shooting possessions; Rim FG% is half signal at about 86 shots at the rim. Points per game separate players almost at once (0.9 game), because minutes and role differ so much. A points streak against a player's own season is slower: about 10 games, so the Form page uses that number. In the backtest, the likely true level beat the raw window for every stat and window size, for example 3P% over 10 games missed by 4.6 points instead of 7.4.
What it cannot see. Real changes in role, minutes, health, shot mix or the defense faced: the model treats every attempt as the same kind of shot, so a player who really did change can look like noise for a while. Reliability across players tells you how fast players separate from each other, not exactly how fast one player's change shows up. Players who shoot a lot are mostly good shooters, so the curves for big samples use fewer, more similar players (the 3P% dots bend down at 150+ attempts for this reason). TS% is treated as points per two shooting possessions, which is close but not a true yes-or-no rate. One season of data, and the stabilization points were measured on that whole season, including the later games the backtest predicts, so the test is a little kinder than a true look ahead would be. Early in a new season a player has few other games, so his likely true level leans on the league average.
See it per player on any Form page, for example from the stats table.