BetMath Hub
Poisson xG

Clean Sheet Probability

Calculate clean sheet, BTTS, and 0-0 draw probabilities using the Poisson-xG model. See fair odds for all outcomes.

Home Clean Sheet
30.1%
Away Clean Sheet
22.3%
BTTS
54.3%
0-0 Draw
6.7%
Fair Odds (Home CS)
3.32
Fair Odds (Away CS)
4.48
Fair Odds (BTTS)
1.84
Fair Odds (0-0)
14.88

Probability Split

Home Clean Sheet30.1%
Away Clean Sheet22.3%
BTTS (Both Score)54.3%
0-0 Draw6.7%

How Clean Sheet Probability Works

A clean sheet means a team concedes zero goals over the full match. Football goal counts are well approximated by the Poisson distribution, which gives the probability of observing exactly k events when the expected number is λ (lambda): P(k) = λᵏ × e^(−λ) / k!. Set k = 0 and the formula collapses — λ⁰ = 1 and 0! = 1 — leaving a single elegant term: P(0 goals) = e^(−λ). One number, the expected goals a defence will face, fully determines its clean sheet probability under this model. The same machinery drives our full Poisson score-matrix calculator; the clean sheet market is simply the k = 0 slice of it.

Orientation matters more than anything else here. The λ for the home team's clean sheet is the away team's expected goals — the home side keeps a clean sheet precisely when its opponent scores nothing. The away clean sheet, in turn, uses the home team's xG. The exponential shape is the key practical insight: every extra 0.7 goals of expected attacking output roughly halves the clean sheet probability, because e^(−0.7) ≈ 0.50. A defence facing 0.5 xG keeps a clean sheet 60.7% of the time; facing 1.0 xG, 36.8%; facing 2.0 xG, just 13.5%. Small errors in your xG estimate therefore produce large pricing errors, especially against strong attacks.

The same two lambdas price every related market on this page. Both teams to score requires each side to find the net at least once: BTTS = (1 − e^(−homeXG)) × (1 − e^(−awayXG)). The 0-0 scoreline requires two simultaneous clean sheets: P(0-0) = e^(−(homeXG + awayXG)). Note that 1 − P(0-0) is not BTTS — it is merely "at least one goal by anyone", a much larger number. Convert any probability into fair decimal odds with 1/p, then compare against the bookmaker's price — ideally after stripping the margin with the no-vig calculator and sizing any edge with the expected value calculator.

Your inputs decide everything, so source them carefully. Sum per-shot xG (FBref, Understat, WhoScored) over each team's last 10–15 matches, split home and away, and adjust for the specific opponent — a mid-table attack produces very different xG against a low block than against a high line. Team news is disproportionately important in this market: a missing first-choice goalkeeper or centre-back raises the effective λ a defence concedes. Finally, remember the model's limits. Poisson assumes goals arrive independently at a constant rate, but real matches have game states — a leading team defends, a trailing team chases. Corrections such as Dixon–Coles nudge 0-0 and other low-scoring probabilities upward relative to raw Poisson.

Clean Sheet Formula

P(0 goals) = e^(−λ)          (Poisson with k = 0)

Home clean sheet = e^(−awayXG)
Away clean sheet = e^(−homeXG)
BTTS  = (1 − e^(−homeXG)) × (1 − e^(−awayXG))
0-0   = e^(−(homeXG + awayXG))
Fair odds = 1 / probability

Example: homeXG = 1.5, awayXG = 1.2
  Home CS: e^(−1.2) = 30.1%    Fair odds 3.32
  Away CS: e^(−1.5) = 22.3%    Fair odds 4.48
  BTTS: 0.777 × 0.699 = 54.3%  Fair odds 1.84
  0-0:  e^(−2.7) = 6.7%        Fair odds 14.88

Worked Examples

Favourite vs Low Block

Home xG 1.9, away xG 0.7. Home clean sheet = e^(−0.7) = 49.7% (fair odds 2.01). Away clean sheet = e^(−1.9) = 15.0% (fair odds 6.69). BTTS = 0.850 × 0.503 = 42.8%, and 0-0 = e^(−2.6) = 7.4%. The favourite's clean sheet is almost a coin flip despite total domination — defences facing even 0.7 xG concede half the time.

Pricing an Edge (Hypothetical)

Your model says the home clean sheet is 49.7% — fair odds 2.01. A bookmaker offers 2.30, implying only 43.5%. Expected value per unit staked = 2.30 × 0.497 − 1 ≈ +14%. If you trust your xG inputs, that is a bet; if the book offered 1.85 instead, the implied 54.1% would exceed your estimate and you would pass.

Frequently Asked Questions

How is clean sheet probability calculated?

Clean sheet probability = e^(−λ), where λ (lambda) is the expected goals of the opposing attack. This comes from the Poisson distribution: P(goals = 0) = λ^0 × e^(−λ) / 0! = e^(−λ). If a defence faces 1.5 expected goals, its clean sheet probability is e^(−1.5) = 22.3%. Because the relationship is exponential, the probability falls quickly — at 2.0 xG faced it is already down to 13.5%.

Which xG value do I use for a home clean sheet?

Use the away team's expected goals. A home clean sheet means the away side scores zero, so the relevant lambda is the attacking output the away team is expected to produce in this fixture. Likewise, the away team's clean sheet probability uses the home team's xG. Mixing these up flips strong defences into weak ones, so always double-check the orientation before pricing anything.

Is 1 minus the 0-0 probability the same as BTTS?

No — this is a common mistake. 1 − P(0-0) is the probability that at least one goal is scored by anyone. BTTS (both teams to score) requires each side to score at least once: BTTS = (1 − e^(−homeXG)) × (1 − e^(−awayXG)). With 1.5 and 1.2 xG the correct BTTS probability is 54.3%, while 1 − P(0-0) would give a misleading 93.3%.

How do I turn a clean sheet probability into fair odds?

Fair decimal odds = 1 / probability. A 22.3% clean sheet probability corresponds to fair odds of 4.48. If a bookmaker offers more than the fair price implied by your model, the bet has positive expected value under that model; if it offers less, the margin and the market's opinion are working against you. Strip the vig from the market price before comparing.

How accurate is the Poisson clean sheet model?

It is a solid baseline, not a complete model. Poisson assumes goals arrive independently at a constant rate, while real matches have game states: teams protecting a lead sit deeper and chasing teams push forward. It also ignores red cards, injuries and rotation. Professional models add corrections such as Dixon–Coles, which slightly raises the probability of 0-0 and other low-scoring results relative to raw Poisson.

Where do I get reliable xG inputs?

Use per-shot xG data from sources such as FBref, Understat or WhoScored. Average each team's xG for and against over the last 10–15 matches, split by home and away, and adjust for opponent strength. Team news matters most in this market: a missing first-choice goalkeeper or centre-back can materially raise the xG a defence is expected to concede.

Related Tools & Guides