Data and code
Everything on this site can be checked and reproduced from these files. Version 2.5, 2 November 2026.
| File | Contents |
|---|---|
| positions_five_leagues.csv | Final position of every club, every season (England four divisions, elsewhere two), with its position band |
| realistic_ceilings.csv | What happened next to clubs in each position band: counts, shares, 95% ranges from resampling clubs, number of different clubs, and the seasons used (reserve teams excluded) |
| club_records.csv | Each club's record: seasons by division, titles, top-four finishes, promotions, relegations |
| final_tables_2025_26.txt | The official 2025/26 final tables used |
| official_position_changes.csv | Every position changed from the results-based table to the official classification (top divisions; England's tiers 2–4 and the 2. Bundesliga), with the reason |
| against_the_money_eng.csv | England: each club's average places above or below what its wage bill usually buys, with 95% intervals |
| against_the_money_fra.csv | France: the same |
| money_ceilings.csv | England and France: the realistic ceiling taking the wage bill into account, for each club in a position where it applies, with 95% ranges |
| money_ceiling_models.csv | The models behind those figures, with the out-of-sample check against position alone |
| mobility_intervals.csv | The mobility measure for each league with 95% ranges from resampling seasons, and for Spain without reserve teams |
| mobility_intervals_england_vs.csv | How often England's resampled mobility figure exceeds each other league's |
| mobility_intervals_block.csv | The same ranges when seasons are resampled in blocks of four, to allow for dependence between neighbouring seasons |
| mobility_intervals_block_england_vs.csv | England against each other league, block resampling |
| bottom_half_windows.csv | Bottom half to top four: the same share for different windows of seasons, with ranges |
| against_the_money_by_season.csv | England and France, season by season: finish, the finish the wage bill usually buys, wage bill and its rank |
| payroll_england.csv | England: club staff costs (£000) from Companies House accounts, with company number, year end and the cross-check |
| payroll_france.csv | France: club payroll (€000) from the DNCG's published accounts, with report and page |
| code.zip | The code that produces every figure |
Sources
- Match results 1992/93–2024/25: the engsoccerdata and football-data compilations; England 2022/23 from openfootball. Final tables 2025/26: the official tables as published on each league's Wikipedia page, checked against openfootball's results for the top divisions and the Championship.
- This season (2026/27): tables from football-data.org, provisional; openfootball's public-domain files as a fallback.
- England wage bills: statutory accounts at Companies House. France wage bills: the DNCG's annual reports on club accounts.
Licence
The code is under the MIT licence. The data files are under the GNU GPL (version 3 or later), because the match data derive from engsoccerdata, which is GPL-licensed. Please credit the project and the original sources. Details are in the repository.
Who made this
The Competitive Mobility Project is by Lamin Diallo. The code and data are on GitHub, including the register of tests written before the results were computed.
What is not here
- The original filings: they are public at their sources and cited row by row.
- Transfer-market valuations or anything derived from them.
- Anyone's individual pay.
- Club badges: they are the clubs' property.