Transfer Normalization

loading…

Season price index, 1996–2026

Hedonic season effects holding age, position, league and window fixed. 2010–2016 average = 100. Two sources, chain-linked at their 2017–2022 overlap.

What is this fee worth in 2010–2016 money?

Every top-5-league transfer since 1996, restated at the base-era price level. Search a player or club.

PlayerYearToAge Fee €mAdjusted €m Era premium

Fee against what the model expected

Model D, 2017–2026. Knows age, position, league, window, international caps and — crucially — where the player sat in that season's market-value distribution. Search below, or read the extremes.

PlayerYearToFee €m Market val €mModel €m Fee / model

Biggest bargains

Fees far below the model, €10m+.

PlayerYrToFee Model×

Paid most above model

Fees far above the model, €10m+.

PlayerYrToFee Model×

Why two sources

Same filter, same leagues, both scraped from Transfermarkt. The newer dataset holds a fraction of the older one's pre-2015 transfers, and the ones it does hold sit systematically higher. Anchoring the base era there would have inflated the base and understated every inflation number on this page.

Year n (ewenme)n (Transfermarkt) median ewenmemedian TM log gap

What the valuation model learned

Non-season, non-league terms from Model D. Percentages are the effect on the fee, holding everything else constant.

TermCoefSE tEffectReading

Cross-checks on the index

Two much cruder measures, for comparison.

YearRegression Median feeMean fee Spend €m

Is the market value contaminated by the fee it predicts?

Transfermarkt valuations are crowd-set and can drift toward rumoured fees. If that were happening, the model would be partly predicting the fee from the fee. Two signatures separate the possibilities: circularity is a cliff — correlation collapses over the first ~60 days of lag and then flattens; information decay is a smooth, decelerating slope with no kink.

corr(log fee, log market value)

Contract expiry, inferred

Nobody publishes historical contract-expiry dates, so the model infers them: contracts run four to five years, so how long a player has already been at the club he is leaving proxies how much of his deal is left. Computed from his own transfer history. Below: fee against a model that does not know tenure, full sample, no fee floor.

What staleness costs

The valuation model refit on progressively older valuations.

Valuation usedn R²resid sd
Even a year-old valuation leaves the model far above the 0.25 it manages with no valuation at all. The predictive power is real, not an artefact of knowing the answer.

Does prior-season output add anything?

Minutes, goals and assists in the 365 days before the move, from 1.9M appearance records.

Valuationbase R² + outputgain
With a current valuation, performance adds nothing — minutes played carries t = 0.5. With a six-month-old one it adds real signal (minutes t = 13.0, goals per 90 t = 7.9). Performance statistics are a substitute for a fresh valuation, not a complement: the Transfermarkt crowd has already priced the football in. So the model keeps the valuation and leaves the appearance data out.