The question
"I don't have xG, shot data or a fancy model. Can I rate teams from results alone?"
Yes, and it's one of the oldest and most honest tools there is. This lesson shows how Elo ratings for football betting work: one number per team, a price from the gap, and a small update after every match.
The idea in one sentence
Every team gets one strength number; the gap between two numbers gives an expected result, and after the match both numbers move by how surprised the rating should have been.
The picture
Think of Elo as a running reputation. Beat a team rated far above you and your rating jumps. Beat a team far below you and it barely moves, because everyone expected that.
The engine is an S-shaped curve. The x-axis is the rating gap (home rating plus home advantage, minus away rating). The y-axis is the expected score: how many points out of 1 the home side should take, counting a win as 1, a draw as ½ and a loss as 0.
| Rating gap | Expected score (home) |
|---|---|
| 0 | 0.50 |
| +60 | 0.59 |
| +100 | 0.64 |
| +200 | 0.76 |
| +400 | 0.91 |
Three things make Elo worth learning even if you later use something richer:
- It only needs results. A date-ordered list of who played whom and the score is enough.
- It's self-correcting. A team that's rated too low wins more than expected and climbs until the surprise stops.
- It's interpretable. You can see exactly why a price is what it is. That's why Statometrics builds its core on ratings like this, not on black boxes.
| If it ends | Home | Away |
|---|---|---|
| Home win | +5.69 | −5.69 |
| Draw | −4.31 | +4.31 |
| Away win | −14.31 | +14.31 |
Worked Betfair example
Match Odds, Premier League-style fixture. (Illustrative ratings and prices.)
- The ratings. Home side 1650, away side 1550. Home advantage worth 60 points.
- The gap. 1650 + 60 − 1550 = 160 points in the home side's favour.
- Expected score. 1 ÷ (1 + 10^(−160/400)) = 1 ÷ (1 + 0.398) ≈ 0.715.
- Split out the draw. The expected score counts a draw as half a win, so it isn't the win chance. Say draws happen 26% of the time in matches like this. Then:
- Home win = 0.715 − 0.13 = 58.5%
- Draw = 26.0%
- Away win = 1 − 0.715 − 0.13 = 15.5%
- Fair prices. Home 1 ÷ 0.585 ≈ 1.71, draw 3.85, away 6.46.
- Compare with Betfair. The home side is available to back at 1.78. After 2% commission a £1 winning bet pays 0.78 × 0.98 = £0.764.
- Expected value. 0.585 × £0.764 − 0.415 × £1 ≈ +£0.033 per £1, or about +3.3%. The break-even chance at 1.78 after commission is 56.7%, and your model says 58.5%.
- The update after the match (K = 20).
- Home win: 20 × (1 − 0.715) = +5.7 points to the home side, −5.7 to the away side.
- Draw: 20 × (0.5 − 0.715) = −4.3 to the home side.
- Away win: 20 × (0 − 0.715) = −14.3 to the home side.
Notice step 8: the home side has more to lose than to gain. That's the self-correcting part. Expected results barely move anything; upsets move a lot.
Verdict: the model says there's a small edge at 1.78. Whether it's real depends on whether your ratings are well tuned, and the only honest test is whether 1.78 turns out to be better than the closing price, again and again (closing line value).
The formula
Expected score
- E_H is the home side's expected score, between 0 and 1.
- R_H and R_A are the home and away ratings.
- h is the home advantage in rating points.
- 400 is a scaling constant: a 400-point gap means the stronger side is expected to score about 10 times as much as the weaker.
In plain English: only the gap matters, and the curve flattens at the ends, so extra rating points count for less when one side is already a heavy favourite.
Splitting win, draw and loss
- d is the draw probability.
In plain English: a draw counts as half a point to each side, so take half of it off each side's expected score. Draws get rarer as the gap widens, so a serious model fits d to the gap, or uses a Poisson goals model instead.
The update
- S_H is the actual result: 1, ½ or 0.
- K is the step size.
- R_H′ is the new rating. The away side moves by the same amount in the opposite direction.
In plain English: you move by how far reality beat or missed the expectation, multiplied by how fast you want ratings to react.
Choosing K and the extras
K is a trade-off. Too high and ratings chase luck; too low and they miss a new manager or a long injury list. Football ratings typically sit somewhere around 15 to 30, but you find yours by testing, not by copying a number.
Common add-ons, each of which must earn its place in a walk-forward test:
- Goal margin. Multiply K by a factor that grows with the winning margin, so a 4-0 counts for more than a 1-0.
- Season regression. Pull every rating part of the way back toward the average each summer, because squads change.
- New teams. Start promoted sides from the average of recently promoted sides, not the league average.
Try it
Set 1650 v 1550, home advantage 60, K 20 and a 26% draw rate, and check you get an expected score of 0.715 and a fair home price of 1.71. Then click "Away win" and watch how far the home rating falls compared with how little it gains from a home win.
Common mistakes
- Reading the expected score as the win chance. In football the expected score includes half the draws. Split them out or your home prices will be far too short.
- Picking K by eye. Tune K and home advantage on past seasons you didn't use to build the model, scored on log loss, then test forward.
- Trusting early ratings. A team's first 10 to 20 matches in your system are mostly guesswork. Don't bet big on them.
- Thinking Elo is secret. Public Elo ratings exist for most leagues, and the market already knows them. Raw Elo rarely beats the closing price on its own; it earns its keep as a clean, honest core that other evidence is checked against.
- Judging it on a few weeks of P&L. Judge it on calibration and CLV over hundreds of bets (Lesson 7.1).
Why a sound model can still lose you money: why good models still lose money.