Everything on Football Ranked comes out of three engines and one simulator, all built in-house from public match data and re-run every night. This page explains what each number means and how it is computed — enough for a curious fan to trust it and a skeptic to poke holes in it. Nothing here is a prediction or advice; these are model outputs.
Every club and national side carries a single Elo rating — a number, roughly on a 1100–2100 scale, that goes up when a team does better than the model expected and down when it does worse. Before each match the model turns the two ratings into a win-expectancy for the home side, adding a home-advantage bonus of 65 Elo points when a team plays on its own ground (zero at a genuinely neutral venue). After the match, the rating shifts toward the actual result, scaled up when the winning margin is larger.
How much a single result can move a rating — the K-factor — depends on the competition. Ordinary domestic-league matches move ratings a moderate amount; domestic cups move them a little less; and the continental competitions that pit leagues against each other move them a little more, because those cross-border results are what calibrate one country’s league against another. National-team matches sit in a separate pool with their own weights — a World Cup result counts for far more than a friendly.
A team that appears for the first time isn’t dropped in at a guess. It is seeded from an anchor— a starting level calibrated to its division’s typical strength — and nudged down a fixed amount, since newcomers to a level are usually the weaker sides in it. From there the ratings correct themselves within a few weeks of real results, and continental and cup ties keep every league honest against the others. The full anchor table and the exact constants live in the engine code, which is the source of truth wherever this description and the numbers ever drift apart.
Each player carries a rating on the same scale as team Elo, earned from their per-match performance rather than their reputation. The model reads what a player did in each game — the on-ball contributions the data records — and moves the rating accordingly, alongside an uncertainty value that starts wide for a newcomer and narrows as the player accumulates rated minutes. A young debutant is deliberately given a cautious starting rating, inherited from the level of their club, and allowed to climb as they prove it.
The headline 1–100 number is the Football Ranked OVR. It is a presentation of the underlying rating, mapped onto a 1–100 scale against the whole active player population at each nightly re-fit, so a given OVR means the same thing across leagues and the scale re-anchors honestly as the global standard shifts. It is our own metric, computed from our own rating — not a licence of anyone else’s.
Each player also gets a model-estimated market value in euros. It is a transparent formula, not a black box and not scraped from anywhere: it starts from the player’s OVR and adjusts for age, how much they actually play, the direction their rating is trending, the depth of their league’s transfer market, their position, and how certain the model is about them. Values are recomputed nightly and smoothed over a rolling window so they move like a market rather than jumping around. They are an analytical estimate of what a player is worth, not a quoted or agreed fee.
A forecast is produced by simulating the rest of a competition 10,000 times— a Monte Carlo run. In each simulated season the model plays out every remaining fixture using the same Elo-derived match probabilities described above, adds a season-long strength wobble so a team’s form can drift, and records where everyone finished. Counting how often each outcome happens across all 10,000 runs gives the probabilities you see: title odds, top-four odds, relegation odds, projected points. The run uses a fixed random seed each night, so the same inputs always produce the same forecast — there is nothing hand-tuned per team.
The scoreline of each simulated match is anchored to the same win/draw/loss model the rest of the site uses. Draws are the hardest part to get right, and they follow a fitted curve — the more evenly matched two sides are, the more likely a draw:
P(draw) = 0.30 · (1 − |2E − 1|)0.4
where Eis the home side’s win-expectancy from the two Elo ratings. This puts the draw rate near 30% for a coin-flip fixture and around 14% for a lopsided one, tracking the historical rate within about a percentage point.
A “forecast” is exactly this: a set of model probabilities, not a prediction of what will happen and not a guarantee. Injuries, suspensions, transfers and rotation the model can’t see will move the real world away from it. Forecasts refresh at the roughly 03:00 UTC nightly re-run and are served from a cache no older than 36 hours, so what you read is always at most a day behind the latest results.
A rating system is only as good as its track record, so every nightly run is checked by a battery of automated gates: backtests that check the projected finishing bands actually contain the real final points at the stated rate, Brier-score checks on the title and relegation probabilities, and per-league audits that the simulated tables are internally coherent. These run right after each night’s numbers are published and are recorded with the run, so a failing gate raises a flag for us to investigate rather than passing silently. And because each engine writes its table in a single database transaction, a run that dies partway through leaves the previous night’s numbers in place rather than a half-finished update.
You don’t have to take that on faith. Every league’s Matches tab shows what the model said before each game was played — the exact pre-match win/draw/loss numbers it logged — and keeps a running season ledger of how often its most-likely call was right. Browse the live forecasts from the forecasts hub.
Every club from a UEFA country carries a UEFA coefficient, and every association a country coefficient — both computed here from the stored results of the Champions League, Europa League and Conference League, using the public UEFA point regulations rather than any published table. A club earns 2 points for a win and 1 for a drawin the group or league phase, halved to 1 and 0.5 in the qualifying and play-off rounds, plus fixed bonuses for reaching the group or league phase, for its final league-phase placement, and for each knockout stage it reaches. A season’s club total is also lifted to a minimum set by the furthest qualifying round the club reached, so an early exit still counts for something.
An association’s season coefficient is the sum of its clubs’ points divided by the number of clubs it entered, truncated to three decimals; the ranking everyone quotes is the rolling sum of the last five seasons. A club’s five-year coefficient is its own five-season sum, floored at 20% of its association’s five-year figure so that a club from a strong country is never valued below a share of that country’s standing. Windows that end before 2019 span fewer than five seasons — our data begins in 2015/16 — and are labelled as partial; the current season is still in progress, computed nightly with match points and qualifying minimums while placement and group bonuses are held back until each competition’s main phase completes.
These figures are computed independently from match results and are unofficial: Football Ranked is not affiliated with, sponsored by, or endorsed by UEFA, and small differences from the official coefficients are expected at the edges.
The derived numbers are yours to cite and build on. Four CSV files are published, free and without an account, refreshed with the nightly run. They contain our derived output only — ratings, projections and probabilities — never the raw underlying match data. Each file’s columns are a stable contract in a fixed order, so you can script against them.
One row per current team — every rated club, then every national side, ordered by team id.
team_id— the team’s stable numeric id.name — team name.country— the team’s country.national — true for a national side, false for a club.elo — current Elo rating, rounded to a whole number.updated_date — the date (UTC) of the nightly run that last moved this rating.One row per (league, team) across every league with a live forecast, ordered by league id and then by projected finishing position.
league_id / league / season — the competition and season the row belongs to.team_id / team — the team.played — matches played so far.pts — points on the board now.proj_pts — projected final points (mean across the 10,000 runs, one decimal).p_title — probability of finishing 1st, as a decimal in 0–1 to four places.p_bottom3 — probability of finishing in the bottom three, as a decimal in 0–1 to four places.One row per (club, season) in the UEFA-coefficient history, every season from 2015/16, ordered by season and then team id. See the UEFA coefficients section above for how the numbers are derived.
season— the season’s start year (2024 = the 2024/25 season).team_id / team — the club.association— the club’s UEFA association (display name).points— the club’s coefficient points that season.assoc_points — the portion of points that counts toward the country pot.matches — European matches the club played that season (0 for a window-carrying row).entered / exited — where the club started and finished its run, as COMP:ROUND tokens (e.g. UCL:PO, UEL:SF, UCL:W for the winners); exited is empty while a club is still in the current season.own5— the club’s own five-season points sum ending that season.coeff5 — the effective five-year coefficient (own5floored at 20% of the association’s five-year figure).rank5— the club’s rank in Europe on coeff5 that season.One row per (association, season), every season from 2015/16, ordered by association and then season.
association / season— the UEFA association and the season’s start year.points— the sum of the association’s clubs’ contributing points that season.clubs — the number of clubs the association entered that season.coeff — the season coefficient (points ÷ clubs, truncated to three decimals).coeff5 — the five-season rolling sum used for the ranking.rank5— the association’s rank in Europe on coeff5 that season.Football Ranked is independent and not affiliated with ClubElo, eloratings.net, FIDE, FIFA, or any league. Ratings, values and forecasts are our own model outputs, computed from public match data; the raw underlying data belongs to its providers.