# Bookmakers' odds: a reliable yardstick for the Liga?

> Odds calibration in the Liga: over 26 seasons, actual points deviate from expected points by −1.3% to +1.8%. Details by season and club.

Source: https://elcolegiado.com/studies/odds/

Study

# The odds as a benchmark

Why bookmakers' odds are a fair yardstick for results.

- 2000-01 → 2025-26

- 9,880 matches

- Updated on 3 October 2026

- [Method](https://elcolegiado.com/methodology/#cotes)

## Key takeaways

- Across the whole Liga, the deviation between actual and expected points ranges from **−1.3%** to **+1.8%** depending on the season (2000-01 → 2025-26). [See](https://elcolegiado.com/studies/odds/#calibrage)

- **26** seasons out of 26 stay within 2% of expected points. [See](https://elcolegiado.com/studies/odds/#calibrage)

- 2 matches without odds are excluded from odds-based measures. [See](https://elcolegiado.com/studies/odds/#methode)

- An Elo model was tested for the archives and rejected: its expected points differ too much from those derived from the odds. [See](https://elcolegiado.com/studies/odds/#elo)

**In short:** The whole "points − expected" measure rests on the odds. Across the Liga, actual points deviate from expected points by −1.3% to +1.8% depending on the season.

## Actual − expected points deviation, whole Liga

As % of expected points, per season

**Calibration** Across the whole Liga, actual points and points expected from the odds differ by only a few % per season: the odds are a reliable benchmark. −2 −1 0 1 2 VAR <a href="/seasons/2000-01/" style="left:0%;width:3.8461538461538463%" data-tip="2000-01
Deviation: +0.45%
1,039 actual pts, 1,034.3 expected" aria-label="2000-01, Deviation: +0.45%, 1,039 actual pts, 1,034.3 expected"> <a href="/seasons/2001-02/" style="left:3.8461538461538463%;width:3.8461538461538463%" data-tip="2001-02
Deviation: +0.25%
1,039 actual pts, 1,036.4 expected" aria-label="2001-02, Deviation: +0.25%, 1,039 actual pts, 1,036.4 expected"> <a href="/seasons/2002-03/" style="left:7.6923076923076925%;width:3.8461538461538463%" data-tip="2002-03
Deviation: −0.02%
1,033 actual pts, 1,033.2 expected" aria-label="2002-03, Deviation: −0.02%, 1,033 actual pts, 1,033.2 expected"> <a href="/seasons/2003-04/" style="left:11.538461538461538%;width:3.8461538461538463%" data-tip="2003-04
Deviation: +0.82%
1,045 actual pts, 1,036.5 expected" aria-label="2003-04, Deviation: +0.82%, 1,045 actual pts, 1,036.5 expected"> <a href="/seasons/2004-05/" style="left:15.384615384615385%;width:3.8461538461538463%" data-tip="2004-05
Deviation: +0.22%
1,040 actual pts, 1,037.7 expected" aria-label="2004-05, Deviation: +0.22%, 1,040 actual pts, 1,037.7 expected"> <a href="/seasons/2005-06/" style="left:19.230769230769234%;width:3.8461538461538463%" data-tip="2005-06
Deviation: −0.11%
1,035 actual pts, 1,036.1 expected" aria-label="2005-06, Deviation: −0.11%, 1,035 actual pts, 1,036.1 expected"> <a href="/seasons/2006-07/" style="left:23.076923076923077%;width:3.8461538461538463%" data-tip="2006-07
Deviation: +0.49%
1,042 actual pts, 1,036.9 expected" aria-label="2006-07, Deviation: +0.49%, 1,042 actual pts, 1,036.9 expected"> <a href="/seasons/2007-08/" style="left:26.923076923076923%;width:3.8461538461538463%" data-tip="2007-08
Deviation: +1.56%
1,053 actual pts, 1,036.9 expected" aria-label="2007-08, Deviation: +1.56%, 1,053 actual pts, 1,036.9 expected"> <a href="/seasons/2008-09/" style="left:30.76923076923077%;width:3.8461538461538463%" data-tip="2008-09
Deviation: +1.78%
1,057 actual pts, 1,038.5 expected" aria-label="2008-09, Deviation: +1.78%, 1,057 actual pts, 1,038.5 expected"> <a href="/seasons/2009-10/" style="left:34.61538461538461%;width:3.8461538461538463%" data-tip="2009-10
Deviation: +0.13%
1,045 actual pts, 1,043.7 expected" aria-label="2009-10, Deviation: +0.13%, 1,045 actual pts, 1,043.7 expected"> <a href="/seasons/2010-11/" style="left:38.46153846153847%;width:3.8461538461538463%" data-tip="2010-11
Deviation: +1.62%
1,061 actual pts, 1,044.1 expected" aria-label="2010-11, Deviation: +1.62%, 1,061 actual pts, 1,044.1 expected"> <a href="/seasons/2011-12/" style="left:42.30769230769231%;width:3.8461538461538463%" data-tip="2011-12
Deviation: −0.02%
1,046 actual pts, 1,046.2 expected" aria-label="2011-12, Deviation: −0.02%, 1,046 actual pts, 1,046.2 expected"> <a href="/seasons/2012-13/" style="left:46.15384615384615%;width:3.8461538461538463%" data-tip="2012-13
Deviation: +1.03%
1,056 actual pts, 1,045.3 expected" aria-label="2012-13, Deviation: +1.03%, 1,056 actual pts, 1,045.3 expected"> <a href="/seasons/2013-14/" style="left:50%;width:3.8461538461538463%" data-tip="2013-14
Deviation: +0.57%
1,054 actual pts, 1,048.1 expected" aria-label="2013-14, Deviation: +0.57%, 1,054 actual pts, 1,048.1 expected"> <a href="/seasons/2014-15/" style="left:53.84615384615385%;width:3.8461538461538463%" data-tip="2014-15
Deviation: +0.11%
1,049 actual pts, 1,047.9 expected" aria-label="2014-15, Deviation: +0.11%, 1,049 actual pts, 1,047.9 expected"> <a href="/seasons/2015-16/" style="left:57.692307692307686%;width:3.8461538461538463%" data-tip="2015-16
Deviation: +0.08%
1,048 actual pts, 1,047.1 expected" aria-label="2015-16, Deviation: +0.08%, 1,048 actual pts, 1,047.1 expected"> <a href="/seasons/2016-17/" style="left:61.53846153846154%;width:3.8461538461538463%" data-tip="2016-17
Deviation: +0.26%
1,051 actual pts, 1,048.2 expected" aria-label="2016-17, Deviation: +0.26%, 1,051 actual pts, 1,048.2 expected"> <a href="/seasons/2017-18/" style="left:65.38461538461539%;width:3.8461538461538463%" data-tip="2017-18
Deviation: +0.71%
1,054 actual pts, 1,046.5 expected" aria-label="2017-18, Deviation: +0.71%, 1,054 actual pts, 1,046.5 expected"> <a href="/seasons/2018-19/" style="left:69.23076923076923%;width:3.8461538461538463%" data-tip="2018-19
Deviation: −1.27%
1,030 actual pts, 1,043.3 expected" aria-label="2018-19, Deviation: −1.27%, 1,030 actual pts, 1,043.3 expected"> <a href="/seasons/2019-20/" style="left:73.07692307692307%;width:3.8461538461538463%" data-tip="2019-20
Deviation: −0.47%
1,035 actual pts, 1,039.9 expected" aria-label="2019-20, Deviation: −0.47%, 1,035 actual pts, 1,039.9 expected"> <a href="/seasons/2020-21/" style="left:76.92307692307693%;width:3.8461538461538463%" data-tip="2020-21
Deviation: −0.77%
1,031 actual pts, 1,039.0 expected" aria-label="2020-21, Deviation: −0.77%, 1,031 actual pts, 1,039.0 expected"> <a href="/seasons/2021-22/" style="left:80.76923076923077%;width:3.8461538461538463%" data-tip="2021-22
Deviation: −0.94%
1,029 actual pts, 1,038.8 expected" aria-label="2021-22, Deviation: −0.94%, 1,029 actual pts, 1,038.8 expected"> <a href="/seasons/2022-23/" style="left:84.61538461538461%;width:3.8461538461538463%" data-tip="2022-23
Deviation: +1.07%
1,051 actual pts, 1,039.9 expected" aria-label="2022-23, Deviation: +1.07%, 1,051 actual pts, 1,039.9 expected"> <a href="/seasons/2023-24/" style="left:88.46153846153845%;width:3.8461538461538463%" data-tip="2023-24
Deviation: −0.79%
1,033 actual pts, 1,041.3 expected" aria-label="2023-24, Deviation: −0.79%, 1,033 actual pts, 1,041.3 expected"> <a href="/seasons/2024-25/" style="left:92.3076923076923%;width:3.8461538461538463%" data-tip="2024-25
Deviation: +0.18%
1,043 actual pts, 1,041.1 expected" aria-label="2024-25, Deviation: +0.18%, 1,043 actual pts, 1,041.1 expected"> <a href="/seasons/2025-26/" style="left:96.15384615384616%;width:3.8461538461538463%" data-tip="2025-26
Deviation: +0.56%
1,047 actual pts, 1,041.1 expected" aria-label="2025-26, Deviation: +0.56%, 1,047 actual pts, 1,041.1 expected"> 00-01 05-06 10-11 15-16 20-21 25-26

Deviation

The 2019-20 and 2020-21 seasons (matches behind closed doors) are slightly below expectations. Probabilities = average market odds, bookmaker margin removed.

## By club, all seasons 2000-01 → 2025-26

Actual against expected points; sorted by number of matches, not by deviation

**Points − expected points** Before each match, the bookmakers' odds give the probability of a win, a draw and a defeat. Expected points = 3 × P(win) + P(draw). A positive deviation means the club took more points than the market predicted. Because the team's strength is already built into the odds, a big club has no "automatic" positive deviation.

| Club | Matches | Points | Expected | Deviation |
| --- | --- | --- | --- | --- |
| [Athletic Bilbao](https://elcolegiado.com/clubs/athletic-club/) | 988 | 1,375 | 1,398.0 | −23.0 (−1.6%) |
| [FC Barcelona](https://elcolegiado.com/clubs/barcelona/) | 988 | 2,168 | 2,119.5 | +48.5 (+2.3%) |
| [Valencia CF](https://elcolegiado.com/clubs/valencia/) | 988 | 1,529 | 1,509.3 | +19.7 (+1.3%) |
| [Real Madrid CF](https://elcolegiado.com/clubs/real-madrid/) | 987 | 2,161 | 2,063.6 | +97.4 (+4.7%) |
| [Sevilla FC](https://elcolegiado.com/clubs/sevilla/) | 950 | 1,483 | 1,451.5 | +31.5 (+2.2%) |
| [Villarreal CF](https://elcolegiado.com/clubs/villarreal/) | 950 | 1,475 | 1,397.9 | +77.1 (+5.5%) |
| [Atlético Madrid](https://elcolegiado.com/clubs/atletico-madrid/) | 912 | 1,646 | 1,582.1 | +63.9 (+4.0%) |
| [RCD Espanyol](https://elcolegiado.com/clubs/espanyol/) | 912 | 1,096 | 1,112.4 | −16.4 (−1.5%) |
| [Real Sociedad](https://elcolegiado.com/clubs/real-sociedad/) | 874 | 1,211 | 1,206.8 | +4.2 (+0.3%) |
| [CA Osasuna](https://elcolegiado.com/clubs/osasuna/) | 836 | 1,004 | 993.0 | +11.0 (+1.1%) |
| [Real Betis](https://elcolegiado.com/clubs/real-betis/) | 835 | 1,123 | 1,098.0 | +25.0 (+2.3%) |
| [Getafe CF](https://elcolegiado.com/clubs/getafe/) | 798 | 976 | 966.2 | +9.8 (+1.0%) |
| [RC Celta de Vigo](https://elcolegiado.com/clubs/celta-vigo/) | 759 | 982 | 1,025.7 | −43.7 (−4.3%) |
| [RCD Mallorca](https://elcolegiado.com/clubs/mallorca/) | 722 | 904 | 875.3 | +28.7 (+3.3%) |
| [Deportivo de A Coruña](https://elcolegiado.com/clubs/deportivo-la-coruna/) | 608 | 814 | 822.2 | −8.2 (−1.0%) |
| [Málaga CF](https://elcolegiado.com/clubs/malaga/) | 608 | 743 | 751.5 | −8.5 (−1.1%) |
| [Levante UD](https://elcolegiado.com/clubs/levante/) | 570 | 625 | 597.4 | +27.6 (+4.6%) |
| [Rayo Vallecano](https://elcolegiado.com/clubs/rayo-vallecano/) | 532 | 613 | 622.9 | −9.9 (−1.6%) |
| [Real Valladolid](https://elcolegiado.com/clubs/real-valladolid/) | 532 | 550 | 593.4 | −43.4 (−7.3%) |
| [Deportivo Alavés](https://elcolegiado.com/clubs/alaves/) | 494 | 568 | 567.4 | +0.6 (+0.1%) |
| [Racing de Santander](https://elcolegiado.com/clubs/racing-santander/) | 418 | 478 | 486.7 | −8.7 (−1.8%) |
| [Real Zaragoza](https://elcolegiado.com/clubs/real-zaragoza/) | 417 | 487 | 523.0 | −36.0 (−6.9%) |
| [Granada CF](https://elcolegiado.com/clubs/granada/) | 380 | 380 | 396.1 | −16.1 (−4.1%) |
| [UD Almería](https://elcolegiado.com/clubs/almeria/) | 304 | 304 | 322.0 | −18.0 (−5.6%) |
| [SD Eibar](https://elcolegiado.com/clubs/eibar/) | 266 | 302 | 310.7 | −8.7 (−2.8%) |
| [UD Las Palmas](https://elcolegiado.com/clubs/las-palmas/) | 266 | 263 | 286.1 | −23.1 (−8.1%) |
| [Elche CF](https://elcolegiado.com/clubs/elche/) | 228 | 227 | 221.3 | +5.7 (+2.6%) |
| [Girona FC](https://elcolegiado.com/clubs/girona/) | 228 | 300 | 289.9 | +10.1 (+3.5%) |
| [Sporting de Gijón](https://elcolegiado.com/clubs/sporting-gijon/) | 228 | 237 | 243.6 | −6.6 (−2.7%) |
| [Cádiz CF](https://elcolegiado.com/clubs/cadiz/) | 190 | 194 | 190.7 | +3.3 (+1.7%) |
| [CD Leganés](https://elcolegiado.com/clubs/leganes/) | 190 | 199 | 207.0 | −8.0 (−3.9%) |
| [Recreativo de Huelva](https://elcolegiado.com/clubs/recreativo-huelva/) | 152 | 167 | 169.3 | −2.3 (−1.4%) |
| [CD Numancia](https://elcolegiado.com/clubs/numancia/) | 114 | 103 | 118.7 | −15.7 (−13.2%) |
| [Albacete Balompié](https://elcolegiado.com/clubs/albacete/) | 76 | 75 | 82.2 | −7.2 (−8.7%) |
| [SD Huesca](https://elcolegiado.com/clubs/huesca/) | 76 | 67 | 79.7 | −12.7 (−15.9%) |
| [Real Murcia CF](https://elcolegiado.com/clubs/real-murcia/) | 76 | 56 | 76.9 | −20.9 (−27.1%) |
| [Real Oviedo](https://elcolegiado.com/clubs/real-oviedo/) | 76 | 70 | 80.1 | −10.1 (−12.6%) |
| [CD Tenerife](https://elcolegiado.com/clubs/tenerife/) | 76 | 74 | 84.6 | −10.6 (−12.5%) |
| [Córdoba CF](https://elcolegiado.com/clubs/cordoba/) | 38 | 20 | 33.0 | −13.0 (−39.4%) |
| [Gimnàstic de Tarragona](https://elcolegiado.com/clubs/gimnastic/) | 38 | 28 | 35.3 | −7.3 (−20.7%) |
| [Hércules CF](https://elcolegiado.com/clubs/hercules/) | 38 | 35 | 42.5 | −7.5 (−17.7%) |
| [Xerez CD](https://elcolegiado.com/clubs/xerez/) | 38 | 34 | 34.3 | −0.3 (−0.9%) |

## Method

**Method** How the odds become expected points.
- Source: football-data.co.uk, pre-match market average (not closing odds).

- Margin removed by proportional normalisation: p = (1/odds) / Σ(1/odds).

- Expected points = 3 × P(win) + P(draw), match by match.

[Details in the methodology →](https://elcolegiado.com/methodology/#cotes)

## A rejected trial: the Elo model

**A rejected trial: the Elo model** Why the archives have no expected points.

For the archives (1990-91 → 1999-00), which have no odds, an Elo model (expected points computed from past results only) was built and tested against the odds over 2000-01 → 2025-26. Its expected points differ by several points per club and season from those derived from the odds: it was rejected as a benchmark, and the archives remain descriptive.

## Limitations

**Limitations** What these figures cannot tell us.
- Proportional normalisation may leave a slight favourite-longshot bias.

- The odds include what the market knew before the match; a bias the market knew about would already be "in the odds".

- 2 matches without odds are excluded from odds-based measures.

## Definitions

**Expected points**

Before each match, the bookmakers' odds give the probability of a win, a draw and a defeat. Expected points = 3 × P(win) + P(draw). A positive deviation means the club took more points than the market predicted. Because the team's strength is already built into the odds, a big club has no "automatic" positive deviation.

**q-value**

With hundreds of comparisons, some look extreme by chance. The Benjamini-Hochberg correction accounts for this: a deviation is only called notable if q < 0.05. Otherwise: inconclusive. Inconclusive does not mean "no effect": with 11 matches, only a deviation of about ±1.57 points per match could have been detected.

**Difference-in-differences**

We measure the club's change between two periods, then subtract the change of a comparison group over the same periods. What remains is the change specific to the club.

**Strength-adjusted measures**

Each match is compared with Liga matches from the same season, at the same venue type (home/away) and between teams of comparable strength according to the odds. A positive value is favourable to the club.

[Details in the methodology →](https://elcolegiado.com/methodology/)

## Cite this page

El Colegiado, "Bookmakers' odds: a reliable yardstick for the Liga?", https://elcolegiado.com/studies/odds/ (data updated on 3 October 2026).
