Liga Portugal

Model evaluation

Model vs Market

There is one question any football model has to answer before it deserves attention: is it better than the forecast implied by the market? The closing line — the market consensus immediately before kick-off — is the reference standard in sports forecasting, and we measured ourselves against it. We publish no odds and no betting advice: the market appears here purely as a yardstick.

The verdict, over 504 matches across eight seasons: from matchday 14 onward the model matches the closing line, and edges slightly ahead of it. The whole deficit is concentrated in the first third of the season, when there are still few matches to learn from. Across the season as a whole the gap is +0.0010 with a standard error of 0.0021 — indistinguishable from zero.

We are writing this with the error bars in plain sight on purpose. The only difference on this page that survives its own standard error is the early-season one; everything else is consistent with a tie, and it would be dishonest to sell it any other way.

The result, in three numbers

RPS difference between the model and the closing line, match by match. Negative = the model errs less. 504 matches, 8 seasons.

Whole season

Matchdays 6 to 30

+0.0010

standard error 0.0021 · n = 504

The gap is smaller than half its own standard error: indistinguishable from zero.

Early season

Matchdays 6-10

+0.0098

standard error 0.0045 · n = 144

The market is ahead, and here the gap survives its standard error (t = 2.16).

Rest of the season

Matchdays 14-30

−0.0025

standard error 0.0022 · n = 360

The model matches the closing line. The sign favours it, but stays inside the noise.

Where the deficit starts and where it ends

Forecast error (RPS) for the model and the closing line at each reference matchday. Lower is better. The two lines cross between matchday 10 and matchday 14.

ModelMarket (closing line)
0.1700.1800.1900.200ModelMarketEarlyMatchday 14 onward6101418222630Reference matchdayDifference (model − market), with ±1 standard error+0.010−0.0100▲ market errs less▼ model errs less

Vertical axis truncated (0.165–0.205) so the crossover is visible; the real differences are the ones in the lower strip. Each point is one predicted matchday in each of the 8 seasons (n = 72 matches per point).

See the numbers as a table
Model and market RPS by reference matchday
MatchdayModelMarketDifferenceStd. error
60.18740.1784+0.00900.0067
100.18880.1782+0.01060.0062
140.18380.1880−0.00410.0049
180.20160.2017−0.00020.0047
220.17190.1788−0.00690.0041
260.17790.1790−0.00110.0046
300.18430.1844−0.00010.0065

How to read this

RPS: lower is better
The Ranked Probability Score measures how far a win-draw-loss forecast lands from what happened, penalising big misses more. Zero is a perfect forecast; putting 33% on each result scores about 0.22.
What the closing line is
It is the market's last price before kick-off, with the margin stripped out (Shin's method). By then it has absorbed everything: injuries, line-ups, suspensions, and the money of people who know more than we do.
Why it is hard to beat
The closing line is the consensus of thousands of bettors with money at stake, and it is the benchmark any model is measured against. Matching it is already a good result; beating the opening line is a different conversation — in this sample the gap between close and open is a few ten-thousandths.

A note on uncertainty, because here it decides everything. The overall gap is +0.00103 with a standard error of 0.00207: the interval runs comfortably through zero, so we do not claim the market is ahead of us across the season. The only gap that survives its own standard error is the early-season one.

When we disagreed with the market

Model and market almost always see the same match. These are the cases where they did not.

In 53 of the 504 matches (10.5%) model and market named different favourites. In those, the market's pick won 22 times and the model's 15, with 16 landing on a third result. The error gap on that subset is +0.0101, with a standard error of 0.0079 — far too noisy to settle the question.

  • Santa Clara 11 Pacos Ferreira2022-23 · matchday 7Neither
    Model:Pacos Ferreira36%
    Market:Santa Clara53%
  • Rio Ave 22 Famalicão2019-20 · matchday 19Neither
    Model:Famalicão38%
    Market:Rio Ave49%
  • Famalicão 01 Gil Vicente2020-21 · matchday 11Market right
    Model:Famalicão48%
    Market:Gil Vicente37%
  • Vizela 11 Estoril2021-22 · matchday 11Neither
    Model:Estoril41%
    Market:Vizela42%
  • Belenenses SAD 01 Moreirense2019-20 · matchday 31Model right
    Model:Moreirense39%
    Market:Belenenses SAD43%
  • Rio Ave 11 Estoril2023-24 · matchday 19Neither
    Model:Estoril41%
    Market:Rio Ave44%
  • Marítimo 13 Vitória2018-19 · matchday 7Model right
    Model:Vitória39%
    Market:Marítimo42%
  • Boavista 10 Moreirense2021-22 · matchday 15Model right
    Model:Boavista46%
    Market:Moreirense36%

The eight matches where the two favourites were furthest apart. “Neither” means the third result came in.

The small print

Evaluated on 504 matches: eight seasons (2017-18 to 2024-25) × seven reference matchdays (6, 10, 14, 18, 22, 26, 30). At each point the model is fitted only on matches played up to that matchday and forecasts the next one — it never sees the future. Market probabilities are derived from closing odds published by football-data.co.uk (Pinnacle), with the margin removed using Shin's method, and cover 100% of the evaluated matches. The evaluated model is the same one that produces the forecasts published on this site.