Opponent-adjusted Elo: turning a run of results into a number
TL;DR. Elo is a single number summarising a team's strength, updated after every match according to what was expected of that result. Beating the leader moves it a lot; beating the bottom side, barely at all. It is the cleanest way to turn a run of results into a comparable figure, and it is the foundation of the BetsTalent engine across the four sports we model.
Note. Informational and statistical content. It is not betting advice nor a promise of profit. No statistic predicts a single match: they are there to estimate probabilities over the long run. 18+ only. Play responsibly.
The idea: only surprise counts
Before each match, both teams' ratings define an expectation: if one sits at 1,600 and the other at 1,400, the first is expected to win fairly comfortably. After the match, the rating moves according to the gap between what was expected and what happened.
If the favourite wins, the surprise is small and so is the movement. If the underdog wins, the surprise is large and the adjustment is strong. That is what opponent adjustment means here: there is no separate step, it is built into the rating's own mechanics.
The elegant consequence is that Elo never needs to know who the leader is or consult the table. A team beating hard opponents rises even when its record does not look like it, and one beating only the bottom sides stalls.
The three pieces to calibrate
| Piece | What it controls | The trade-off |
|---|---|---|
| K factor | How much the rating moves per match | High = reacts fast but unstable; low = stable but slow |
| Home advantage | How much is added to the home side beforehand | Varies by sport and league; it is not a universal constant |
| Starting rating | Where a new team begins | A promoted side's first matches are uninformative |
The K factor is the most delicate decision. A high K chases recent form and over-reacts to a freak result; a low K describes last season well and is slow to notice a team has changed. There is no universally correct value: it is calibrated on each sport's history.
What Elo does not see
- The margin, unless you feed it in. Basic Elo only looks at who won. Variants that incorporate goal or point difference distinguish winning by one from winning by five, which is valuable in high-scoring sports.
- Absences and signings. The rating only finds out when results change, and by then matches have been played.
- Separate competitions. Ratings from two leagues that never meet are not comparable: there are no matches anchoring one scale to the other.
- Motivation. A team already qualified that rotates on the final day produces a result Elo reads as information about its level, which it is not.
How we use it
In football and handball, Elo feeds the estimate of each team's expected goals alongside the attack and defence ratings. In basketball, the expected points margin. In tennis, it is blended with the per-surface rating.
The short definition is in the glossary and the full architecture in how our model works.
Frequently asked questions
Why does beating the leader raise Elo more than beating the bottom side?
Because the rating only moves on the gap between what was expected and what happened. Winning as favourite is little surprise and moves little; winning as underdog is a big surprise and moves a lot. Opponent adjustment is built into the mechanics.
What is the K factor?
The parameter controlling how much the rating moves after each match. A high K reacts quickly to recent form but over-reacts to freak results; a low one is stable but slow to detect that a team has changed.
Can Elo ratings from two different leagues be compared?
Not if those leagues never meet. Without matches between them there is nothing anchoring one scale to the other, so the numbers are not directly comparable.

