Competitive Mobility Project

Data and code

Everything on this site can be checked and reproduced from these files. Version 2.5, 2 November 2026.

FileContents
positions_five_leagues.csvFinal position of every club, every season (England four divisions, elsewhere two), with its position band
realistic_ceilings.csvWhat 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.csvEach club's record: seasons by division, titles, top-four finishes, promotions, relegations
final_tables_2025_26.txtThe official 2025/26 final tables used
official_position_changes.csvEvery 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.csvEngland: each club's average places above or below what its wage bill usually buys, with 95% intervals
against_the_money_fra.csvFrance: the same
money_ceilings.csvEngland 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.csvThe models behind those figures, with the out-of-sample check against position alone
mobility_intervals.csvThe mobility measure for each league with 95% ranges from resampling seasons, and for Spain without reserve teams
mobility_intervals_england_vs.csvHow often England's resampled mobility figure exceeds each other league's
mobility_intervals_block.csvThe same ranges when seasons are resampled in blocks of four, to allow for dependence between neighbouring seasons
mobility_intervals_block_england_vs.csvEngland against each other league, block resampling
bottom_half_windows.csvBottom half to top four: the same share for different windows of seasons, with ranges
against_the_money_by_season.csvEngland and France, season by season: finish, the finish the wage bill usually buys, wage bill and its rank
payroll_england.csvEngland: club staff costs (£000) from Companies House accounts, with company number, year end and the cross-check
payroll_france.csvFrance: club payroll (€000) from the DNCG's published accounts, with report and page
code.zipThe code that produces every figure

Sources

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