BTTS & Over/Under Calculator
Poisson-powered Both Teams to Score (BTTS) and Over/Under probabilities. Estimate expected goals for each team to derive fair odds, identify market mispricing, and find value bets in goal markets.
How It Works
Poisson Model
Goals follow a Poisson distribution. P(k goals) = e−λ × λk / k!. Each team's λ = their xG (expected goals). Joint probabilities come from multiplying home and away Poisson outcomes.
BTTS Formula
BTTS probability = P(home≥1) × P(away≥1) = (1−e−λH) × (1−e−λA). Clean sheet probability = e−λ. The 0-0 probability = e−(λH+λA).
The Math Behind Both Teams to Score
Both Teams to Score (BTTS, also sold as "Goal/Goal" or GG/NG) is a two-way market: will each side find the net at least once? Because it ignores who wins and by how much, it reduces a match to two questions — can the home attack beat the away defence at least once, and vice versa. The Poisson distribution answers both. If a team is expected to score λ goals, the probability it scores zero is e−λ, so the probability it scores at least once is 1 − e−λ. A side with 1.4 expected goals blanks in roughly a quarter of matches (e−1.4 ≈ 24.7%) — set λ well and everything else follows.
To price BTTS Yes, the calculator multiplies the two scoring probabilities together: (1 − e−λH) × (1 − e−λA). That multiplication is the independence assumption — it treats the home team's scoring as unrelated to the away team's. The complement, BTTS No, covers every match where at least one side blanks: a home clean sheet (e−λA), an away clean sheet (e−λH), with the 0-0 (e−(λH+λA)) counted in both — which is exactly why BTTS No = home CS + away CS − 0-0. Fair decimal odds are simply 1 divided by the probability.
The caveat: goals in a real match are not perfectly independent. Game state links them — a team that concedes first opens up and creates chances at both ends, while a team protecting a 1-0 lead often stops attacking. Empirically, very low-scoring results (0-0 and 1-1) occur slightly more often than an independent Poisson model predicts, which is why professional models apply a Dixon-Coles correction that inflates those cells of the score matrix. For BTTS the practical effect is that a raw Poisson estimate tends to be a touch optimistic on BTTS Yes in defensive, low-λ fixtures. The distortion is small in open matches, but worth respecting whenever your model edge is thin.
The full workflow: estimate each team's λ from expected-goals data (see the xG converter) over the last 10–15 matches, adjusted for venue and opponent strength; feed those λ values into this calculator; then compare the fair odds against the bookmaker's price. Books hold a margin on BTTS, so your fair price needs to beat the offer by more than the vig before a bet makes sense. Remember also that BTTS is heavily correlated with Over/Under goals — the Totals tab above prices those markets from the same λ inputs, and bookmakers reprice correlated same-game combinations for exactly that reason.
BTTS Formulas
P(team scores) = 1 − e^(−λ) BTTS Yes = (1 − e^(−λH)) × (1 − e^(−λA)) BTTS No = 1 − BTTS Yes Clean sheets: Home CS = e^(−λA) (away fails to score) Away CS = e^(−λH) (home fails to score) 0-0 = e^(−(λH + λA)) Fair odds = 1 / probability
Worked Examples
Home scores at least once 77.7% of the time (1 − e−1.5), away 69.9% (1 − e−1.2). BTTS Yes = 0.777 × 0.699 ≈ 54.3%, fair odds 1.84. If a bookmaker offers 1.95, expected value is 1.95 × 0.543 − 1 ≈ +5.9% — a genuine edge if your λ estimates are right.
Home scores 59.3%, away 55.1%. BTTS Yes drops to 32.7% (fair 3.06) and BTTS No is 67.3% (fair 1.49). The 0-0 alone runs at e−1.7 ≈ 18.3% — exactly the kind of fixture where the Dixon-Coles caveat warns the true 0-0 rate may sit even a little higher.
Frequently Asked Questions
How is BTTS probability calculated?
Each team's probability of scoring at least once is 1 − e^(−λ), where λ is its expected goals. BTTS Yes multiplies the two together: (1 − e^(−λH)) × (1 − e^(−λA)). With home λ = 1.5 and away λ = 1.2 that gives 0.777 × 0.699 ≈ 54.3%, or fair decimal odds of about 1.84.
What is the independence assumption in BTTS pricing?
Multiplying the two scoring probabilities assumes the home team's goals tell you nothing about the away team's. Real matches violate this mildly: game state, red cards and tactical shifts link the two scoring processes. The assumption is close enough for most fixtures, but it is an approximation, not a law.
Why does a raw Poisson model slightly misprice BTTS?
Across large samples, 0-0 and 1-1 results occur a little more often than independent Poisson predicts. The Dixon-Coles correction adjusts those low-score cells of the matrix. Since extra 0-0s are pure BTTS No outcomes, raw Poisson tends to marginally overrate BTTS Yes in low-scoring fixtures — treat thin edges there with caution.
Where should my expected goals (λ) inputs come from?
Use xG data from sources such as FBref, Understat or WhoScored rather than raw goals. Average each team's xG for and against over the last 10–15 matches, split by home and away, and adjust for opponent strength. Raw goal counts are noisy; xG stabilises much faster.
Is BTTS the same bet as Over 2.5 goals?
No. They overlap but settle differently: a 1-1 draw is BTTS Yes but Under 2.5, while a 3-0 win is Over 2.5 but BTTS No. The two markets are strongly correlated, though, which is why bookmakers reprice same-game combinations of them instead of simply multiplying the individual odds.