Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Bayesian methods and time series

Conjugate Priors

Matched pairs of prior and data model that make Bayesian updates a matter of adding counts, ideal for fast strike-rate and goal-rate estimates.

Intermediatepre-matchin-playevaluation

In one sentence

A conjugate prior is a choice of starting belief that, combined with a particular type of data, gives a posterior of the same family, so updating becomes simple arithmetic instead of heavy computation.

How it works

Bayesian updating in general can need a computer to churn through thousands of possibilities. For a few common data types, though, there is a shortcut: if the prior has the right shape, the update just adds your observed counts to the prior's parameters.

The two pairings that matter most in betting are Beta with Binomial (for yes/no outcomes like wins, overs, holds of serve) and Gamma with Poisson (for counts like goals, corners, aces). Beta is the family of curves for a rate between 0 and 1; Gamma is the family for a positive rate such as goals per game.

Because the posterior stays in the same family, you can update after every match in a spreadsheet, and the prior's parameters read like "imaginary games already seen". That makes them easy to explain and easy to audit.

The maths

For goals, with a Gamma prior on a team's scoring rate λ:

λ∼Gamma(α,β),goalsi∼Poisson(λ)\lambda \sim \text{Gamma}(\alpha, \beta), \qquad \text{goals}_i \sim \text{Poisson}(\lambda) λ∣data∼Gamma(α+∑igoalsi, β+n)\lambda \mid \text{data} \sim \text{Gamma}\left(\alpha + \sum_i \text{goals}_i,\ \beta + n\right)
  • λ: the team's true average goals per match.
  • α: prior "goals already seen".
  • β: prior "matches already seen"; α ÷ β is the prior mean.
  • the sum of goals: goals scored in the new matches.
  • n: number of new matches.

In plain English: add real goals to the imaginary goals and real games to the imaginary games, then divide to get the updated rate.

The predictive distribution for the next match, which folds in your remaining uncertainty about λ, is a negative binomial rather than a plain Poisson.

Worked betting example

Betfair offers a team "over 1.5 goals" at 1.75, implied probability 1 ÷ 1.75 ≈ 57.1%.

  1. Prior. Similar sides average 1.4 goals a game. You treat that as worth 10 matches: α = 14, β = 10.
  2. Data. In 5 matches this season they have scored 11 goals, 2.2 per game.
  3. Update. Posterior is Gamma(14 + 11, 10 + 5) = Gamma(25, 15). Mean = 25 ÷ 15 ≈ 1.67 goals.
  4. Probability of 2 or more goals. Using the full predictive (negative binomial), P(2+) ≈ 49.0%, fair odds ≈ 2.04. Plugging 1.67 into a plain Poisson gives 49.6%, fair odds 2.01, slightly overconfident.
  5. Compare with the naive view. Using the raw 2.2 goals a game, P(2+) ≈ 64.5% and fair odds ≈ 1.55, so 1.75 looks like value.
  6. Expected value of a £10 back at 1.75, 2% commission. Naive: 0.645 × £7.50 × 0.98 minus 0.355 × £10 ≈ +£1.19. Conjugate estimate: 0.490 × £7.50 × 0.98 minus 0.510 × £10 ≈ minus £1.50.

Five matches of hot finishing flipped an apparent value bet into a losing one once the prior was allowed to pull the estimate back.

Where it's good

  • Fast, transparent updating of goal, corner or card rates through a season.
  • Strike rates for jockeys, trainers or tennis serve holds with Beta priors.
  • In-play models that need to update every minute without heavy computing.
  • A sanity check against more complex models: if they disagree wildly with a conjugate estimate, find out why.
  • Building blocks inside larger hierarchical or empirical Bayes setups.

Limitations and pitfalls

  • Conjugacy is chosen for convenience, not because the prior is true. If your real belief is lopsided or has two humps, a Beta or Gamma cannot express it.
  • Plain Poisson goal models ignore the correlation between the two teams' scores and the excess of draws; see Dixon-Coles for the fix.
  • All matches count equally. Without extra down-weighting, a goal in August counts as much as one last week.
  • Opponent strength is ignored unless you adjust the data first; 11 goals against weak defences is not the same evidence as 11 against strong ones.
  • Prior strength is a judgement call and drives the answer in small samples.
  • The market price already reflects public form; the method only helps if your prior is better calibrated than the crowd's.

How to build it

  • scipy.stats (beta, gamma, nbinom) covers all the updates and predictive probabilities.
  • PyMC can confirm conjugate results and extend them when the model grows.
  • Data: match-level goals or outcomes, plus a reference group of comparable teams to set α and β.
  • Practical tip: always price from the predictive distribution, not the posterior mean, or you will be overconfident in small samples.
Learn it step by step
18+ only. Educational content, not financial or betting advice. Past results do not guarantee future returns. If gambling stops being fun, get free, confidential help at BeGambleAware.org.
Members