Methodology & Data
What the numbers mean, how they are computed, and what could make them wrong.
Data sources
| Source | Licence | Commercial use | Access | Updated |
|---|---|---|---|---|
| API-Football (free tier) Advanced counting stats. Requires API_FOOTBALL_KEY. | Proprietary API terms; free plan for personal/development use | review_required | rest_api | — |
| MoneyballAI models Elo, league strength, valuation, acquisition, Bargain Index. Estimates, not facts. | Derived data | allowed | derived | — |
| 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.com | review_required | bulk_csv | 6 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.