Football Analytics Platform

Real Oviedo
Dashboard Guide

A complete walkthrough of every page, chart, model, and metric — from squad diagnostics and global scouting to match outcome predictions powered by a leakage-free Poisson model.

Open Dashboard ↗ Explore pages ↓
15
Dashboard pages
25+
Leagues tracked
1430
Matches modelled
4
Data sources
1
Squad Overview

📋 Complete Squad
Performance Map

A high-level diagnostic of the entire Oviedo squad. Answers the fundamental question: how is each player performing relative to expectation? Goals vs. xG discrepancies, positional balance, and build-up contribution are surfaced in a single unified view before diving deeper.

Visualisations

⬤ Goals vs xG Scatter ◉ Position Distribution ⬤ xG Chain vs xG Buildup ⬤ La Liga Historical ⊞ Full Squad Table

Charts & Analysis

Goals vs xG Scatter — Each player plotted against their expected output. Points above the diagonal are overperforming; below are underperforming. Oviedo players highlighted in gold.
Positional Breakdown Donut — Squad composition across FW, MF, DF, GK with counts and percentage split, revealing structural depth and potential gaps.
xG Chain vs xG Buildup Scatter — Measures involvement in attacking moves: xG Chain captures full sequence participation; xG Buildup excludes shot and assist actions, isolating pure build-up players.
La Liga Historical Comparison — Current squad benchmarked against historical La Liga xG data. Contextualises whether Oviedo's output levels are structurally unusual or within normal variance.
Full Squad Table — Sortable, searchable table of all players with goals, assists, xG, npxG, xA, xG Chain, xG Buildup, key passes, shots, SoT%, and 90s played.

Key Metrics — Page 1

xGExpected Goals: probability sum of all shots taken
npxGNon-Penalty xG: xG excluding penalty kicks
xAExpected Assists: xG value of chances created
Goals − xGFinishing over/under-performance vs expectation
xG ChainTotal xG from all sequences the player was involved in
xG BuildupxG Chain excluding the shot and assist — pure build-up value
Key PassesPasses leading directly to a shot attempt
90sMinutes played ÷ 90 — sample size normaliser
2
Finishing Crisis

📉 Diagnosing the
Goal Drought

Oviedo's challenge is not solely an xG creation problem — it is a systematic finishing underperformance. This page isolates the gap between expected and actual output, profiles shot quality and volume, and contextualises the issue against La Liga's top forwards.

Visualisations

▮ Finishing Deficit Bar ⬤ Shot Quality/Volume (4Q) ▮ xG Chain Stacked Bar ▥ La Liga Forward Comparison

Charts & Analysis

Finishing Deficit Bar Chart — Per-player Goals−xG ranked from worst underperformer to best. Red bars indicate the finishing debt each player carries versus their expected output.
Shot Quality vs Volume Scatter (4 Quadrants) — Players in four zones: High Quality/High Volume (ideal), High Volume/Low Quality (greedy shooter), Low Volume/High Quality (clinical but underused), Low on both (peripheral attacker). La Liga median reference lines.
xG Chain Stacked Bar — Per-player breakdown of how total xG Chain is composed: direct shots, assist actions, and pure build-up sequences.
La Liga Forward Comparison Box Plot — Distribution of Goals, xG, and Goals−xG across all La Liga forwards with Oviedo players highlighted. Reveals whether the finishing gap is player-specific or structural.

Key Metrics — Page 2

Goals − xGFinishing over/under-performance: positive = clinical, negative = wasteful
xG/ShotAverage shot quality: higher = better chances taken
G/ShotActual conversion rate: goals per shot attempted
SoT%Shots on Target %: fraction of shots requiring a save
ConversionGoals ÷ Shots on Target: finishing efficiency per on-target shot
xG ChainTotal xG from all attacking sequences the player participated in
Shots/90Shot volume per 90 minutes: volume proxy normalised for minutes
🛡️
Defensive Crisis

🛡️ Diagnosing the
Defensive Collapse

Oviedo's survival challenge has a second front: defensive fragility. This page maps Oviedo's defenders against every La Liga outfield player using FBref defensive tracking data — tackles won, interceptions, and disciplinary record — to build an evidence-based case for targeted reinforcements.

Visualisations

⬤ Defensive Activity vs Discipline ⊞ Oviedo Defender Percentile Table ▮ Team TklW+Int/90 Ranking ⊞ Segunda Targets Shortlist

Charts & Analysis

Defensive Activity vs Discipline Scatter — All La Liga DF/MF with ≥3 nineties. X-axis: TklW+Int/90 (higher = more active). Y-axis: Fouls/90 (lower = more disciplined). Oviedo highlighted as blue diamonds. Reference lines mark La Liga medians.
Oviedo Defender Percentile Table — All Oviedo DF/MF ranked by defensive score with progress bars for TklW+Int/90 percentile and discipline percentile. Immediately identifies the weakest links in the back line.
Team TklW+Int/90 Ranking Bar — All La Liga clubs ranked by average defensive activity across their DF/MF pool. Oviedo highlighted in blue. Shows where the club sits in the league's defensive effort table.
Segunda División Targets — Top defensive candidates from the domestic second division: U-28, ≥10 nineties, ranked by composite defensive score with full activity profile.

Key Metrics — Defensive Crisis

TklW+Int/90Tackles Won + Interceptions per 90 min — primary defensive activity indicator
TklW/90Tackles won per 90 min — direct ball recovery
Int/90Interceptions per 90 min — anticipation and positional reading
Fouls/90Fouls committed per 90 min — discipline (lower is better)
Def ScoreComposite 0–100 index: TklW+Int 35% · Key Passes 25% · Passes to Final 3rd 20% · Discipline 20%
90s90-minute intervals played — used to filter for significant samples
4
La Liga Context

📊 Oviedo Within
La Liga's Landscape

Context is everything in analytics. This page places Oviedo's attackers and midfielders inside the full La Liga distribution, showing where the squad ranks against 549 tracked players. Percentile radars, forward rankings, and build-up comparisons make the performance gaps immediately visible.

Visualisations

⬤ Forward Rankings Scatter ⬡ Percentile Radar (5 Axes) ⬤ Team xG vs Goals ▮ Conversion Rate Bar ⬤ Midfield Build-up Scatter

Charts & Analysis

Forward Rankings Scatter — All La Liga forwards on npxG/90 vs xA/90 axes. Oviedo forwards highlighted in gold. Shows precisely where the squad's attackers sit relative to rivals.
Percentile Radar — 5-Axis Profile — Selected player's percentile rank across: npxG/90, xA/90, xG Chain/90, xG Buildup/90, and Goals/xG. At-a-glance assessment of whether a player is a pure scorer, creator, or complete attacker.
Team xG vs Goals Scatter — All 20 La Liga clubs on total xG generated vs actual goals scored. Teams above the diagonal are overperforming their xG; below are wasteful. Oviedo's position tells the structural story.
Conversion Rate Bar Chart — Goals/xG ratio for every La Liga club, ranked descending. Oviedo highlighted. A conversion rate below 0.90 signals consistent underperformance requiring tactical or personnel change.
Midfield Build-up Scatter — xG Chain/90 vs xG Buildup/90 for all La Liga midfielders. Identifies Oviedo's build-up efficiency relative to the league and surfaces midfield targets.

Key Metrics — Page 4

npxG/90Non-penalty xG per 90: elite forward quality threshold
xA/90Expected assists per 90: creative output normalised for playing time
xG Chain/90Total sequence xG per 90: overall attacking involvement rate
xG Buildup/90Build-up xG per 90: value added outside of shots and assists
Goals / xGTeam-level conversion multiplier: 1.0 = exactly on expectation
PercentileRank within La Liga population (0–100): 90+ = elite tier
5
Big 5 Leagues

🥇 Top-Flight Talent
Across Europe's Big 5

A two-tab scouting module covering the top tier of European football. The Big 5 tab merges Premier League, Bundesliga, Serie A, and Ligue 1 into a unified ranked list; the La Liga tab focuses on domestic competition. Players are ranked by a composite scout score designed to surface clinical forwards and creative midfielders at realistic transfer fees.

Visualisations

⊞ Composite Score Table ⬡ Player Radar (Top 3) ▮ npxG/90 Bar vs Oviedo ⬤ Age vs Score Scatter

Charts & Analysis

Composite Score Table — Players ranked 0–100 by scout score (npxG/90 × 40% + xA/90 × 30% + Shots/90 × 15% + xG/Shot × 15%). Filterable by position, age, and minimum 90s played.
Radar Chart — Top 3 Players — Overlapping radars for the three highest-scoring shortlist candidates across npxG/90, xA/90, Shots/90, xG/Shot, SoT%. Direct visual comparison of attack profiles.
npxG/90 Bar vs Oviedo Benchmark — Top shortlist players ranked by non-penalty expected goals per 90, with Oviedo's current squad average as a reference line to gauge the upgrade potential.
Age vs Composite Score Scatter — Reveals value profiles: young high-scorers (development bets), prime-age scorers (immediate impact), experienced performers (short-term solutions). Bubble size = 90s played.
🛡️Defenders Tab — Dedicated CB/DM recruitment module. Top 30 cross-league defenders ranked by defensive score. Bar chart benchmarks candidates against Oviedo's best current defender.

Leagues Covered

🇪🇸 La Liga 🏴󠁧󠁢󠁥󠁮󠁧󠁿 Premier League 🇩🇪 Bundesliga 🇮🇹 Serie A 🇫🇷 Ligue 1

Key Metrics — Page 5

Scout ScoreWeighted percentile composite (0–100): attacking output across 4 dimensions
npxG/90Non-penalty expected goals per 90 min (weight: 40%)
xA/90Expected assists per 90 min (weight: 30%)
Shots/90Shot volume per 90 min (weight: 15%)
xG/ShotAverage shot quality — position and technique indicator (weight: 15%)
Adj. ScoreScore adjusted for league difficulty relative to La Liga level
AgeUsed to segment value profiles and transfer viability
6
2nd Tier Scout

🥈 Five-League
Second Division Radar

The most advanced scouting module. Five second divisions across Europe are analysed simultaneously, with per-league tabs for granular scouting and a unified Cross-League tab consolidating the best performers into a single ranked shortlist. Designed to find the next Oviedo signing before rivals identify them.

Leagues Analysed

🇪🇸 Segunda División 🏴󠁧󠁢󠁥󠁮󠁧󠁿 Championship 🇮🇹 Serie B 🇩🇪 2. Bundesliga 🇫🇷 Ligue 2

Per-League Tab (×5)

League Standings Table — Current table with Pts, GF, GA, GD, and promotion/relegation zone colouring. Contextualises the competitive situation of each team where targets play.
Scout Watchlist — Filterable by position, age range, and minimum 90s. Ranked by composite scout score. Immediate shortlist starting point.
Deep-Dive Player Radar — 6-axis radar: npxG/90, xA/90, Shots/90, xG/Shot, SoT%, G/Shot. Oviedo squad average overlaid as the benchmark ring.
Scatter Plot — npxG/90 vs xA/90 coloured by scout score (heatmap gradient). Bubble size reflects 90s played. Reveals combined creative + clinical profiles at a glance.
Top Performers Bar — Top 10 players in the league by npxG/90 or scout score. Quick visual shortlist for initial identification.
Benchmark vs Oviedo Radar — Any selected player's percentile profile stacked against Oviedo's current attacking average. Immediately shows where the player improves the squad.

Cross-League Tab

Top 30 Combined Table — Unified ranking across all five leagues by within-league composite percentile. League flag, position, and age included. The definitive shortlist starting point.
Combined Scatter — All 5 leagues on one chart, colour-coded by competition. Cross-league value outliers become immediately visible.
Age & Score Distributions — Box plots showing the distribution of scout scores and ages across leagues. Reveals whether one competition is systematically producing older or younger high-scorers.
U25 Value Targets — Players under 25 in the 70th percentile within their own league: the best young value plays combining development upside with immediate productivity.
3-Player Comparison Radar — Select up to three players from any league for direct radar overlay. Compare attack profiles across competitive contexts on a single chart.

🛡️ Defenders Tab

Top 20 Cross-League Defenders Table — Unified ranking of CB/DM profiles across all five second divisions by defensive score. League colour-coding, age, nineties, TklW, Int, and TklW+Int/90 all visible.
TklW+Int/90 vs Age Scatter — All filtered defenders across five leagues, colour-coded by competition. Oviedo's best defender marked as a reference line.

Key Metrics — Page 6

Scout ScoreWithin-league percentile composite (0–100) across 4 weighted dimensions
npxG/90Non-penalty xG per 90 min (weight: 40%)
xA/90Expected assists per 90 min (weight: 30%)
Shots/90Shot volume per 90 min (weight: 15%)
Shot QualityxG/Shot — chance quality factor (weight: 15%)
G/ShotGoals per shot: actual conversion efficiency
Within-League %ilePercentile rank vs peers in the same competition
🌍
Europe

🌍 European Scouting
Intelligence

Six leagues beyond the Big 5 radar — markets with lower acquisition costs but proven stepping stones to top-flight football. Covers Eredivisie, Belgian Pro League, Primeira Liga, EFL League One, Swiss Super League, and Süper Lig. Tabs for each league plus cross-league attacker and defender views.

Leagues

🇳🇱 Eredivisie 🇧🇪 Belgian Pro League 🇵🇹 Primeira Liga 🏴󠁧󠁢󠁥󠁮󠁧󠁿 EFL League One 🇨🇭 Swiss Super League 🇹🇷 Süper Lig

Defender & Attacker Tabs (per league + cross-league)

TklW+Int/90 vs Age Scatter — All filtered defenders across all six leagues, colour-coded by competition. Bubble size = 90s played. Oviedo's best defender marked as a dashed benchmark line. Top 30% by Def Score are labelled.
Scouting Watchlist Table — Filterable by league, club, position, age range, and min 90s. Columns: Player, League, Team, Position, Age, 90s, TklW, Int, TklW+Int/90, Fouls/90, Def Score, plus optional attack columns (npxG/90, xA/90, G+A/90). Exportable to CSV.
📊KPI Strip — 6 Metrics: Candidates (filtered count) · Leagues · Clubs · Avg TklW+Int/90 · Median Def Score · Avg G+A/90.
Attackers Tab — Cross-league attacker watchlist with composite scout score, npxG/90 bar chart vs Oviedo benchmark, and age vs score scatter.

Filters

🎛️League · Club · Position (multi-select) · Min 90s slider · Age range slider · Exclude GK toggle · View: Defensive vs Complete (+ Attack columns)

Key Metrics — Europe

Def ScoreTklW+Int/90 × 50% + Fouls/90 inverted × 30% + Yellow Cards/90 inverted × 20%
TklW+Int/90Tackles won + interceptions per 90 min — primary defensive activity
Fouls/90Fouls committed per 90 min — discipline indicator (lower = better)
G+A/90Goals + assists per 90 min — attacking contribution proxy
CandidatesCount of players after applying all active filters
Scout ScorenpxG/90 × 40% + xA/90 × 30% + Shots/90 × 15% + xG/Shot × 15%
🌎
Rest of Europe

🌎 Rest of Europe
Scouting Intelligence

Six European leagues with strong tactical cultures that consistently produce transfer-ready talent at competitive prices. Covers Austrian Bundesliga, Ekstraklasa, HNL Croatia, Danish Superliga, Super League Greece, and Scottish Premiership — ideal pipeline for players who can step into La Liga 2 immediately.

Leagues

🇦🇹 Austrian Bundesliga 🇵🇱 Ekstraklasa 🇭🇷 HNL Croatia 🇩🇰 Danish Superliga 🇬🇷 Super League Greece 🏴󠁧󠁢󠁳󠁣󠁴󠁿 Scottish Premiership

Defender & Attacker Tabs (per league + cross-league)

TklW+Int/90 vs Age Scatter — All defenders across six leagues, colour-coded by competition (Austria: red, Poland: crimson, Croatia: blue, Denmark: dark red, Greece: Greek blue, Scotland: dark blue). Oviedo benchmark dashed line.
Scouting Watchlist Table — League, club, position, age, and min 90s filters. Defensive and complete (+ attack) view modes. Full stat columns with Def Score ranking. CSV export.
📊KPI Strip — 6 Metrics: Candidates · Leagues · Clubs · Avg TklW+Int/90 · Median Def Score · Avg G+A/90.
Attackers Tab — Cross-league attacker analysis with composite scout score, age vs score scatter, and npxG/90 bar vs Oviedo squad average.

Filters

🎛️League · Club · Position (multi-select) · Min 90s slider · Age range slider · Exclude GK toggle · View: Defensive vs Complete

Key Metrics — Rest of Europe

Def ScoreTklW+Int/90 × 50% + Fouls/90 inverted × 30% + Yellow Cards/90 inverted × 20%
TklW+Int/90Tackles won + interceptions per 90 — core defensive activity
Fouls/90Fouls committed per 90 — discipline proxy (lower = better)
Card Burden/90Yellow + (Red × 3) per 90 — disciplinary risk weighted for severity
G+A/90Goals + assists per 90 — combined attacking output
Within-League %ilePercentile rank within the player's own competition
🗺️
Rest of the World

🗺️ Global Talent
Pipeline

Six leagues spanning North America, South America, Asia, and Eastern Europe — markets with growing quality, attractive valuations, and a pipeline of players actively seeking European moves. Covers MLS, J1 League, Liga Profesional Argentina, Série A Brazil, Liga MX, and Russian Premier League.

Leagues

🇺🇸 MLS 🇯🇵 J1 League 🇦🇷 Liga Profesional 🇧🇷 Série A 🇲🇽 Liga MX 🇷🇺 Russian Premier League

Defender & Attacker Tabs (per league + cross-league)

TklW+Int/90 vs Age Scatter — All defenders across six global leagues, colour-coded by competition (MLS: navy, J1: red, Argentina: sky blue, Brazil: green, Liga MX: dark green, Russia: red). Oviedo benchmark reference line.
Scouting Watchlist Table — Full filterable watchlist with Def Score ranking, complete stat profile, and CSV export. League colour-coding for instant market segmentation.
📊KPI Strip — 6 Metrics: Candidates · Leagues · Clubs · Avg TklW+Int/90 · Median Def Score · Avg G+A/90.
Attackers Tab — Cross-market attacker analysis with composite scout score, age vs score scatter for development profiling, and npxG/90 comparison vs Oviedo benchmark.

Filters

🎛️League · Club · Position (multi-select) · Min 90s slider · Age range slider · Exclude GK toggle · View: Defensive vs Complete

Key Metrics — Rest of the World

Def ScoreTklW+Int/90 × 50% + Fouls/90 inverted × 30% + Yellow Cards/90 inverted × 20%
TklW+Int/90Tackles won + interceptions per 90 — primary defensive activity
npxG/90Non-penalty expected goals per 90 — attacker quality threshold
Scout ScoreWeighted composite 0–100: npxG × 40%, xA × 30%, Shots × 15%, xG/Shot × 15%
G+A/90Goals + assists per 90 — combined goal contribution rate
CandidatesPlayers remaining after all active filters applied
NEW
Match Predictions

⚽ La Liga Match
Outcome Probabilities

Match-by-match win/draw/loss probabilities for every La Liga fixture, generated by walkforward_best_k_v2 — a leakage-free Poisson model that uses only data available before each match date. Fully interactive: filter by season, team, and confidence level.

Visualisations

⊞ Predictions Table ▮ Confidence Bar ▮ Probability Distribution

Table Columns

📅Date, Home, Away — Fixture identification. Filter by team to follow a specific club through the season.
📊H% / D% / A% — Model probability for each of the three outcomes. All three sum to 100%. Derived by convolving two independent Poisson distributions over a 7×7 scoreline grid.
🎯Prediction — The most likely outcome (highest of the three probabilities): 🏠 Home, ➖ Draw, or ✈️ Away.
📈Confidence — Max probability across the three outcomes shown as a progress bar. Values below 42% are flagged ⚠️ low confidence — the model sees a genuinely open match.
xG Gap — Expected goals for home team minus expected goals for away team. Positive = model favours the home side. An independent directional signal.
Top Score — Single most probable scoreline according to the Poisson model (e.g. "1–0").
Risk Flag — ⚠️ Low confidence · 🔵 Prior dominant (fewer than ~30% of the team's rating comes from observed data) · 🟡 Promoted prior (team started with a below-average prior derived from the previous season).

Model

⚙️Production model — Bayesian prior-blending Poisson model, tuned via walk-forward cross-validation. LogLoss = 0.9717. Promoted teams start from a below-average prior derived from the previous season's relegation zone.

Key Metrics — Predictions

H% / D% / A%Win/draw/loss probability for each outcome
Confidencemax(P_H, P_D, P_A) — how decisive the model is. <42% = low confidence
xG GapExpected goals home minus away. Positive = home advantage in output
Top ScoreMost probable scoreline from Poisson convolution
⚠️ Low ConfMax probability < 42%: treat prediction with caution
🔵 Prior DomRating <30% from observed data — early season or newly promoted
🟡 Prom PriorTeam started the season with a below-average promoted-team prior
🔍
Match Detail

🔍 Single-Fixture
Deep Dive

Drill down into any individual fixture to see the full model output: outcome probabilities, most likely scorelines, rule-based narrative summaries, tactical style context, and all active prediction flags for that match.

Content

📊Outcome Probability Bars — H/D/A probabilities as horizontal progress bars with percentages, giving an immediate visual read of the model's stance on the match.
Top 3 Scorelines — The three most probable scorelines and their individual probabilities. Useful for identifying whether the model anticipates a low-scoring or open match.
🗒️Model Edge Summary — Rule-based text describing the direction and strength of the model's prediction (e.g. "Moderate home advantage — home side rated significantly stronger on attack").
⚔️Possible Tactical Edge — Rule-based narrative combining team style labels with the model edge to surface potential tactical mismatches (e.g. high-pressing team vs defensive low-block).
🎨Style Matchup Context — Home and away style labels (Possession/Dominant, High Pressing, Defensive/Low Block, Direct/Counter-Attack) with a brief interpretive description of the anticipated tactical dynamic.
Active Flags — All risk flags active for this specific match (low confidence, prior dominant, promoted prior) displayed prominently.

Key Metrics — Match Detail

H% / D% / A%Outcome probabilities for the selected fixture
Top ScorelinesThree most probable scorelines with individual probabilities
xG GapDirectional signal: home expected goals minus away
Style LabelKMeans cluster: Possession · High Pressing · Defensive · Direct
Model EdgeRule-based narrative of prediction strength and direction
Tactical EdgeStyle-informed narrative of potential matchup advantage
🎨
Team Styles

🎨 Tactical Profile
Clustering

KMeans clustering maps every La Liga team into one of four tactical style labels based on their season-level match statistics. Visualise how teams are distributed across the style spectrum and how individual team profiles compare on a six-axis radar.

Visualisations

▮ Style Distribution Bar ⬤ ATT vs DEF Scatter ⬡ Team Radar (6 Axes) ⊞ Team Profiles Table

Charts & Analysis

Style Distribution Bar Chart — Count of teams in each cluster. Reveals how spread or concentrated La Liga is across the four tactical profiles for the selected season.
ATT vs DEF Scatter — Each team plotted on expected goals for (attacking output) vs expected goals against (defensive solidity), coloured by style label. Immediately surfaces which clusters dominate both ends of the pitch.
Team Radar — 6 Axes — Select any team for a radar across: ATT rating, DEF rating, Possession, Pressing intensity, Directness, and Stability. A complete tactical fingerprint for scouting and opposition analysis.
Team Profiles Table — All La Liga teams with style label, ATT/DEF ratings, possession %, pressing index, directness, and stability. Hoverable column tooltips explain every metric.

Key Metrics — Team Styles

Style LabelKMeans cluster: Possession/Dominant · High Pressing · Defensive/Low Block · Direct/Counter-Attack
ATT RatingSeason-average expected goals scored per match
DEF RatingSeason-average expected goals conceded per match (lower = better)
PossessionAverage ball possession % across the season
PressingPPDA-derived pressing intensity: lower PPDA = higher press
DirectnessRatio of forward passes to total passes — playing style indicator
StabilityDefensive consistency: variance in expected goals conceded
📈
Model Health

📈 Production Model
Registry & Evaluation

Full transparency into the production model's parameters, evaluation metrics, and calibration quality. Includes a V1 vs V2 accuracy comparison.

📋Model Registry — Name, version, training date, tuned shrinkage parameters, promoted-team prior strategy, LogLoss = 0.9717.
📊Evaluation Summary Table — Walk-forward accuracy, LogLoss, and Brier score across seasons and confidence tiers.
📈Calibration Chart — Predicted probability buckets vs actual outcome frequency. A well-calibrated model's dots fall on the diagonal.
🔄V1 vs V2 Comparison — Side-by-side evaluation of the previous and current production model. V2 introduced promoted-team priors and tighter k-tuning.
📅
Prediction History

📅 Past Predictions
vs Actual Results

A retrospective audit of every completed match prediction: accuracy by confidence tier, full match-by-match history table, and CSV export for independent analysis.

🎯Accuracy Summary Metrics — Total matches, correct predictions, accuracy %, and average confidence score — filterable by season, team, and minimum confidence.
Accuracy by Confidence Tier — Bar chart across five bands (30–40%, 40–50%, 50–60%, 60–70%, 70%+). A well-calibrated model should show accuracy rising with confidence.
History Table — Every completed match with date, predicted outcome, actual outcome, ✅/❌ correct indicator, confidence score, home/away style labels, and model edge summary. Colour-coded for instant scanning.
📥CSV Export — Download the full filtered history for independent analysis or reporting.

Reference

Metric Glossary

Every metric and concept used in the dashboard, defined precisely. All rate stats are normalised per 90 minutes unless otherwise specified.

xG — Expected Goals

The sum of shot probabilities for all shots taken, based on historical conversion rates for shots from similar positions, angles, and situations. Measures chance quality and volume combined.

npxG — Non-Penalty xG

Expected Goals excluding penalty kicks. The cleanest measure of open-play attacking threat, particularly relevant for comparing forwards across teams with different penalty records.

xA — Expected Assists

The xG value of the chances created by a player's passes. A high xA means the player created high-quality opportunities regardless of whether the receiver converted them — isolating creative output from finishing quality.

Goals − xG

The difference between actual goals scored and xG. Positive = clinical finisher performing above expectation; negative = underperformance. Persistent negatives typically revert toward zero over time.

xG Chain

The sum of xG from all attacking sequences in which the player was involved at any point — shots, assists, build-up passes. A holistic measure of attacking contribution beyond just shots and assists.

xG Buildup

xG Chain minus the player's direct shot xG and assist xG. Isolates pure build-up and progressive passing contribution — value added in sequences before the final actions. Key for evaluating deep-lying forwards and ball-playing midfielders.

xG/Shot — Shot Quality

Average expected goal value per shot. A higher value means the player consistently attempts shots from better positions or with better technique. Elite forwards in La Liga typically maintain xG/Shot above 0.12.

G/Shot — Conversion Rate

Goals divided by total shots attempted. A direct measure of finishing efficiency independent of shot quality. Compared against xG/Shot to determine whether a player finishes better or worse than their chances warrant.

SoT% — Shots on Target %

Percentage of shots that were on target (requiring a save or resulting in a goal). Low SoT% indicates poor execution or decision-making; very high SoT% alongside low conversion may indicate strong goalkeeper opposition.

Key Passes

Passes that directly lead to a shot attempt by a teammate. Unlike xA, key passes count all shots generated regardless of quality. High key passes + high xA = a player creating both volume and quality chances.

Per 90 Normalisation

Dividing any counting stat by the number of 90-minute intervals played, enabling fair comparison between players with different amounts of playing time. Minimum 900 minutes is typically applied to filter small samples.

Scout Score (Composite)

A 0–100 index calculated as a weighted average of within-population percentile ranks: npxG/90 × 0.40 + xA/90 × 0.30 + Shots/90 × 0.15 + xG/Shot × 0.15. Designed to reward both clinical finishing and chance creation.

Within-League Percentile

A player's rank expressed as a fraction of the league's player population in the same metric. A 90th percentile npxG/90 means the player outperforms 90% of comparable players in that competition.

TklW+Int/90

Tackles Won plus Interceptions per 90 minutes. The primary defensive activity indicator. A high value signals a player who both wins individual duels and reads the game well enough to intercept passes before the duel occurs.

Defensive Score (Def Score)

A 0–100 composite index for defenders: TklW+Int/90 × 0.35 + Key Passes/90 × 0.25 + Passes into Final Third/90 × 0.20 + Discipline (fouls/90 inverted) × 0.20. Rewards defensive activity, passing, and clean play simultaneously.

PPDA — Passes Allowed per Defensive Action

The number of opposition passes allowed per defensive action (tackle, interception, foul) in the opposition half. Lower PPDA = higher pressing intensity. A team allowing 5 PPDA presses far more aggressively than one allowing 10.

Poisson Model

A statistical model that treats goals scored by each team as independent random events following a Poisson distribution, each with its own expected rate (λ). H/D/A probabilities are derived by convolving the two distributions over a 7×7 scoreline grid — summing the probability of all home-win scorelines, all draw scorelines, and all away-win scorelines.

Walk-Forward Validation

A leakage-free evaluation protocol where predictions are always generated using only data available before the match date. The model is re-fitted incrementally after each matchday — no future information ever leaks into earlier predictions. This ensures reported accuracy metrics reflect genuine out-of-sample performance.

Prior Blending

A technique that smoothly transitions a team's attack/defence rating from a prior estimate toward observed match data as more games are played. A tuned shrinkage constant controls how fast ratings update: a small constant means ratings converge to the data quickly; a larger constant keeps them anchored to the prior for longer. Constants are tuned independently for strength, home advantage, and other model components.

Confidence Score

The maximum probability across the three outcomes: max(P_H, P_D, P_A). Values below 42% are flagged as low confidence — the model sees a genuinely open contest and its prediction carries less informational value. Not a measure of model quality, only of outcome decisiveness.

xG Gap

Expected goals for the home team minus expected goals for the away team. Positive values favour the home side; negative values favour the away side. An independent directional signal that can confirm or contradict the probability output.

Style Label

One of four KMeans cluster assignments derived from six match-level features aggregated over the season: Possession/Dominant, High Pressing, Defensive/Low Block, Direct/Counter-Attack. Used in Match Detail and Prediction History to provide tactical context around model predictions.

Promoted Prior

Newly promoted teams start the season with ATT/DEF priors derived from the previous season's relegation zone, rather than the league-wide average. This reflects the expectation that promoted sides are typically below the division mean at the start of the campaign. Flagged with 🟡 in the predictions table.

LogLoss

The primary model evaluation metric. Measures the average negative log-probability assigned to the correct outcome; lower is better. A model assigning 70% to the correct outcome scores −log(0.70) ≈ 0.36 for that match. The production model achieves LogLoss = 0.9717 over the full walk-forward evaluation set.

U25 Value Target

Players under 25 years old who rank in the top 30th percentile within their league by composite score. Represents optimal value — sufficient current output to justify transfer spend, with meaningful development potential still ahead.

90s Played

Total minutes played divided by 90. Used as a sample size filter — players with fewer than 5–10 ninety-minute intervals are typically excluded or flagged as small-sample results. All per-90 metrics should be read alongside this figure.

🗂️
Data Sources

🗂️ Where the Data
Comes From

Every metric in the platform is derived from four primary data sources, each collected through a purpose-built scraping or API pipeline. The table below summarises coverage; the expandable sections detail what each source provides and how it is collected.

Source Overview

🌐Understat — xG & match data · Python library (soccerdata) · No auth required · Big 5 leagues · 2022/23–2025/26 · Match-level team stats, shot events, player season stats (xG, npxG, xA, key passes).
📊FBref — Player & defensive stats · Three-tier strategy: soccerdata library → cloudscraper (Cloudflare bypass) → manual HTML cache · 25+ leagues · 2024/25 · Standard stats, shooting, defensive/misc (TklW, Int, fouls, cards, crosses), league standings.
🔵Sofascore — Team match statistics · Public REST API (tls_requests, no key) · Rate-limited with 1.5–3 s random delay + exponential back-off · La Liga 2022/23–2025/26 · Per-match: xG, possession, shots, passes, tackles, interceptions, fouls, cards, aerial duels.
💰Transfermarkt — Market valuations · Playwright headless Chrome (bypasses bot detection) · European leagues · Player market values used for transfer viability scoring in scouting shortlists.

Source Summary

UnderstatxG · npxG · xA · shot events · Big 5 · 2022–2026
FBrefTklW · Int · fouls · cards · 25+ leagues · 2024/25
SofascorePossession · shots · passes · La Liga · 2022–2026
TransfermarktMarket valuations · European leagues · transfer viability
StorageSQLite (football.db) + CSV files in data/raw/
RefreshDashboard cache TTL: 300 s · Pipeline: manual re-run

Ready to explore

Open the
Dashboard

Every chart, table, prediction, and metric described above is live and interactive. Data refreshed for the 2025/26 season across 25+ leagues and two complete La Liga seasons of walk-forward model predictions.