A Statcast-based analytics pipeline for evaluating player development through changes in contact quality.
The project transforms MLB Statcast data into player-level performance metrics, rolling contact-quality measures, development signals, and visual player dashboards.
The goal is to move beyond traditional box-score statistics and identify meaningful changes in the quality of a player's contact.
The current analysis focuses on:
- Average Exit Velocity
- Hard-Hit Rate
- Barrel Rate
- 30-day rolling metrics
- Baseline vs. recent performance
- Player development signals
- Individual player dashboards
The pipeline follows four primary stages:
-
Ingest MLB data
- Game schedules
- Rosters
- Player information
- Statcast pitch-level data
-
Transform and validate
- Standardize raw MLB data
- Filter to relevant team games
- Select analysis fields
- Validate game-level data
-
Calculate player metrics
- Aggregate batted-ball outcomes
- Calculate contact-quality metrics
- Build 30-day rolling windows
-
Evaluate development
- Establish a baseline
- Compare against recent performance
- Calculate changes in contact quality
- Classify the player's performance trend
- Generate a player-level dashboard
Player development is evaluated using changes in:
| Metric | Description |
|---|---|
| Exit Velocity | Average velocity of balls in play |
| Hard-Hit Rate | Percentage of batted balls hit at 95+ mph |
| Barrel Rate | Percentage of batted balls meeting barrel criteria |
| Rolling Metrics | Recent contact quality calculated over a 30-day window |
The development analysis compares an earlier qualifying period against the player's most recent qualifying period.
A player is classified as Improving, Declining, or Mixed based on changes across the three contact-quality metrics.
The current project includes an example analysis of Elly De La Cruz using 2026 Cincinnati Reds Statcast data.
The pipeline produces:
- Player-level metrics
- 30-day rolling contact-quality metrics
- Baseline vs. recent comparisons
- A performance trend
- A player development dashboard
Create and activate the virtual environment:
python -m venv .venv
source .venv/bin/activate