Skip to content

selected case study

Football Player Performance Analysis

A football analytics platform built on Transfermarkt data with BigQuery, dbt, Power BI, and scikit-learn market-value modeling, developed in a fork of an earlier collaborative project.

Role fit

Applied Data ScientistAnalytics EngineerBI AnalystData Analyst

Quick technical review

The case study in four points.

Full methodology

Problem

Football performance, transfer, and market-value analysis requires reliable modeling across players, clubs, competitions, valuations, and transfer outcomes.

Architecture

The repository uses BigQuery as the warehouse and dbt to separate staging, intermediate, mart, snapshot, semantic, and ML feature layers.

Results

46 dbt models + 25 mart tables

Limitations & scope

The headline R2 of 0.9756 sits close to a previous-value baseline in the repository’s own comparison (0.9704), so most of it is last season’s price; the gain shows in WAPE (12.51% against 13.88%) and in MAE (EUR 781,409 against EUR 867,156).

Summaries reuse the project’s documented evidence. Review the complete case study for evaluation boundaries.

Evidence-led visual review

Explore the actual work.

Concept art, dated captures and repository figures are identified separately.

Football Player Performance Analytics conceptual editorial research illustration

Portfolio illustration

Original portfolio illustration. Diagrams are conceptual; verified methods and results appear in the linked case study. This is not an application screenshot.

46 dbt models + 25 mart tables

241/241 tests + 12/12 freshness checks passed

9 Power BI pages + 2 drill-through pages

R2 0.9756 / 12.51% WAPE market-value model; the previous-value baseline reaches 0.9704

Project proof

Verified external evidence

Last verified 2026-10-05

Problem and approach

Problem

Football performance, transfer, and market-value analysis requires reliable modeling across players, clubs, competitions, valuations, and transfer outcomes.

Architecture

The repository uses BigQuery as the warehouse and dbt to separate staging, intermediate, mart, snapshot, semantic, and ML feature layers.

Attribution

This repository is a fork of an earlier collaborative project. Its staging, intermediate and first mart layers (28 of the 46 dbt models, plus the source definitions and their source tests) come from the upstream repository, and a further two marts came from another collaborator. The remaining 16 models (14 marts and 2 ML feature models), the singular tests, the column documentation, the semantic layer, the snapshots, the CI workflows, the market-value ML pipeline and the Power BI report are the work shown here.

ML layer

A documented HistGradientBoostingRegressor workflow predicts current player market value from leakage-safe, season-lagged features and quality-segment routing.

What is not claimed

The headline R2 of 0.9756 sits close to a previous-value baseline in the repository’s own comparison (0.9704), so most of it is last season’s price; the gain shows in WAPE (12.51% against 13.88%) and in MAE (EUR 781,409 against EUR 867,156).

Why it matters

It connects the BI report, governed metrics, tests, documentation, and a leakage-controlled ML workflow in one reviewable system, so the modelling can be checked against the data layer it is built on.

Architecture and analysis

  • Builds a dbt and BigQuery architecture with staging, intermediate, marts, snapshots, semantic metrics, and ML feature layers.
  • Packages the analysis into a Power BI PBIP report with 9 pages and 2 drill-through pages backed by governed marts.
  • Connects player performance, segmentation, club and league analysis, transfer success, market value, and ML prediction surfaces.

Testing and validation

  • 46 dbt models with complete model and column documentation
  • 241 source and data tests passed, plus 12 source-freshness checks passed
  • GitHub Actions workflows for dbt CI, ML production validation, and docs deployment

Operational value

  • Shows on Kaggle that "next value = current value" already reaches R2 0.967, so the skill worth reporting is the change in value, where a time-split model reaches R2 0.22.
  • Validates 46 dbt models (25 marts, 6 of them partitioned), 2 ML feature models, and 7 governed semantic metrics.
  • Documents a Power BI report with 9 pages, 2 drill-through pages, and player, club, transfer, and market-value analysis surfaces.
  • Trains the market-value model on 90,704 player-season rows and publishes scoring outputs for 7,841 players.
  • Reports v5 ensemble performance of R2 0.9756, WAPE 12.51%, MAE EUR 781,409, and RMSE EUR 2,039,156.

How to inspect

  • Start with the README project status table to verify dbt model, test, documentation, dashboard, and ML coverage.
  • Open the architecture and data-quality docs before reviewing individual SQL models.
  • Inspect the Power BI screenshots and PBIP structure for the business-facing reporting layer.
  • Use the player market-value ML document to review feature design, model performance, routing logic, and limitations.

Related case studies

All projects