Define BTTS exactly
Confirm regulation time, own goals, awarded results, abandoned matches and the official result source. Betfair's football rules and DraftKings' soccer rules are current operator examples; the accepted product's contract controls.
For a score grid, BTTS Yes is the sum of cells where both teams score at least one. It can also be checked as:
P(BTTS Yes) = 1 - P(home scores 0) - P(away scores 0) + P(0-0)
The two calculations should agree apart from rounding. Retain the high-score tail so grid truncation does not inflate low-score probabilities.
From football evidence to probability
A Poisson score model is one possible method, but OpenStax's Poisson definition makes its distributional assumptions explicit. The Dixon-Coles paper is primary football research addressing dependence in low scores. A recent BTTS percentage or xG total is an input, not the finished probability.
Validate forecast probabilities by range using scikit-learn's calibration guidance. Keep competition, season, provider and cutoff fixed during evaluation.
Worked three-match check
Suppose three illustrative, chronologically generated BTTS probabilities are 0.56, 0.52 and 0.58. Under an explicit independence assumption:
Joint probability = 0.56 * 0.52 * 0.58 = 0.1689, or about 16.89%
At accepted combined decimal price 6.20:
Raw break-even probability = 1 / 6.20 = 0.1613, or about 16.13%
The difference is about 0.76 percentage points before uncertainty. It is not a recommendation and can disappear under small probability changes.
Cross-match dependence audit
OpenStax allows marginal multiplication only for independent events. Map shared weather, competition incentives, team rotation, provider corrections and model components. Different fixtures are not proof of independence.
Run invariants: every BTTS probability must be between zero and one and cannot exceed either team's probability of scoring. The complete joint distribution must also sum to one.
Next step
Use Btts Betting Explained for the next part of this topic.
Score-grid validation fixtures
Verify the BTTS mapper against 0-0, 1-0, 0-1, 1-1, 2-1 and 1-2. Only scorelines with at least one qualifying goal for each team enter BTTS Yes. Then run probability identities:
- P(BTTS Yes) cannot exceed P(home scores at least once).
- P(BTTS Yes) cannot exceed P(away scores at least once).
- P(BTTS Yes) plus P(BTTS No) must equal one.
- Every score cell plus the retained tail must sum to one.
These properties follow from the intersection and complement rules described by OpenStax. A failed identity indicates a score-grid, tail or event-mapping error.
Run sensitivity cases around each leg probability. In the worked example, reducing each marginal by only two percentage points produces 0.54 * 0.50 * 0.56 = 0.1512, or 15.12%, below the raw 16.13% break-even threshold. This illustrates why a narrow model-price difference needs uncertainty, not a confident label.
Continue learning
- Next guide: BTTS and Win Accumulators
- Related guide: Bundesliga Accumulators
Assumptions and limitations
The worked probabilities and price are illustrative. Score models can be miscalibrated, lineups and tactics change, and operator settlement may differ from the data provider used for research.

