Skip to content

Repository files navigation

Contextual Football Scouting

Contextual Football Scouting (Wyscout Integration)

Fork of: Contextual-Football-Scouting License: MIT Python FastAPI React Data: Wyscout

Ranking players by what they do with the space around them, not by how much they touch the ball.

Matteo Vezzoli & Armando Mio — 2026


ℹ️ Fork Notice: This repository is a dedicated fork of Contextual Football Scouting.
The complete theoretical framework, mathematical proofs, academic paper, and original tracking-data methodology (StatsBomb 360) are documented in the main repository:
🔗 Corresponding README in the original repository: Contextual-Football-Scouting/README.md


Changes in this Fork

This fork adapts the contextual scouting methodology to work with Wyscout seasonal aggregated data (webapp/backend/data/wyscout_sample.csv):

  1. Wyscout Statistical Proxies:

    • H1 — Space Control & Value: Replaced 360° convex hull geometry with seasonal proxies for Progression (Progressive passes/90, Progressive runs/90, Passes to final 3rd/90), Reception (Touches in box/90, Received passes/90), Gravity (Fouls suffered/90, Offensive duels/90), and Dangerousness (xG/90, xA/90).
    • H2 — Decision Quality: Replaced event-level freeze-frame xPass/xEPV models with a Decision Quality Index (DQI) evaluated across Possession Accuracy, Duel Robustness, Risk Readings /90 (Key passes/90 + Smart passes/90), and Risk Accuracy (Accurate progressive passes, %).
    • H3 (Off-Ball Movement): Excluded, as off-ball runs and receiver resolution require spatial tracking coordinates not present in seasonal aggregated data.
    • H4 — Player Similarity: Replaced the 11-axis tracking DNA with an 8-axis orthogonal style DNA combining H1 and H2, computing within-role Euclidean distance look-alikes across 1,059 eligible players.
  2. 100% In-Memory Full-Stack Webapp:

    • Replaced PostgreSQL / Supabase and offline DB migration scripts with a lightweight in-memory FastAPI backend (webapp/backend/data_module.py) that loads webapp/backend/data/wyscout_sample.csv directly on startup.
    • Sub-5ms response times across all endpoints (/players/, /similar/, /roles/, and /space-control/).
    • Modern React 19 + Vite frontend with responsive radars, multi-criteria filtering, and head-to-head similarity overlays.
  3. Expanded Player Pool:

    • Expanded the evaluation pool from 272 players (StatsBomb 360 minutes threshold) to 1,697 total players (1,059 outfield players with $\ge 300$ minutes) from the Wyscout seasonal sample dataset.

About

Adaptation of the Contextual Football Scouting framework to Wyscout seasonal data. Features proxies for space control, decision quality (DQI), player similarity, and an in-memory FastAPI & React dashboard.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages