
Understanding expected goals (xG) and the story behind shots
Expected goals (xG) is a statistical estimate of how many goals a team or player should have scored from the shots they took, based on historical outcomes of similar chances. Shot-based metrics extend xG by measuring chance quality (xG per shot), shot volume, shot location, body part, assist type and goalkeeper positioning. Together these metrics describe the quality and quantity of a team’s attacking opportunities, which is essential context for anyone working on soccer betting analysis.
For bettors, xG reframes raw scorelines: a 1-0 win can hide a dominant xG advantage or a lucky escape. Reading those underlying numbers helps separate sustainable performance from random variance — a core skill for identifying value across markets such as match result, over/under goals, both teams to score (BTTS), Asian handicap and correct score.
How xG and shot metrics translate to common betting markets
Below are practical ways these statistics connect to the most common pre-match markets. Each explanation includes what to look for and an initial, low-complexity approach.
-
Match result (1X2) and Asian handicap
Compare teams’ recent xG for and against, adjusted for home/away. A team consistently producing higher xG but losing suggests positive regression potential — a candidate to back at favorable odds. For Asian handicap, convert expected goals into win probabilities with simple models (see next part) to judge if the market over- or under-values one side.
-
Over/Under goals
Use combined match xG (home xG + away xG) as a baseline for expected total goals. A low sample combined with high-shot-quality spikes or many shots from the penalty area increases over probability. Conversely, low xG and poor shot locations favour under markets.
-
Both teams to score (BTTS)
BTTS relates to each side’s xG conceded and created. If both teams produce consistent non-trivial xG and concede high-quality chances, BTTS probability rises. Look at xG per shot conceded to detect leaky defences that might not yet show in clean-sheet counts.
-
Correct score
Correct-score markets are high variance. Use per-team xG distributions (e.g., Poisson approximations from xG) to build a probability table, but recognise the large uncertainty: small xG differences can still flip low-probability scorelines.
Quick practical checks, recommended data sources and early modelling ideas
Before placing money, bettors should: look at 6–12 match rolling xG averages (team and opponent-adjusted), examine shot location heatmaps and set-piece frequency, and cross-check injuries or tactical changes that affect chance creation. Reliable sources include event-data providers and public aggregators that publish xG and shot maps; choose providers that document their xG model methodology.
Simple starter models: (1) convert team xG per match into Poisson goal probabilities; (2) adjust for home advantage and recent form; (3) combine two fitted distributions for match totals or outcome probabilities. These give quick, comparable probabilities to market odds and help flag potential value.
Important limitations — small sample sizes, differences in xG models, penalties and red cards, tactical context and goalkeeper variance — mean xG is a guide, not a guarantee. Bet sizing should be conservative: use unit staking, set clear limits and never exceed bankroll rules.
Next, the guide will detail step-by-step modelling methods, concrete examples converting xG into market probabilities, and templates for identifying value in match result, over/under, BTTS, Asian handicap and correct score markets for practical soccer betting.
Step-by-step: converting xG into actionable match probabilities
Below is a compact, reproducible pipeline you can implement in a spreadsheet or script to turn team xG into probabilities for match result, totals and BTTS.
- Estimate each team’s expected goals (λ): use a rolling average (6–12 matches) of team xG for and xG against, adjusted for home/away. Optionally regress each team’s λ toward the league mean to limit small-sample noise.
- Model goals for each side as Poisson(λ): treat home and away goals as independent Poisson variables with their respective λ. This gives P(Home = k) and P(Away = k) for k = 0…6 (truncate at a reasonable cap).
- Build a scoreline matrix: compute joint probabilities P(Home=k, Away=j) = P(Home=k) × P(Away=j). Sum matrix cells to get market-relevant probabilities:
- Home win = sum of cells where k>j
- Draw = sum where k=j
- Away win = sum where k
- Total goals = sum cells grouped by (k+j)
- BTTS probability: compute 1 − P(Home=0) − P(Away=0) + P(Home=0)×P(Away=0) (equivalently 1 − P(one or both score zero)).
- Asian handicap and correct-score: use the scoreline matrix to calculate probabilities of win-by-margin (useful for handicaps) and direct correct-score probabilities. For Asian lines like −1, split outcomes into win by ≥2 (win), win by 1 (push), draw/lose (loss).
- Compare to market odds and compute value: implied probability = 1 / decimal odds. Edge = model probability − implied probability. Positive edge suggests value; compute expected value (EV) = edge × payout (or use model probability × odds − 1).
Notes: Poisson independence is a first approximation. For low-scoring games and leagues with strong scheduling effects, consider Dixon-Coles adjustments or simulate correlated outcomes via copulas or bivariate Poisson if you want to refine probabilities.
Templates for identifying value across the main markets
Use these quick templates to prioritise opportunities so you don’t screen every market the same way.
- 1X2 / Asian handicap: flag matches where your model’s home/draw/away probabilities diverge from implied odds by a set threshold (e.g., >3 percentage points). For Asian lines, translate your scoreline table into margin probabilities and price each handicap; look for lines with >2–3% edge after accounting for vig.
- Over/Under goals: derive total-goal distribution from the score matrix. Compare P(total > market line) with market odds. Also check variance: low λ with heavy tail (many high-quality shots recently) can justify backing overs despite modest mean.
- BTTS: use your BTTS probability and consider goalkeeper and set-piece context. If model gives BTTS 0.62 and market implies 0.55, this is a straightforward edge—especially in games where one side concedes high xG but has been lucky recently.
- Correct score: only target when model assigns noticeable probability to a narrow set of outcomes and the market inflates those odds. Calculate EV per scoreline; because variance is extreme, require a larger edge (e.g., >10%) before staking meaningful units.
Data sources: StatsBomb (open data), Understat, FBref (StatsBomb/Opta-based), Opta/Wyscout (paid) and league providers. Prefer datasets that document their xG model and include shot qualifiers (penalties, set pieces).
Practical tuning: weight recent matches more heavily (exponential decay), separate penalties from open-play xG, and backtest on past seasons computing calibration (e.g., Brier score). For staking, use flat units or a conservative fractional Kelly (e.g., 10–25% of full Kelly) with strict bankroll caps (1–2% maximum per bet) and detailed record keeping.
Before you place a bet: a quick checklist
- Confirm sample robustness — prefer 6–12 match rolling xG and check for recent tactical or personnel changes that invalidate older data.
- Separate penalties and set-piece xG from open-play numbers when those factors matter for the market you target.
- Adjust for home advantage and league context; cross-check with multiple xG providers if possible to spot model differences.
- Convert your model probabilities to implied odds, subtract the bookmaker vig, and calculate edge and expected value before staking.
- Choose markets that match your model’s strengths (e.g., BTTS if you model defensive leakiness well; totals if you model shot volume and quality reliably).
- Apply a conservative staking plan (flat stakes or fractional Kelly), set loss/lifetime limits, and keep detailed records for ongoing evaluation.
Putting it into practice
Use the methods in this guide as a toolkit rather than a guaranteed formula. Start small, backtest on historical matches, and iterate—refining data inputs, tuning decay rates for recent form, and adjusting for known model blind spots like penalties and red cards. Treat xG and shot-based metrics as a lens that improves decision-making; they will reveal edges more often than they provide certainty.
Above all, practise disciplined bankroll management and responsible gambling. Expect variance, accept that even strong edges lose in the short run, and let consistent, evidence-driven evaluation guide how you scale stakes. If you keep testing, learning and recording results, you’ll turn the conceptual advantages of xG into practical, manageable betting decisions.
