Preserve the xG definition
Opta's xG explainer describes one provider's shot-probability model and inputs. Other providers can include different features, event corrections and model versions, so two xG totals with the same label need not be interchangeable.
Store provider, model version where available, match and competition coverage, event timestamp, penalties policy, shot exclusions and the last match included. Never replace the pre-match snapshot with a later corrected total.
xG is an input, not the target answer
| Reader question | Additional model required |
|---|---|
| Team to win | Joint home and away score or result model |
| Over 2.5 goals | Distribution of total qualifying goals |
| Both teams to score | Joint probability both goal counts exceed zero |
| Correct score | Complete score grid with retained tail |
| Player to score | Player minutes, role, shot share and participation model |
A Poisson model is one possible transformation, but its assumptions must be tested. OpenStax defines the Poisson distribution, while the Dixon-Coles paper is primary football-score research addressing low-score dependence. Using a recent xG average directly as a Poisson rate is an assumption, not a provider definition.
Chronological modelling workflow
- Define the market outcome and qualifying period.
- Freeze provider events available before the decision.
- Build opponent, venue, lineup and recency features without future data.
- Estimate a complete score or event distribution.
- Derive the requested market probability from that distribution.
- Validate calibration on later, untouched matches.
- Record the accepted market price and full settlement contract.
scikit-learn's TimeSeriesSplit documentation explains chronological validation, and its calibration guide explains reliability checks for probability outputs.
Worked accumulator sensitivity check
Suppose a validated model, not raw xG totals, produces illustrative Over 2.5 probabilities of 0.57, 0.54 and 0.61 for three different matches. Under an explicit independence assumption:
Joint probability = 0.57 * 0.54 * 0.61 = 0.1878, or about 18.78%
At accepted combined decimal price 5.50:
Raw break-even probability = 1 / 5.50 = 0.1818, or about 18.18%
Under OpenStax's independence condition, the calculated model-price gap is only about 0.60 percentage points before any dependence adjustment. Small changes to an input can remove it; the example is deliberately sensitivity-focused and is not a forecast.
Dependence and failure checks
OpenStax's independence rule is not satisfied merely because fixtures differ. Shared weather systems, competition incentives, lineup news, provider errors and model parameters can connect forecasts. Check that the joint probability does not exceed any marginal probability and that the complete score grids sum to one.
Next step
Use Xg Explained for the next part of this topic.
Continue learning
- Next guide: World Cup 2026 Group Winner Modelling
- Related guide: Boxing Day Accumulators
Assumptions and limitations
xG models describe chance quality under their own definitions. They do not capture every tactical, lineup, goalkeeper or game-state factor, and historical calibration can decay. No xG threshold or accumulator structure is universally profitable.

