Model transparency · xG V1

How well does xG measure scoring chances?

We measure probability quality and whether summed xG matches goals. Most attempts do not score, so “no goal” accuracy alone tells very little.

Since V1 was frozen

Completed regular-season games starting after Oct 14, 2026, 06:58 UTC. Historical backfills before this date stay out of this comparison.

2 / 2 eligible completed games fully scored. Reports refresh within five minutes of new scores.

Summed xG11.56161 included attempts
Actual goals13
xG minus goals-1.44Positive = estimated too high
Probability qualityV1Constant baseline
Log loss ↓0.25730.2820
Brier score ↓0.07010.0744
ROC-AUC ↑0.7292—
Average precision ↑0.2423—
Calibration error (ECE) ↓0.0353—

Live calibration

Predicted goal chanceActual goal rate

Similar lengths mean better agreement.

0–10%118 attempts
3.9%
5.1%
10–20%34 attempts
13.9%
8.8%
20–30%8 attempts
23.4%
50.0%
30–40%1 attempts
39.0%
0.0%
Saved development benchmark

What we saw while building V1

These saved chronological splits helped us develop and compare the model. The test results were reviewed during model choice; treat this as a development benchmark, not an untouched final evaluation.

SplitLog loss ↓Baseline loss ↓Brier ↓ROC-AUC ↑Average precision ↑
Training0.20760.24590.05660.79460.2413
Validation0.21120.24460.05700.77710.2212
Test0.21830.24890.05900.76530.2044

Development test calibration

Predicted goal chanceActual goal rate

Similar lengths mean better agreement.

0–10%69554 attempts
3.7%
3.6%
10–20%19615 attempts
14.0%
13.1%
20–30%4490 attempts
23.6%
20.5%
30–40%772 attempts
33.7%
30.6%
40–50%314 attempts
44.7%
43.9%
50–60%139 attempts
54.0%
49.6%
60–70%29 attempts
64.9%
75.9%
70–80%16 attempts
75.1%
75.0%
80–90%2 attempts
81.0%
100.0%
Saved goal totals by split
SplitAttemptsGoalsSummed xGxG minus goals
Training1558071044310445.512.51
Validation9300261906381.94191.94
Test9493164716912.65441.65
What do the metrics mean?

Log loss and Brier score: how close the predicted chances were to what happened. Lower is better. Log loss penalizes very confident mistakes more strongly.

Constant baseline: every attempt gets the same 6.70% chance, using only V1's training goal rate.

ROC-AUC and average precision: can the model give goals higher scores than non-goals? Higher is better. They need goals in the sample; ROC-AUC also needs non-goals.

Calibration: among attempts given a 10% chance, roughly 10 in 100 should score. Bin counts show how much evidence each bar has. Small groups are noisy. ECE averages those gaps and can hide problems in rare high-chance shots.

Summed xG: expected goals across included attempts. A positive xG-minus-goals value means the model estimated more goals than occurred. Empty-net attempts, blocked shots and shootouts are excluded throughout.