Methodology & Data

What the numbers mean, how they are computed, and what could make them wrong.

Data sources

SourceLicenceCommercial useAccessUpdated
API-Football (free tier)
Advanced counting stats. Requires API_FOOTBALL_KEY.
Proprietary API terms; free plan for personal/development usereview_requiredrest_api—
MoneyballAI models
Elo, league strength, valuation, acquisition, Bargain Index. Estimates, not facts.
Derived dataallowedderived—
transfermarkt-datasets (dcaribou)
~50k players, ~30 first-division leagues + UEFA competitions, 2012/13 onwards. No xG / event data, no injury data. Contract expiry only for current contracts.
CC0-1.0 (compiled dataset); underlying facts from transfermarkt.comreview_requiredbulk_csv6 days ago

MoneyballAI does not scrape websites whose terms forbid it. The bulk dataset is the open, CC0-licensed transfermarkt-datasets project; its facts originate from Transfermarkt, so a commercial launch should review that dependency. Optional sources (API-Football free tier) plug in through the provider interfaces. Unavailable in the current free data: xG/xA, event data (passes, pressures, carries), injuries, physical/tracking data, release clauses, historical contracts. These are shown as “Data unavailable”, never estimated.

Coverage: player match data covers 14 European top divisions (England, Spain, Italy, Germany, France, Netherlands, Portugal, Belgium, Türkiye, Russia, Ukraine, Scotland, Greece, Denmark) from 2012/13, plus UEFA competitions. Other leagues (e.g. Brazil, MLS, Austria) have team results and market values only.

Context engine

  • Club strength: Elo over all league and continental matches (domestic cups excluded — ties against unrated lower-division sides distort ratings). New clubs start from a squad-market-value prior; provisional ratings stop newcomers from donating points.
  • League strength: a ridge-regularised Bradley–Terry model fitted each season on continental matches (last three seasons, weighted), using each club’s standing within its own league. Leagues that rarely play abroad lean on a squad-value prior and are flagged “low confidence”. Coefficient 1.00 = the average club of the big-five leagues.
  • Opponent strength: pre-match Elo of each opponent (using only earlier results); per-player averages are minutes-weighted.
  • Context-adjusted output: goals + assists per 90, (1) shrunk toward the positional baseline with a 900-minute prior (small samples pulled toward normal), (2) corrected for team dominance over opponents (fitted Poisson elasticity), (3) expressed relative to positional peers in the same league-season.
  • League translation: observed outcomes of players who changed league (relative output kept, share who held a 900+ minute role). A single multiplier is not applied because movers are a selected group; the data showed roughly constant relative output in both directions.

Valuation models

  • Model value (performance-implied): quantile gradient boosting (20/50/80%) predicting market value from performance, context, age, position — with no market-value inputs. It answers “what does the market usually pay for this output, in this context, at this age?”.
  • Projected value (24 months): the same method predicting value ~2 years later, including current value and value trend. Players who later have no valuation count at their last known value.
  • Acquisition estimate: fee ÷ market value learnt from paid transfers (age, position, value level and trend, selling league and club strength). Contract length is a documented heuristic applied only when the current contract end date is known. Wages and signing fees are not modelled.
  • Ranges are widened each year so that ~60% of the previous year’s out-of-sample outcomes fall inside them (split-conformal calibration).

Bargain Index

score = expected 2-year log value change + log(market value ÷ acquisition estimate). Expected change is a linear combination of model outputs (projected appreciation, performance-implied gap, uncertainty, value size) whose weights are fitted on earlier years’ out-of-sample outputs against realised outcomes, never hand-picked. The cost term is capped (a near-free transfer is scored as half price). The index is the percentile of the score among evaluated players (≥ 900 league minutes, value ≥ €250k, age ≤ 33). An index of 91 means the player’s expected value for money ranks above 91% of that pool.

Value Gap (performance-implied value minus acquisition estimate) is shown for explanation. In backtests it had little predictive power on its own with the current data — the projection model carries most of the signal.

Risk, development, confidence

  • Risk: sum of flagged issues (sample size, league level, no continental minutes, contract, age, projection width, low minutes share, declining trajectory) → Low / Moderate / High / Very High. Injury history is unavailable and always listed.
  • Development: rules over age, age-adjusted performance percentile (vs same-age positional peers) and breakout probability. Presentation layer over validated model outputs, not a separately validated model.
  • Breakout probability: gradient-boosted classifier for “value at least doubles within ~2 years”, ages ≤ 23, validated walk-forward.
  • Data confidence: High requires event-level metrics (not in the free source), so most players are Medium at best.

What could make the model wrong

  • Market values are themselves opinions; projections learn the market’s habits, including its biases.
  • No xG, event, tracking or injury data: two players with equal goals + assists can be very different players.
  • Survivorship and selection: movers, sold players and players who leave coverage are selected groups.
  • Leagues with few continental matches have uncertain levels; the 2022+ Russian league has almost none.
  • Fees, contracts and market values come from a third-party dataset that can be stale for individual players.

A player identified as a bargain is a statistical opportunity based on available information. It does not guarantee future success, a transfer, a higher market value, better performance or resale profit.