Matchup+
Fantasy baseball analytics for people who care about process, not just results. Pitch shape meets swing shape. Data-driven, not vibes-based.
The problem it solves
Park factors, FIP, and platoon splits are useful. They're also blunt. They don't tell you whether this pitcher's specific arsenal is a good matchup against this specific lineup's swing tendencies.
A sinker-ball guy against a dead-pull lineup is a different start than the same pitcher against a group that lets the ball travel. A nasty sweeper against a pull-heavy left-handed lineup is a different start than against guys who cover the outside corner. Same FIP. Completely different outcomes.
Matchup+ scores that specific edge using Statcast pitch shape data and swing tendency profiles. Single matchup grade. Pitch-type level. No vibes required.
How it works
Pull pitcher arsenal data from Statcast: pitch types, shapes, horizontal/vertical break, usage rates, and results against different batter profiles.
Pull opposing lineup swing tendency profiles: chase rate, whiff rate by zone, contact type, pull/oppo rates, and performance against specific pitch shapes.
Score the matchup at the pitch-type level. Aggregate across the lineup. Output a single matchup grade weighted by lineup construction and pitcher arsenal mix.
Use cases
Weekly Start Decisions
Is this pitcher a good start against this lineup? Not gut feel -- a score based on how his actual pitch shapes interact with how this lineup actually swings.
Streaming Pitchers
Find the guys everyone else is missing. A mid-tier starter with a filthy sweeper gets a big bump against a pull-heavy left-handed lineup. Matchup+ surfaces that edge.
Lineup Construction
Identify which hitters in your pool have favorable shape matchups this week. Not just platoon splits -- actual pitch type exploitation.
DFS Stacking
Stack lineups against pitchers whose arsenals are weak against the types of contact this group of hitters makes. More specific than park factor, more actionable than FIP.
Status
Core grading system is built and running. The Statcast pipeline is live and the scoring model is in active iteration. Working on a public demo interface -- the kind where you type in a pitcher and a lineup and get a grade back in seconds.
GitHub repo