Scout
A ranking, not a grade. It blends 60% the α forecast y 40% the z quality, each
part measured in standard deviations within their position — a +2.0 is two
deviations above the average player in their position.
It only scores players performing above their league and position average (z ≥ 0.5).
Without that floor, the ranking fills up with cheap kids who don't play well yet.
It used to be half quality and half bargain, and the result was 28-year-olds
in fourth divisions: genuinely cheap, genuinely useless.
α 12 meses
How much we expect their market value to change in one year, as a percentage. It comes from a model
trained on 89,983 player-seasons with their performance, league difficulty,
age, starting price, club strength, and international cup matches.
Validated out of sample the way it should be: trained through 2023 and tested on 2024 onwards,
with players the model never saw. Rank correlation 0.72 sobre 43.800 casos.
It's an estimate, and in new leagues it's less accurate (0.66 versus 0.77 in the usual ones).
And it's calibrated by data coverage. Measured out of sample, the model
raw promised too much precisely where data is scarcest: in leagues with coverage <60%
forecast +29% where the outcome was +16%, and in the top decile — where the ranking lives
scout-style — promised +33pp too much, while shortchanging the well-covered leagues.
That is why the scout top filled up with weak leagues. Each coverage band is
recalibrates now against what that band actually delivered: the promise of a league
a medio cubrir vale ×0.74, that of a fully covered one
×1.08. After the adjustment, the excess sits at ~0 across all four
bands.
★ Player of the match
How many times they were the highest-rated of the 22 on the pitch this season.
SofaScore doesn't publish that award as a data point: it goes to the highest rating of the match,
and we already had the match-by-match ratings, so this is arithmetic on
our own data, not a new source.
It measures something different from z: they correlate 0.57. The z is consistency,
this is peaks. Over 89,983 player-seasons it's worth t=+22.6 on top of
quality, age, price and year — from 0 awards to 9 or more, value went from +14% to +45%.
It doesn't improve the forecast: adding it to the model moved the IC from 0.7232 to
0.7234. The model already extracted that signal from other variables. It's here because you get it
at a glance, not because it adds precision.
Profile by area
Each axis is the average of the percentiles we have for that area, measured
within their position family and against all 147 leagues. The problem is that
not all leagues publish the same metrics: the Primera Federación provides one of
the three Finishing metrics, the Premier all three.
And averaging one metric is not the same as averaging three. With one,
a single good number is enough to reach 99; with three, you need three. Without correcting it,
the 9,7% of players with a single metric reached 90 or more
in Finishing, versus the 0,2% of those with three — not
because they were better, but because their average wasn't diluted. The complete ones came out
penalized.
Now each player is ranked against the others measured with the same
metrics, within their position family. That way a 90 means the same thing
everywhere: the top 10% among those measured the same way.
We didn't pick it by eye. In leagues that publish everything we know the answer, so
we masked two out of every three metrics precisely in the weakest leagues — which is how
coverage actually fails — and checked which rule recovers the number we would have
given with complete information. Across five categories and 106,000 players, ranking
within the group was the only thing that kept the tails even in all five
(10,0% contra 10,0%), and in Defense it was
also the best at reproducing the real order between leagues (error 0.022 versus 0.294
for no correction at all).
The cost: within a category, level differences between
coverage groups get flattened — in Defense the blinded group sits 5.2 points below
its truth. Calibrating the shift instead of ranking recovers that
(bias +0.5) and is more accurate player by player, but leaves the poor-league player with a
0,7% chance of reaching 90 versus the 17,2% of everyone
else: it gives the ceiling back, which is the bug we came from. For a number that gets
compared across profiles, we'd rather it mean the same thing in all of them.
✚ Days out
Days lost to injury over the last two years, from Transfermarkt's
history, with the type of the longest injury. It covers all 15,167 players
on the platform.
What an injury costs we measure over 45,538 player-seasons, and the
honest comparison is lesionado contra lesionado: someone with zero days
out may be healthy or may just not be playing, and mixing them makes a short
knock look like it suma. Among those who did get injured, doubling the days
out costs −3,6% of the following year's value
(t=−12,4). Versus an absence of a month or less: 1-3 months
−6,3%, 3-6 meses −12,7%, more than half a year
−15,9%.
It doesn't enter the model either: the IC goes from 0.7581 to 0.7590. Minutes are
already in, and not playing is the injury's channel — with minutes in the regression,
the effect of 6+ months collapses from −7.9% to −0.1%. And it doesn't explain our fights
with the market: the median is 0 days across all gap bands, and among the
300 largest gaps there's 13.0% with four months lost versus 10.5% of the
rest. It's a data point to read, not a discount on the price.
z · calidad
Their average SofaScore rating, converted to standard deviations within their own league,
season and position. A 7.2 doesn't mean the same in the Premier as in the Peruvian second tier;
this puts it on the same scale.
Before standardizing we subtract their club's quality, because otherwise a good
keeper on a relegation side got punished for the goals conceded and a mediocre one at the
champions got rewarded.
Fair value and gap
El fair value is what their profile justifies charging today: quality, league difficulty,
age (smooth curve, not brackets), minutes, goals and assists, club strength, contract years remaining,
being a foreigner in their league, an exporter-country passport, and height where the market pays for it (keepers and center-backs).
R² — sobre — players today.
La brecha is the difference with the Transfermarkt price. +50% means the
market pays 50% below what the profile justifies. It's re-centered against the best-paid
position they can play: a winger who also plays as a playmaker is compared with playmakers.
Validated where it matters: on the historical panel, players in the most
undervalued decile went up the following year and those in the most overvalued went down, across all ten deciles without jumps.
But it doesn't predict a club overpaying above the list price — we tested that against
real transfers and it doesn't hold up.
One single model, and why. Every new data point that arrived — height, versatility, fine-grained
position, player of the match, injuries, and FotMob's advanced metrics (recoveries,
pressing, blocks) — went through the same test: does it improve the gap's ability to
anticipate what the market does afterwards, out of sample? All of them improve the fit
to today's price; none improved the prediction, FotMob included (IC 0.359 without, 0.352 with,
over 7,783 historical player-seasons). So they're shown as data on the profile and don't
enter the model. Only contract and passport made it in, and only because the market pays for them.
The €60M cap — who we do NOT value. There is no valuation for players above
€60M, and they're not in the Explorer: above that price, market value is
marketing, scarcity and clauses — things this model doesn't measure. And there isn't enough history
to calibrate: in 98,000 player-seasons there isn't a single case of a ≥€30M player the model
called 40% overvalued where you can check what happened, and buy signals in
€60–100M hit 13% — worse than a coin flip. Rather than invent a number for
Bellingham, we stay quiet. Our turf is the market where a real club buys:
from €0 to €60M. Between €15M and €60M the player is shown, but a negative gap
gets explained rather than asserted (the star premium isn't in the regression).
A gap of +200% doesn't mean the same at 19 as at 31, and the probability
that comes with it knows that: the certainty model takes the gap along with age and price,
and returns what a gap like that, in that profile, did afterwards. For a cheap under-22 P(rises)
usually tops 80%; past 30, with the same gap, it drops below 20%. No caps,
no lookup tables: the same probability for everyone, calibrated.