Football clubs still talk about the pitch and the payroll as if they live on different planets. Recruitment boards celebrate goals and expected goals; finance teams stare at wage bills and amortisation schedules. Fans argue about “value,” but usually mean vibes.
We wanted a single board that answers a sharper question:
How much on-pitch production do clubs and players deliver for the wages and market prices they command?
That question sits at the intersection of sports analytics and sports business — exactly the space AQX Sports Analytics Data Bowl 3.0 encourages. PitchValue grew from that gap: not another shot map for its own sake, but a decision surface that turns performance data into buy, sell, and restructure signals.
PitchValue is an interactive football (soccer) analytics dashboard that links:
- club wage bills and points
- process quality via (xG - xGA)
- finishing variance (“table luck”)
- player contribution (goals, assists, progressive actions, defensive work, minutes)
- market values and weekly wages
into:
- a club efficiency board
- a player fair-value radar
- a form + short-horizon forecast view
- an actions feed (buy / sell / watch / hold)
The prototype ships with a Premier League–style demo dataset so anyone can run it with zero API keys, then swap in live feeds later.
- React + TypeScript + Vite for a fast, shareable web prototype
- Recharts for wage–points scatters, efficiency bars, market-vs-performance plots, and form series
- A small in-repo analytics engine (
src/lib/analytics.ts) so every score is transparent and auditable
For each club we compute points productivity relative to wages, process quality, and a mild penalty for extreme finishing luck.
Let (P) be points, (W) wage bill (£M), (xG) and (xGA) expected goals for and against.
[ \text{Process} = xG - xGA ]
[ \text{Finishing luck} = (GF - GA) - (xG - xGA) ]
Wage productivity is essentially (P / W). We then blend productivity and process into a (0)–(100) efficiency score, and report a value gap:
[ \text{Value gap} = P \cdot \overline{(W/P)}_{\text{league}} - W ]
Positive gap ≈ leaner than the league wage-to-points norm; negative ≈ overpaying for current output.
Each player gets a performance index (PI) from box outcomes, creation, progressive actions, defensive contribution, and availability. Fair market value is an age- and position-adjusted transform of PI:
[ V_{\text{fair}} = f(\text{PI}, \text{age}, \text{position}) ]
[ \text{Premium} = V_{\text{market}} - V_{\text{fair}} ]
Relative premium tags players as undervalued, fair, or overvalued. A simple form series (last eight match contribution scores) produces a short forecast for the next window.
We treated the UI as part of the analysis: brand-first hero, one job per section, interactive tables tied to charts, and board-ready insight cards so judges (and non-technical readers) can see what to do, not only what happened.
-
Balancing realism and reproducibility. Live Transfermarkt / Opta feeds need keys, scraping, or paid access. For an open-source bowl we chose a rich offline demo dataset plus a documented path to real feeds — so the prototype always runs, and the method stays honest.
-
Avoiding a black-box “AI valuation.” A mysterious model score doesn’t help a sporting director. We kept formulas explainable (PI → fair value → premium tag) even if that meant a simpler regression-style story.
-
Separating process from results. Points alone punish good process and reward finishing variance. Explicitly surfacing (xG - xGA) and finishing luck forced harder product choices, but made the efficiency ranking more trustworthy.
-
Insight quality vs. chart noise. Early versions showed every metric at once. We cut down to one composition per section and auto-generated a short action feed so impact stayed readable.
-
Environment friction. Local Node tooling differences slowed the first scaffold; pinning a Vite 5 + React 18 stack kept the project portable for GitHub / Vercel.
- Sports business metrics (wages, market values) become much more useful when fused with process metrics, not only outcomes.
- Judges and users respond to actionable framing (buy / sell / restructure) more than raw leaderboards.
- Open-source sports analytics wins when the repo is clone →
npm install→npm run devwith no secrets required. - Transparency matters: if you can’t write the valuation idea in a few lines of Markdown and light math, the dashboard probably won’t convince a front office either.
- A working, public-ready prototype centered on a real sports problem: payroll vs. pitch production
- Interactive club and player boards with linked selection and scouting cards
- An auto-generated decision layer, not only charts
- Clean MIT-licensed repo structure, README submission blurb, and one-click deploy config
- Plug in live FBref / StatsBomb / Transfermarkt-style feeds
- Multi-league comparison and a simple transfer simulator
- Injury-adjusted minutes and stronger forecast validation
- Exportable PDF scouting packs for recruitment workflows
One-liner for Devpost: PitchValue is an open-source football analytics app that prices squad efficiency — linking wages, market values, and on-pitch process metrics into buy/sell/watch actions clubs can actually use.