Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Ratings and regression

Elo ratings

A single number per team or player that rises after wins and falls after losses, sized by how surprising the result was.

Beginnerpre-matchevaluation

In one sentence

Elo gives every competitor one strength number, turns the gap between two numbers into a win probability, and nudges both numbers after each result.

How it works

Think of Elo as a running reputation score. Beat someone rated far above you and your rating jumps; beat someone far below you and it barely moves, because that win was expected.

Before a match, the rating gap is converted into an expected score between 0 and 1. After the match, each side's rating moves by a fixed step size, called K, multiplied by how far the actual result differed from that expectation. Points gained by one side are exactly the points lost by the other.

It was designed for chess by Arpad Elo and is now widely used for tennis, football and other head-to-head sports. For betting, the useful output is the expected score, which you can read as a win probability and turn into a fair price.

The maths

EA=11+10−(RA−RB)/400E_A = \frac{1}{1 + 10^{-(R_A - R_B)/400}} RA′=RA+K (SA−EA)R_A' = R_A + K\,(S_A - E_A)
  • R_A, R_B: current ratings of players A and B.
  • E_A: A's expected score, read as A's win probability when draws are rare.
  • S_A: what actually happened (1 for a win, 0 for a loss, 0.5 for a draw).
  • K: the step size, controlling how fast ratings react.
  • 400: a scaling constant; a 400-point gap means roughly 10-to-1 odds on.
  • R_A′: A's new rating.

In words: your expected result depends only on the rating gap, and you move in proportion to how much you beat or missed that expectation.

Worked betting example

A league match (illustrative ratings): the home side is rated 1850 and the away side 1760. Add 60 points for home advantage, giving a 150-point gap.

  1. Expected score for the home side: 1 ÷ (1 + 10^(−150/400)) ≈ 0.703.
  2. That is not a win chance, because a draw counts as half. Say 26% of games in this league are draws (illustrative). Then P(home win) ≈ 0.703 − 0.26 ÷ 2 ≈ 57.3%, a fair price of about 1.74.
  3. Betfair offers 1.85 on the home side in Match Odds. With a £10 stake and 2% commission on net winnings, a win pays £8.50 × 0.98 = £8.33.
  4. Expected value: 0.573 × £8.33 − 0.427 × £10 ≈ +£0.50 per £10 staked.
  5. Using K = 20: a home win adds 20 × (1 − 0.703) ≈ 5.9 points, a draw costs 20 × (0.703 − 0.5) ≈ 4.1 points, and a defeat costs 20 × 0.703 ≈ 14.1 points. The away side moves by the same amount the other way.

The positive EV only holds if your Elo probabilities are calibrated against real results, which is the hard part.

Where it's good

  • Quick, transparent strength ratings across large numbers of teams or players.
  • Football Match Odds once you add a draw step, and two-outcome sports such as tennis, where the expected score maps straight onto a win probability.
  • Leagues with limited data, where a simple model is less likely to overfit.
  • As one input feature inside a larger model, such as a logistic regression.
  • Spotting lower-league or lower-profile markets where prices may lag rating changes.

Limitations and pitfalls

  • One number per side ignores surface, venue, style and matchups; tennis Elo usually needs surface-specific versions.
  • Football draws do not fit neatly: an expected score of 0.6 is not a 60% win chance, so you need a separate step to split win, draw and loss.
  • K is a guess you must tune; too high chases noise, too low misses real changes like injuries or new managers.
  • Ratings carry no measure of uncertainty, so a player back from a year out is treated as confidently as an ever-present one (Glicko fixes this).
  • Home advantage, margin of victory and between-season decay are bolt-ons you must add and test yourself.
  • Major football leagues already price in public Elo-style ratings, so raw Elo rarely beats the closing price.

How to build it

  • A few lines of Python or R are enough; no special library needed. For football, penaltyblog includes rating tools.
  • Data: a clean, date-ordered list of results with both competitors identified consistently.
  • Tune K and any home-advantage term by walk-forward testing on log loss, not by eyeballing.
  • Tip: start every new competitor at the league average and treat their first 10 to 20 ratings as unreliable.
  • Glicko ratings: Elo plus a measure of how sure you are about each rating.
  • TrueSkill: a Bayesian cousin that also handles teams and multi-player events.
  • Bradley-Terry model: the statistical model Elo approximates in real time.
  • Pi-ratings: a football-specific rating built on goal difference.
  • Logistic regression: a way to combine Elo gaps with other features.
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