Two extra goals in 20 shots do not clear our noise band

Football held within the limits of a precision tolerance gauge

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

Noise band narrows as shot volume rises

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

  1. 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.
  2. Calculate the rate. Add the goals, subtract the total xG, and divide by the number of shots.
  3. Compare it with the correct row. A rate inside the middle 95% range fits ordinary sample noise. A rate outside is a review flag.
  4. 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

July

June

May

March

January

2025

December

November

October

September

August

July

June

May

April

March

February

January

2024

December

November

October

September

August

July

June

May

April

March

February

January

2023

December

November

October

September

August

July

June

May

April

March

February

January

Receive every new post in your inbox.