Two extra goals in 20 shots do not clear our noise band
17 July 2026
How many shots does it take before a striker’s finishing above or below xG deserves attention? Using 99,746 open-play, non-penalty shots, we estimate the normal noise ranges at 10, 20, 40 and 80 shots—and show you how to use them.
You can download the full results as a raw data file.
The rule is short. Take the striker’s goals, subtract the total xG of the open-play, non-penalty shots, and divide by the number of shots. Compare that per-shot rate with the band for the same shot count below.
A rate inside the band fits ordinary sample noise. A rate outside it is a reason to look at the player more closely. Flag results that fall outside for further review, but never treat the comparison as a verdict.
Quick reference: how far noise alone can move finishing
These are the middle 95% bands for goals minus xG per shot, across all chance types. They come from 20,000 simulated samples per shot count, built from real player shot windows. Each band contains the middle 95 out of every 100 simulated samples.
| Shots | Middle 95% band (per shot) | In goals over the window |
|---|---|---|
| 10 | -0.140 to +0.196 | about -1.4 to +2.0 |
| 20 | -0.105 to +0.138 | about -2.1 to +2.8 |
| 40 | -0.079 to +0.092 | about -3.1 to +3.7 |
| 80 | -0.059 to +0.066 | about -4.8 to +5.3 |

Look at the bolded 20-shot row, the common scouting case. After 20 shots, a striker can sit two goals above or below expectation on noise alone.
Bands here are rounded to three decimals. The exact values, and separate rows by chance quality, sit in the appendix table.
You need two terms for the whole method. Expected goals, or xG, estimates each shot’s chance of becoming a goal; a 0.20 xG shot has an estimated 20% chance. Goals minus xG per shot is the average gap between outcomes and those estimates.
A 20-shot worked example
Suppose a striker takes 20 shots worth 4.00 xG and scores five goals. He finishes one goal above expectation.
Divide that one-goal gap by 20 shots. His goals minus xG per shot is +0.050.
The 20-shot middle 95% band runs from -0.105 to +0.138. His +0.050 sits inside it, so the run fits ordinary sample noise. No flag, no verdict.
The four-step scouting workflow
- Choose the matching shot window. Use 10, 20, 40 or 80 open-play, non-penalty shots. Match the chance-quality row when the shot xG values are available.
- Calculate the rate. Add the goals, subtract the total xG, and divide by the number of shots.
- Compare it with the correct row. A rate inside the middle 95% range fits ordinary sample noise. A rate outside is a review flag.
- Review the football evidence. Check the role, chance quality and video. Also check injury, opposition, data coverage and physical context.
Use the band as one flag. Put it beside video, role, chance quality and physical context rather than above them.
What a result outside the band can and cannot mean
An outside-band result is only a reason to look closer. It does not prove finishing skill, poor finishing or decline.
Start the review with the shots themselves. Check body part, first-time contact, pressure, angle, goalkeeper position, defenders on the shot line and the action before the shot.
Then look for role changes, injuries, unusual opposition and gaps in data coverage. Ask whether the xG model captures those conditions well.
Keep three properties in mind when reading a result.
The band must match the shot count. The same rate reads differently at different volumes. A rate of +0.10 is inside the middle 80% range after 10 shots, but beyond the middle 95% range after 40.
The same total gap shrinks per shot as volume grows. Two goals above xG after 10 shots is just beyond the overall middle 95% upper limit. Two goals above xG after 80 shots equals +0.025 per shot, inside the central ranges.
Chance quality matters. Low-xG shot windows have little room to finish far below expectation because their total xG is small. High-xG windows can fall further below when several good chances are missed.
If the candidate’s exact xG sequence is available, simulate that sequence for a closer match. The published rows are the common reference points.
Data and scouting context
The underlying events come from StatsBomb Open Data at commit b0bc9f22dd77. StatsBomb supplies the fixed xG inputs, not this report’s method or limits.
Marc Lamberts, a football data analyst, built a scouting model for Japan’s second and third tiers that shows why uncertainty belongs in a scouting workflow. It separates a striker profile from confidence in the available evidence.
FIFA’s talent-identification guide places data beside structured live and video observation. That supports the mixed review described above.
A StatsBomb article on finishing skill discusses small samples and missing shot context. It is useful background, but it is not evidence for this study’s limits.
Tactics Journal method appendix
This appendix is the full technical record for verification and reproduction. The practical guidance above stands alone, so skip this section unless you need to check or rerun the study.
Study question and eligible shots
The fixed question asked how uncertain a finishing assessment is after 10, 20, 40 or 80 shots. The study measures expected sample noise in goals minus xG per shot.
It does not measure player quality. It also does not test whether past finishing continues in the future.
The data contained 99,746 eligible shots. Every shot was open play, was not a penalty, and had fixed xG plus the required fields.
The process excluded 1,481 penalties. Own goals, unusable xG values and records without an assignable player were also ineligible.
The study did not access observed shot outcomes. It generated new goal or miss outcomes from the fixed xG values.
Exact simulation method
The study used chronological windows. These are each player’s real shots in time order, grouped into sets of 10, 20, 40 or 80.
For every shot count and chance-quality group, the program made 20,000 simulated samples. Each sample selected one retained player window at random, with every retained window having the same chance of selection.
The program then simulated each shot independently from its xG. This was a Bernoulli trial, meaning one random goal-or-miss result with the goal chance set by xG.
The measured rate was R = (simulated goals − sum xG) / n. Here, n is the number of open-play, non-penalty shots.
A positive R means the simulated goals were above the window’s total xG. A negative R means they were below it.
The random seed was 4728. A fixed seed makes the same random process repeatable.
Chronological windows keep together the mix of chances that a player took. After each shot’s xG was fixed, its generated outcome was independent of every other shot.
A window first had to pass the capacity check. This check asked whether enough real shots existed to build a window of the requested size.
Next came the player-share safeguard, called the dominance gate in the artifact. “Dominance” here means one player supplying too much of a result group.
Each valid group needed at least 10 contributing players. A fixed cap also kept every player at or below 10% of retained windows in that group.
The program sorted all eligible shots by xG and source order. It then split them into three rank-balanced chance-quality groups with nearly equal shot counts.
These thirds are called xG terciles in the artifact. The low group had 33,248 shots. The middle and high groups each had 33,249.
The two xG boundaries were exactly 0.03559459 and 0.08242022. Stable sorting means equal values kept the same fixed source order.
Windows tied at a boundary used their fixed window key to settle the order. This prevented ties from changing between runs.
Exact range procedure
The program sorted all 20,000 generated rates from low to high. It took each range endpoint directly from that list without estimating a value between two entries.
The exact index rule was floor(p × (N − 1)). Here, p is the chosen position, N is 20,000, and floor means round down to the nearest whole index.
The artifact calls this an exact sorted empirical quantile procedure. “Empirical” means based on the generated results themselves. A “quantile” is a cutoff at a chosen position in a sorted list.
This procedure produced the middle 50%, 80% and 95% ranges below.
All validated result rows
These are all 16 actual_windows rows in the artifact. “Retained windows” are the windows left after the player-share cap.
“No-go” means the group failed the player-share safeguard. It is not a missing value and was not filled in.
| Shots | Chance group | Retained windows | Contributing players | Middle 50% | Middle 80% | Middle 95% |
|---|---|---|---|---|---|---|
| 10 | overall | 7,639 | 2,439 | -0.060815 to 0.050239 | -0.095662 to 0.118039 | -0.140130 to 0.196185 |
| 10 | low | 495 | 351 | -0.031223 to 0.064406 | -0.033999 to 0.072726 | -0.035183 to 0.165955 |
| 10 | mid | 2,886 | 1,500 | -0.058436 to 0.042623 | -0.072379 to 0.121006 | -0.079898 to 0.156064 |
| 10 | high | 4,258 | 1,572 | -0.083520 to 0.066853 | -0.112945 to 0.121660 | -0.151724 to 0.208814 |
| 20 | overall | 3,031 | 1,418 | -0.042748 to 0.037543 | -0.070885 to 0.083331 | -0.104753 to 0.137560 |
| 20 | low | 105 | 91 | -0.029808 to 0.021472 | -0.032864 to 0.066171 | -0.034758 to 0.076196 |
| 20 | mid | 1,065 | 693 | -0.039850 to 0.030863 | -0.063404 to 0.072117 | -0.077124 to 0.121075 |
| 20 | high | 1,861 | 909 | -0.047467 to 0.043925 | -0.084451 to 0.091569 | -0.114369 to 0.147311 |
| 40 | overall | 1,020 | 633 | -0.030207 to 0.027383 | -0.052988 to 0.057533 | -0.078741 to 0.091612 |
| 40 | low | 14 | 14 | -0.021363 to 0.017138 | -0.033405 to 0.040798 | -0.035193 to 0.065798 |
| 40 | mid | 321 | 263 | -0.026092 to 0.023425 | -0.045482 to 0.048978 | -0.062313 to 0.078933 |
| 40 | high | 683 | 401 | -0.034020 to 0.031114 | -0.059759 to 0.062538 | -0.086758 to 0.099756 |
| 80 | overall | 252 | 175 | -0.021176 to 0.020303 | -0.039080 to 0.040916 | -0.059486 to 0.065901 |
| 80 | low | 0 | 2 | no-go (player-share safeguard) | — | — |
| 80 | mid | 56 | 53 | -0.018320 to 0.017061 | -0.031932 to 0.033681 | -0.046107 to 0.055723 |
| 80 | high | 187 | 127 | -0.023178 to 0.021043 | -0.041908 to 0.043211 | -0.061569 to 0.067062 |
The low-xG 80-shot group had only two raw windows from two players. It needed at least 10 contributing players, so its result is no-go.
The artifact also includes two checks. The first pooled the xG values, meaning it mixed the retained values before drawing new shot sets.
The second removed one competition at a time and repeated the work. Both checks produced similar overall patterns.
Checksums and reproduction
The raw JSON file SHA-256 is 8fa9a55714e4aaeb30a69e8a9161687a96dd374588a72c65a70b417354c3360f. SHA-256 is a file fingerprint used to detect any change.
Its canonical checksum is 077c94509a25a17fe51db4fb4dd85aba3cb2ee84aab3a795183ed6a2dc7dd41b. “Canonical” means it was calculated from the fixed standard form of the artifact data.
The exact reproduction command follows.
python original_research.py --study shot-volume-uncertainty --cache-dir <ignored-full-statsbomb-cache> --input-manifest <full-retrievable-input-manifest.json> --capacity-artifact <locked-full-capacity-artifact.json> --candidate-id 4728 --artifact-dir report_runs --code-commit <git-sha>
Limits
These ranges apply only to generated outcomes under the fixed StatsBomb xG values. Generated results are not the inaccessible observed results.
The study assumes those xG values give the correct goal chances. It does not test that assumption.
Another provider’s xG model can produce different ranges. Its values should be tested again rather than judged against these limits.
The study covers open-play, non-penalty shots. It makes no claim about true finishing ability, future results, coaching, mentality or cause and effect.
It also makes no player verdict. Profiles built from another dataset need their own test.
2026
August
- 4th
July
- 29th
- 27th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 17th
- 17th
- 16th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 7th
- 6th
- 5th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
June
- 30th
- 30th
- 29th
- 29th
- 29th
- 28th
- 28th
- 27th
- 26th
- 26th
- 25th
- 24th
- 24th
- 23rd
- 22nd
- 21st
- 21st
- 21st
- 20th
- 19th
- 19th
- 18th
- 17th
- 17th
- 16th
- 15th
- 15th
- 14th
- 14th
- 13th
- 13th
- 12th
- 12th
- 11th
- 11th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
May
- 31st
- 31st
- 30th
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
-
How analysts should measure whether high pressing is creating control or exposing transition attacks11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
- 1st
March
- 24th
January
- 18th
2025
December
- 21st
- 16th
- 7th
- 3rd
November
- 29th
- 24th
- 20th
- 14th
- 12th
- 8th
- 7th
- 4th
- 2nd
October
- 31st
- 28th
- 22nd
- 20th
- 19th
- 12th
September
- 30th
- 28th
- 26th
- 24th
- 23rd
- 20th
- 18th
- 16th
- 14th
- 4th
- 3rd
- 1st
August
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 20th
- 17th
- 14th
- 12th
- 10th
- 8th
- 4th
July
- 10th
- 5th
- 4th
June
- 29th
- 14th
- 13th
- 12th
- 2nd
May
- 29th
- 25th
- 22nd
- 20th
- 15th
- 8th
April
- 30th
- 9th
March
- 28th
- 5th
February
- 26th
- 20th
- 19th
- 12th
- 8th
January
- 31st
- 30th
- 16th
- 12th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
2024
December
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
November
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 18th
- 16th
October
- 21st
- 12th
- 11th
- 9th
- 7th
- 6th
- 4th
- 3rd
- 2nd
- 1st
September
- 30th
- 29th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 4th
- 3rd
- 2nd
- 1st
August
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 20th
- 19th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
July
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 15th
- 14th
- 13th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
June
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
May
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
April
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 3rd
- 2nd
- 1st
March
- 31st
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 1st
February
- 28th
- 27th
- 26th
- 25th
- 23rd
- 22nd
- 21st
- 20th
- 18th
- 15th
- 14th
- 13th
- 12th
- 11th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
January
- 31st
- 30th
- 29th
- 28th
- 27th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
- 2nd
- 1st
2023
December
- 31st
- 29th
- 28th
- 27th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 13th
- 12th
- 11th
- 10th
- 8th
- 7th
- 6th
- 4th
- 3rd
- 2nd
- 1st
November
- 30th
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
October
- 31st
- 30th
- 29th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 19th
- 17th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 1st
September
- 30th
- 28th
- 26th
- 25th
- 24th
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 9th
- 3rd
August
- 31st
- 28th
- 27th
- 26th
- 21st
- 20th
- 15th
- 14th
- 13th
- 12th
- 7th
- 4th
- 3rd
July
- 31st
- 30th
- 28th
- 27th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 12th
- 11th
- 10th
- 9th
- 8th
- 7th
- 6th
- 5th
- 4th
- 3rd
June
- 11th
- 10th
- 7th
- 5th
- 4th
- 1st
May
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 21st
- 20th
- 19th
- 18th
- 17th
- 16th
- 15th
- 14th
- 13th
- 11th
- 10th
- 9th
- 8th
- 7th
- 5th
- 4th
- 3rd
- 2nd
- 1st
April
- 29th
- 28th
- 27th
- 26th
- 25th
- 24th
- 23rd
- 22nd
- 22nd
- 21st
- 20th
- 2nd
March
- 6th
February
- 27th
- 20th
- 5th
January
- 19th
Receive every new post in your inbox.
Subscribe to receive Research reports and the Weekly Recap by email. By continuing, you agree to our Privacy Policy and Terms of Service.