Onze Maison

Track record

We put a number on every graduate. When one of them actually moves, the market marks our homework — and we publish the marking here.

Every row is one call: the estimate that was standing before the transfer, the fee that was really paid, and the gap between the two. Sharp calls and embarrassing ones, same table, same rules. Aggregators do not do this. That is rather the point.

Calls judged
10graduates we valued who then moved for a fee
Mean absolute error
€11.2maverage distance between our number and the fee
Within 25%
40%4 of 10 priced moves
Median gap
32%the typical miss, either direction

sharpestour best call

Danny Welbeck

we said €6m EST · they paid €5.9m FEE

+2% a shade high

softestour worst call

Kerim Alajbegović

we said €70.4m EST · they paid €32m FEE

+120% we were well over

Every call, judged

Newest move first. A positive gap means we were high, a negative one means the market paid more than we said. Anything past 25% is flagged in sienna — no hiding it.

Gap is our estimate against the reported fee, as a share of the fee. Add-ons, sell-on clauses and instalments are excluded unless the report gives a total. Every euro on this page is real money someone paid, except the ones badged EST — those are ours.

Our error by price band

The model is not equally sharp everywhere, and we can say where. Each band below is a tenth of our predictions, cheapest to dearest, scored against real transfers the model had never seen — refreshed at every retrain, never hand-tuned.

Our error by price band
BandnMean errorTypical missLean
€1.3m€5.5m59€5m58%25% low
€5.5m€8.2m60€6.3m57%15% low
€8.3m€12.6m59€7m48%level
€12.6m€16.4m60€8.2m37%3% low
€16.5m€20.1m59€9.7m34%16% high
€20.1m€24.3m60€11.5m38%7% low
€24.5m€30.4m59€12.6m39%5% high
€30.4m€38.5m60€12.6m35%10% high
€38.5m€52.8m59€14.6m29%16% high
€53.9m€112.7m60€20.9m26%12% high

Measured on 595 real transfers, replayed walk-forward: each prediction came from a model trained only on earlier fees, level calibration included. The mean error alone misleads across bands — €10m off is sharp work on a €100m player and a disaster on a €2m one — which is why the typical miss (the median gap, in %) and the lean (which way we usually miss) sit beside it. Euros in today’s money.

Reported facts on trial

Some head-of-market values are not model output but reported facts — a rejected bid, a release clause, an asking price — each published with its receipt. Facts go stale too, so we journal every one and wait for the market to test it: when an anchored player later moves for a disclosed fee, the pair lands here — how old the fact was, and how far from the money.

No anchor has yet been tested by the market. Collecting since 2026-08: 9 players carry an anchored value today. A half-life needs a sample — we would rather wait than fit a curve to a handful of points.

1 older pair can be reconstructed from a press date that precedes the fee — but we transcribed it afterwards, knowing the outcome, so it is shown as a receipt, not counted as evidence.

Reported facts on trial
The factAnchorFee paidFact ageAnchor ÷ fee
Anthony Gordon (hindsight)fee paid · 2026-05-29€70m REPORTED€81.1m FEE2026-07-0133 days0.86

A clause caps a value and a rejected bid floors one — their ratios check a bound, they do not measure an error. One more reason no average is printed.

What counts as a judged call

T1He has to be ours to judge
The player is an academy graduate on this site, and we had published a value for him before he moved. If we never put a number on a player, we do not get to claim him afterwards.
T2The fee has to be public
Disclosed fees only, with a link to the report. Undisclosed means unscoreable, so those moves stay off the table instead of being guessed at — a guess about a guess is not a track record.
T3The estimate is the old one
We are scored on the number that was standing before the transfer, from the snapshot published at the time, not on anything tidied up once the fee was known. The date of that snapshot sits under every estimate below.
T4Free transfers are listed, not scored
A move for nothing still shows up with the value we had on the player, because that gap is real money. It gets no percentage — you cannot be a percentage off zero — so it counts in the euro error and sits out of the median.
T5Nothing comes down
A humiliating row stays up exactly as long as a flattering one. The whole point of the page is that we do not get to curate it.

Why we bother

Anyone can publish a number. The only thing that separates a valuation from a guess is whether it is checked afterwards, in public, by someone who cannot edit the result. The rules say how we arrive at a value; this page says how often that value survived contact with a chairman.

Spotted a move we should have judged? Open an issue with the fee and the report. It lands in the next refresh, flattering or not.

Judged up to 2026-08-19 · rules phase0-r1r16-v1 · values gbt-v2.5. Fees as reported by the linked sources; no Transfermarkt data anywhere in the pipeline.