In one sentence
Pi-ratings, from Constantinou and Fenton (2013), give each football team a home rating and an away rating, predict goal difference from them, and correct both after every match.
How it works
Elo only knows who won. Pi-ratings care about the goal difference, but they dampen big scorelines so a 6-0 does not count six times as much as a 1-0.
Each team carries two numbers, one for home form and one for away form. A match prediction comes from the home team's home rating and the away team's away rating. After the game, the prediction error drives the update, and part of the change to one rating spills over to the team's other rating.
The ratings are then turned into win, draw and loss probabilities by checking how often each predicted goal difference produced each result in the past.
The maths
- R_H,home: home team's home rating; R_A,away: away team's away rating.
- ĝ: the expected goal difference implied by a rating; b = 10 and c = 3 are the published constants.
- ĜD: predicted goal difference for the match.
- e: the size of the prediction error; ψ(e) shrinks big errors.
- λ: learning rate (0.035 in the paper); γ: how much a home change spills into the away rating (0.7).
- The sign is plus when the team beat the prediction, minus when it fell short; the away team gets the mirror update.
In words: predict the goal difference, see how wrong you were, then correct the ratings by a dampened version of the error.
Worked betting example
Illustrative ratings. Home side rating (home) 0.60 and (away) 0.35. Away side rating (home) 0.10 and (away) −0.20.
- ĝ for the home side: 10^(0.60 ÷ 3) − 1 ≈ 0.585. ĝ for the away side: −(10^(0.20 ÷ 3) − 1) ≈ −0.166.
- Predicted goal difference: 0.585 − (−0.166) ≈ 0.75 goals to the home side.
- The paper maps goal difference to probabilities using historical frequencies. As a rough stand-in, treat goal difference as normal with spread 1.7 and count above 0.5 as a home win: P ≈ 55.9%, fair price ≈ 1.79.
- Betfair offers 1.95. £10 stake, 2% commission: a win pays £9.50 × 0.98 = £9.31. EV ≈ 0.559 × £9.31 − 0.441 × £10 ≈ +£0.79.
- The match ends 1-1. Error e ≈ 0.75 and ψ ≈ 0.730. Home side's home rating drops by 0.035 × 0.730 ≈ 0.026 to about 0.574, and its away rating to about 0.332. The away side's away rating rises to about −0.174, and its home rating to about 0.118.
Where it's good
- Football match odds and Asian handicaps, where home and away form differ.
- Leagues with strong home effects, where a single rating misleads.
- A fast, transparent baseline for more complex goal models.
- Tracking form changes through the season with little computing effort.
Limitations and pitfalls
- Goal difference is noisy; a deflected own goal moves ratings as much as a well-worked finish. Using expected goals can help.
- Converting predicted goal difference to probabilities needs a separate, well-calibrated mapping, which is where many home-built versions go wrong.
- The published constants were tuned on English football; other leagues may need retuning.
- Promoted teams and summer transfers are not handled; you must set sensible starting values.
- It says nothing about total goals, so it is limited for over/under markets.
- Main-league match odds are efficient; pi-ratings alone rarely beat closing prices there.
How to build it
- Python or R: a short loop over date-ordered results; no special library needed.
- Data: several seasons of results with home and away teams and full-time scores.
- Fit the goal-difference-to-probability mapping on held-out seasons, not the ones used to tune λ and γ.
- Tip: run the ratings over one full season as a burn-in before trusting any prices.
Related methods
- Elo ratings: the result-only ancestor.
- Massey and Colley ratings: whole-season goal-margin ratings.
- Dixon-Coles model: a full scoreline model for the same matches.
- Expected goals: a less noisy input than actual goals.