FOOTBALLBETTING HUB

Method

How a price becomes a probability you can check.

67,129 matches40 competitions2021-01-02 to 2026-10-16

Two halves, one dataset

The same 67,129 matches feed both. The value half asks whether the model can out-forecast the closing price; the answer is no, decisively, and that answer is what licenses the confidence half to treat the closing price as its best input rather than its opponent.

  1. Fetch. Results and closing odds for every competition covered, and current prices for the fixtures still to come, refreshed each day.
  2. De-vig. Consensus prices, power method. It removes margin from longshots rather than spreading it evenly, which halves the calibration error against the usual proportional scaling.
  3. Reprice the market. Fit a pair of Poisson means and a Dixon-Coles rho until the score matrix reproduces the quoted 1X2 and totals. Every market nobody quotes — BTTS, Over 1.5, team totals, handicaps — is then read off that same matrix, so the whole card is internally consistent.
  4. Fuse a model in, at 10%. Joint-MLE attack and defence with time decay, rated on goals and shots on target. Measured: 0.90 beats both 0.75 and pure market, paired by match at p = 2.3e-07.
  5. Calibrate. Isotonic regression, one curve per line — over 2.5, home over 1.5, over 9.5 corners — fitted only on earlier matches. It barely touches the market-anchored markets and does the most for corners, which have the least anchor.
  6. Check, then cap. Every market is trusted only as far as its own out-of-sample record supports.

What it cannot do

  • No injuries, lineups, weather, motivation or fixture congestion. The model sees goals, shots on target and corners; the price sees everything else, which is most of why the price carries 90% of the weight.
  • Corners have no price of their own. The market reaches them only through how open it expects the match to be, and they are trusted only as high as their own record supports.
  • A team with no history in its division is carried almost entirely by the price, and is flagged on the card.
  • The card is priced on the line of the day it is built, a day or two before kick-off, and everything above was checked on closing prices, which know more. Calibrating on the earlier prices instead was tried and bought nothing: they lean the same way, and only know less.
  • Accumulator maths assumes independent fixtures. Legs from one match are not independent, which is why the tray warns when you tick two.
  • Nothing here is a claim of profit.

Data

2021-01-02 to 2026-10-16. Closing prices throughout the history — the sharpest number a bookmaker publishes. Backtesting against opening prices flatters a model that is really just slower than the market. The card itself is priced on the current line.

CompetitionMatchesFromTo
USA-MLS2,978Apr 2021Oct 2026
ELC2,879Aug 2021Oct 2026
EL22,874Aug 2021Oct 2026
ENL2,869Aug 2021Oct 2026
EL12,862Aug 2021Oct 2026
SD2,409Aug 2021Oct 2026
ARG-LIGAPROF2,404Jul 2021Oct 2026
BRA-SERIEA2,311Jan 2021Oct 2026
PD1,978Aug 2021Oct 2026
MEX-LIGAMX1,968Jan 2021Oct 2026
PL1,960Aug 2021Oct 2026
SA1,960Aug 2021Oct 2026
SB1,960Aug 2021Oct 2026
ROU-SUPERLIG1,888Jan 2021Oct 2026
JPN-J1LEAGUE1,846Feb 2021Oct 2026
FL21,822Jul 2021Oct 2026
TSL1,784Aug 2021Oct 2026
POL-EKSTRAKL1,746Jan 2021Oct 2026
FL11,732Aug 2021Oct 2026
BJL1,619Jul 2021Oct 2026
DED1,602Aug 2021Oct 2026
PPL1,601Aug 2021Oct 2026
BL21,593Jul 2021Oct 2026
BL11,575Aug 2021Oct 2026
CHN-SUPERLEA1,418Apr 2021Oct 2026
SWE-ALLSVENS1,390Apr 2021Oct 2026
NOR-ELITESER1,383May 2021Oct 2026
RUS-PREMIERL1,236Feb 2021Aug 2026
GSL1,231Sep 2021Oct 2026
SWZ-SUPERLEA1,222Jan 2021Oct 2026
SPL1,188Jul 2021Oct 2026
AUT-BUNDESLI1,143Jan 2021Oct 2026
DNK-SUPERLIG1,138Feb 2021Oct 2026
IRL-PREMIERD1,072Mar 2021Oct 2026
FIN-VEIKKAUS1,006Apr 2021Oct 2026
SC3950Jul 2021Oct 2026
SC2949Jul 2021Oct 2026
SCH948Jul 2021Oct 2026
ARG-COPADELA812Jan 2021May 2024
SWZ-CHALLENG2May 2021May 2021