Author Archive

Using Clustering To Generate Bullpen Matchups

In today’s game, reliever usage may be more important than ever. As starters go less deep into games, more emphasis is placed on bullpen strategy to survive the mid-to-late innings. Teams can use data to streamline this process, strategizing relief pitcher usage based on their pitch repertoires and batter ability. My goal is to produce a matchup tool that can potentially give us some insight as to how the big league teams “play the matchups.”

The basis of a bullpen matchup recommender will be at the pitch level: what types of pitches does a particular hitter struggle against, and how do they align with what a particular pitcher throws? To do this, I will first use clustering methods in order to redefine pitcher arsenals based on pitch flight characteristics. Matchups will then be selected according to which pitcher is expected to perform the best against a given batter, optimizing pitcher strengths against batter weaknesses.


To conduct this research I used available Statcast data from 2016-2021 (through this year’s trade deadline). My variables of interest are as follows: pitch location (plate_x & plate_z), perceived pitch speed derived from release extension (effective_speed), pitch movement (pfx_x & pfx_z), spin rate (release_spin_rate), and the newly introduced spin axis (spin_axis). I elected to include spin axis in order to account for how the batter may see the pitch as it’s released. All in all, the variables selected measure the stuff and location of each pitch so that we may classify them more accurately beyond the basic pitch type labels. After cleaning this dataset and removing outliers, I was ready to move on to the modeling process. Read the rest of this entry »

Introducing Probabilistic Pitch Scores and xWhiff Metrics

With the advent of the Statcast era, a lot of research has been done in attempts to measure the effectiveness of a particular pitch based on its flight characteristics. As has been noted in the past, quantifying a pitcher’s stuff and command is no easy task. However, over the past few months I have worked to build my own models in an attempt to evaluate the “filth” of any given pitch, taking more of a probability-based approach. I introduce to you my Probabilistic Pitch Scores and xWhiff metrics.

When evaluating the quality of a particular pitch, I focused my interest on three different binary outcome variables: whether or not the batter swung at a pitch, whether or not the batter whiffed on a pitch, and whether or not a pitch was thrown for a strike. Thus, my goal was to train three different types of classification models corresponding to each of these variables: a swing, a miss, and a called strike. For the actual outcomes of these models, I was less interested in the model’s decision and more interested in the predicted probability. For example, if a batter swings on a pitch with given flight characteristics, what is the probability that he will whiff? These probabilities were utilized as the basis of my metrics.

Read the rest of this entry »