FairValue

Checking model

Esc

  • EnvironmentOverviewWhat FairValue measures, what it found, where to go next.
  • EnvironmentTerminalExplore, compare and track players; market, league and model views.
  • EnvironmentStoriesValuations, head-to-heads and research findings, told as stories.
  • TerminalPlayer ExplorerSearch, filter and sort the player export.
  • TerminalComparison StudioTwo to four players on one scale.
  • TerminalWatchlistsNamed collections, kept in this browser.
  • TerminalMarket LandscapeHow observed value is distributed, and where the model drifts.

↑ ↓ to move · Enter to open · Esc to closeLoading player index…

Denis

Odoi

CBGhana · NAC Breda

№ 59641Emerging €105k +0.36

Player dossierEredivisie

DenisOdoi

CBCentre-BackDefender

Club
NAC Breda
League
Eredivisie
Nationality
Ghana
Age
38
Height
178 cm
Foot
Right
Valued
28 May 2026

Reading the valuation

The market values Odoi at €150k. Model A, which never saw Odoi during training, estimates €105k: the market value is 43% above that estimate.

That is a factor of ×1.43. Model A's typical held-out miss is ×1.50 either way, so this gap is within its usual error.

Without league and club, Model B estimates €124k, closer to the market here, although it is usually further off (typical miss ×2.07).

A gap describes the model's arithmetic for this player's inputs, not what the player is worth.

▲ +0.36A €105k▲ +0.19B €124k
Pitch length is a log value scale fitted to this player's figures. ● observed · ◇ Model A · dashed ◇ Model B · each arc is a residual, log(observed) − log(estimate).
Apps
37
Minutes
2,952
Goals
1
Assists
2
Started
33/37
Min / app
80
Cards
13Y 0R

Club matches, two years to the valuation date

The Valuation Journey

What moves Model A

Asking the prediction API to explain Model A for Odoi…

SHAP describes the model's arithmetic for this player's inputs, not what causes market value. Model B can be explained only by the live service; Model A also has a published explanation for the research players.

Model A vs Model B against the observed €150k

Checking API
EmergingEstablishedEliteWorld Class€2M€10M€30M€100k€1M€100MMarket €150kModel A €105k

Asking the prediction API…

Held-out estimates come from cross-validation, with this player outside the training data: the honest comparison. Served models were refitted on every player, this one included, so they sit closer to the market. Shaded band: Model A's typical miss (×1.50 either way).

Player traitspercentiles vs 2,065 defenders

Denis Odoi's percentiles among defenders: Goals per 90 49th, Assists per 90 63rd, Minutes, two years 52nd, Starts 67th, Minutes, last 365 days 45th, European club minutes 30th49thGoals63rdAssists52ndMinutes67thStarts45thRecent30thEurope

Dashed ring: the defender median (50th percentile)

Starts

Share of appearances started rather than entered from the bench.

89% this player83% defender median67th percentile

18%peer deciles · median line · this player ●100%

No passing, progression or defensive actions exist in the dataset, so no trait claims to measure them.

Valuation history every Transfermarkt valuation on record

First valuation
€100k
Nov 2007
Peak
€2.5M
Jun 2019
Model target
€150k
May 2026
Valuations
39
8 club changes
May 2026€150kNAC BredaValuation the model is trained to reproduce

May 2026: €150k, NAC Breda. Dotted lines mark the €2M, €10M and €30M tier boundaries.

Show as a table
DateMarket valueClub
2007-11-23€100kOud-Heverlee Leuven
2008-10-09€200kOud-Heverlee Leuven
2009-07-08€300kSint-Truidense VV
2009-09-04€500kSint-Truidense VV
2010-01-25€650kSint-Truidense VV
2010-07-28€850kSint-Truidense VV
2011-01-10€1.2MSint-Truidense VV
2011-06-30€1.5MSint-Truidense VV
2012-06-17€2MRSC Anderlecht
2013-01-09€1.5MRSC Anderlecht
2013-06-25€1.3MRSC Anderlecht
2014-02-10€1.5MKSC Lokeren (-2020)
2014-06-28€1.5MKSC Lokeren (-2020)
2015-01-07€1.7MKSC Lokeren (-2020)
2015-03-24€2MKSC Lokeren (-2020)
2015-10-22€1.8MKSC Lokeren (-2020)
2016-02-07€1.5MKSC Lokeren (-2020)
2016-09-01€1.3MFulham FC
2017-02-27€1MFulham FC
2017-09-18€1MFulham FC
2018-02-27€1MFulham FC
2018-08-13€1.5MFulham FC
2018-12-19€2MFulham FC
2019-06-13€2.5MFulham FC
2020-02-27€2MFulham FC
2020-04-08€1.6MFulham FC
2020-10-13€1.6MFulham FC
2021-03-18€1MFulham FC
2021-06-08€600kFulham FC
2021-11-24€500kFulham FC
2022-04-12€700kClub Brugge KV
2022-11-04€600kClub Brugge KV
2023-06-09€400kClub Brugge KV
2023-12-19€400kClub Brugge KV
2024-06-04€300kClub Brugge KV
2024-12-11€300kRoyal Antwerp FC
2025-06-12€250kRoyal Antwerp FC
2025-10-21€200kWithout Club
2026-05-28€150kNAC Breda

Audit context group-level, not about this player

Audit group
non-UEFA
Population gap, Model A
+0.093 95% CI +0.063 to +0.124
This player, market vs held-out A
+0.356

The group comes from first-listed citizenship and is never a model input. Across the population, non-UEFA players' market values sit about 10% above Model A's held-out estimates, relative to UEFA players in the same leagues. One player's residual says nothing about that pattern (typical miss ×1.50), and none of it is evidence of discrimination: the target may itself be biased. Open the Fairness Audit

In context observed value among comparable players in this build

All players in the Terminal →

Eredivisie425 players · median €1M

Valued above 1% of the 425 Eredivisie players.

€75k€500k€3M€20M€150kSee them in the Explorer →

Defenders, all leagues2,065 players · median €2M

Valued above 3% of the 2,065 defenders.

€20k€200k€2M€20M€150kSee them in the Explorer →

Where Odoi appears

Watchlists and the comparison tray are kept in this browser only.

Near this valuation closest observed values: same league, then same position

Counts and ranks of observed Transfermarkt values only; model errors are never ranked here. Full player export: Every player in the modelling population (D-011).