Archive for Meta Analysis

Ball%: Simple, Underutilized, & Highly Effective

A few days, I got into a spat looking into Tanner Bibee.

My issue was that even though Bibee’s walk rate was good in 2022 (combined minor league rate of 1.8 BB/9) there were signs that his walks could be an issue once this season started. While Bibee had some luck in 3-2 counts is one issue, I’m just going to focus on Ball% (Balls/Pitches). Read the rest of this entry »


Referencing Pitch Quality Models to More Traditional Stats

WARNING: If you are reading this article, some or most the exact values are out of date. The pitch quality models seem to go through at least a yearly adjustment so I can’t verify if all the numbers will hold up. With that caveat, it’s useful to have an overall idea of what each one means.

Last week, I was looking into Joey Lucchesi and I created this convoluted mess of a table.

Joey Lucchesi’s Pitch Modeling Stats
Model SI CU/CH FF/FC Stuff Overall
Bot 52 46 37 43 49
Stuff+ 89 91 72 86 98
pERA (AAA) 5.54 -0.44 4.79 2.74 3.14
pERA (AAA comps) 4.72 2.89 4.23

To start off with, having three different metrics using three different scales is confusing. Not as obvious was that I didn’t know exact what the two “Stuff” metric were exactly measuring. I had some idea listening to their creators and others using them. I decided to take a step back and put some perspective on the two pitch quality models so others and myself could correctly reference them and know what other metrics they corelate to.

Note: When I mention stuff metrics, I’m just referring to the Stuff values for Stuff+ and Pitching Bot. I know it can be confusing, especially with one system having the name Stuff+.

Two start out with, this article won’t answer two questions. First, I’m not looking into the predictiveness of the stats. While I have done some work on it, I feel that should be its own article. Second, I’m just looking at the combined values, not the individual pitches. Again, a separate article for another day.

Here at FanGraphs, we introduced the pitch modeling metrics over a month ago introducing PitchingBot and Stuff+ with separate writeups.

Here is a short description of each from the original articles.

PitchingBot

In short, PitchingBot takes inputs such as pitcher handedness, batter handedness, strike zone height, count, velocity, spin rate, movement, release point, extension, and location to determine the quality of a pitch, as well as its possible outcomes. Those outcomes are then aggregated and normalized on a 20-80 scouting scale, which is what is displayed on the leaderboards.

Stuff+

Stuff+ only looks at the physical characteristics of a pitch, including but not limited to: release point, velocity, vertical and horizontal movement, and spin rate.

Stuff+, Location+, and Pitching+ are all on the familiar “+” scale (like wRC+), with 100 being average.

While both supply a reason behind their values, it sucks that they each have their own scale. Personally, I have my pERA values and similar pitches on an ERA scale so there is readily recognizable reference.

The first item of business was to put put both of the metrics on an ERA scale. By lining up the values from 2021 and 2022 (min 40 IP) with the pitcher’s actual ERA, the following two formulas were created.

    • PitchingBot values to an equivalent ERA (r-squared of .992): 22.697*e^(-.035*Bot Metric)
    • Stuff+ values to an equivalent ERA (r-squared of .996): 49.19*e^(-.025*Stuff+ Metric)

With the two formulas, here is a quick reference table for stuff values and the ERA equivalent.

Conversion Table for ERA to “Stuff” Equivalents
ERA Equivalent BotPlus Stuff+
1.50 78 135
2.00 69 124
2.50 63 115
3.00 58 108
3.50 53 101
4.00 50 96
4.50 46 92
5.00 43 87
5.50 41 83
6.00 40 80

For an example, say a pitcher has a Stuff+ of exactly 100. We would expect the hitter to have an BotStuff around 52 and an ERA around 3.60.

The next step I did was bucket the three metrics for each PitchingBot (stuff, command, and overall) and Stuff+ (Stuff+, Location+, and Pitching+) and then compare them to other pitching metrics. To start with, here is a limited comparison (limited table size) with all the values in this Google Doc.

Pitching Bot

Comparison of PitchingBot’s Stuff to Other Metrics
Range botOvr botStf botCmd Pitching+ Stuff+ Location+ ERA K/9 BB/9 WHIP HR/9
>70 62 72 49 106 125 98 3.05 11.9 3.9 1.13 0.8
65-70 62 67 53 106 120 100 3.01 11.1 3.3 1.12 0.8
60-65 58 62 52 104 113 99 3.30 10.5 3.5 1.17 0.9
55-60 56 57 53 102 107 100 3.62 9.8 3.3 1.20 1.0
50-55 54 52 53 101 102 100 3.81 9.0 3.2 1.25 1.1
45-50 52 47 54 99 97 101 4.16 8.4 3.1 1.28 1.2
40-45 49 42 53 97 91 100 4.63 7.7 3.1 1.35 1.4
<40 46 36 54 96 86 101 4.60 6.7 2.9 1.36 1.3

 

Comparison of PitchingBot’s Command to Other Metrics
Range botOvr botStf botCmd Pitching+ Stuff+ Location+ ERA K/9 BB/9 WHIP HR/9
>70 62 44 70 101 88 108 4.06 9.4 1.4 1.11 0.9
65-70 64 50 66 105 104 107 3.75 8.8 2.0 1.16 1.1
60-65 59 50 62 104 101 104 3.59 9.0 2.3 1.16 1.2
55-60 56 50 57 102 101 102 3.85 8.7 2.7 1.21 1.1
50-55 53 52 52 101 103 100 3.83 9.1 3.3 1.26 1.1
45-50 49 51 47 98 99 97 4.37 8.7 3.9 1.36 1.1
40-45 46 53 42 97 102 95 4.28 9.3 4.5 1.35 1.1
<40 43 56 35 96 104 92 4.11 9.6 4.6 1.37 1.0

 

Comparison of PitchingBot’s Overall to Other Metrics
Range botOvr botStf botCmd Pitching+ Stuff+ Location+ ERA K/9 BB/9 WHIP HR/9
>70 72 69 61 112 128 105 2.39 11.9 2.2 0.95 0.8
65-70 67 62 61 109 118 104 3.07 10.7 2.4 1.05 1.0
60-65 61 58 58 105 110 103 3.41 10.2 2.7 1.13 1.0
55-60 57 54 56 102 104 101 3.59 9.3 3.0 1.21 1.0
50-55 52 49 53 100 99 100 4.05 8.5 3.2 1.29 1.2
45-50 47 45 50 97 93 99 4.40 8.1 3.6 1.34 1.2
40-45 42 44 45 95 92 97 4.87 7.8 4.0 1.43 1.3
<40 37 47 38 93 94 93 4.84 8.6 4.8 1.43 1.2

Stuff+

Comparison of Stuff+’s Stuff+ to Other Metrics
Range Pitching+ Stuff+ Location+ botOvr botStf botCmd ERA K/9 BB/9 WHIP HR/9
>130 111 137 102 65 68 54 2.38 12.5 2.6 0.92 0.9
125-130 107 127 100 61 65 52 2.97 12.0 3.4 1.12 1.0
120-125 106 121 99 61 65 52 3.02 10.2 3.3 1.12 0.7
115-120 106 117 101 60 62 54 3.24 10.8 3.3 1.14 0.9
110-115 104 112 100 58 57 54 3.25 10.0 3.2 1.16 1.0
105-110 102 107 100 54 54 52 3.63 9.5 3.2 1.20 1.0
100-105 100 102 100 52 51 52 3.87 9.1 3.4 1.25 1.1
95-100 99 97 100 52 49 53 4.17 8.4 3.2 1.30 1.2
90-95 98 92 100 49 45 53 4.49 8.0 3.2 1.33 1.3
85-90 96 87 100 49 44 53 4.78 7.4 3.3 1.41 1.3
80-85 95 82 100 48 41 53 4.64 6.9 2.9 1.38 1.4
75-80 94 78 101 46 38 54 4.64 6.8 3.0 1.39 1.3
<75 92 70 101 46 37 55 5.97 6.0 2.9 1.54 1.6

 

Comparison of Stuff+’s Command+ to Other Metrics
Range Pitching+ Stuff+ Location+ botOvr botStf botCmd ERA K/9 BB/9 WHIP HR/9
105-110 105 104 106 61 50 63 3.49 8.9 2.0 1.13 1.1
100-105 102 101 102 55 50 56 3.83 8.9 2.8 1.22 1.1
95-100 98 100 97 50 52 48 4.14 8.8 3.8 1.32 1.1
90-95 96 104 93 45 57 41 4.44 9.9 5.1 1.44 1.0
85-90 95 106 87 41 63 33 4.32 11.3 5.3 1.26 0.8

 

Comparison of Stuff+’s Pitching+ to Other Metrics
Range Pitching+ Stuff+ Location+ botOvr botStf botCmd ERA K/9 BB/9 WHIP HR/9
>115 116 140 105 72 69 60 2.35 12.3 1.7 0.83 0.9
110-115 111 125 104 67 64 59 2.84 11.3 2.4 1.00 0.9
105-110 107 114 102 61 58 57 3.16 10.2 2.7 1.10 1.0
100-105 102 104 101 55 53 54 3.65 9.2 3.1 1.22 1.0
95-100 97 94 99 49 47 51 4.30 8.2 3.5 1.33 1.2
<95 93 87 96 43 44 46 5.38 7.5 4.1 1.51 1.4

 

Looking over the information, both of the “Stuff” values seems to generally catch what each is trying to describe. The stuff values corelate to strikeouts and the command/location grades point walk rate.

After reading through the definitions of how the batted ball data is collected, I expected the Bot values to have a larger variance in the StatCast values (linked spreadsheet). That concept wasn’t the case and there ended up being almost not correlation to any of the measures to actually limiting hard contact. With hard contact not being predictive, I was surprised when I got to WHIP.

How much WHIP changed in the two “Stuff” models was almost too good to be true. In both cases, the walk rate increased as a pitcher’s stuff got better, but the hit suppression was so large that the WHIP declined.

The ability to detect hit suppression is on another scale than has ever been measured. It’s almost too good to be true.

Overall, I see two major issues with the stuff metrics:

  • The formulas behind the values is a black box so there is no way to back check the results. Also, the calculations are constantly changing so it’s tough to know which formula is being used. It’ll be impossible to incorporate the information if it keeps changing
  • The pitch model metrics are trained off of just the 2021 and 2022 data. Of course the data is going to almost lineup perfectly for now. It’ll be interesting to see how they hold up this season and three to four seasons down the road.

The next step for me will be to dive into the small sample of 2023 data. Does the near perfect accountability of all batted ball outcomes continue based on just pitch metrics or were the metrics correlated too close to the actual results I’m examining.

I did get a few questions answered but working through these Pitch Quality Models but I generated a ton more. As I get time, I’ll keep diving into the subject to see what is usable going forward.


The Weird and the Wonderful — Hitters Through Apr 24, 2023

In past years, I have reviewed some of the most extreme performers in various categories after around a week of play. Though not necessarily actionable, it was fun to see the players and stats that stood at the top and bottom of the leaderboards. It’s a bit later than I have normally reviewed the weird and the wonderful historically, but that doesn’t mean there isn’t any wackiness going on! So let’s review some of the outliers a couple of weeks into the season.

Read the rest of this entry »


Starting Pitcher SwStk% Gainers – Through Apr 22, 2023

It’s still quite early to evaluate outcomes like strikeout and walk rates, so let’s stick with underlying drivers of those metrics, like SwStk%. Typically, the higher a pitcher’s SwStk%, the better the pitcher and the lower the ERA, though obviously that’s not going to be the case 100% of the time since we’re ignoring walk rate. But SwStk% gains are almost always a good thing, as that should result in a higher strikeout rate, which means fewer balls in play and therefore fewer hits allowed. So let’s dig into the starting pitchers (with at least 20 innings pitched both this season and last season) that have raised their SwStk% most.

Read the rest of this entry »


Early Results of the Shift Alterations

As everyone knows, the shift was banned for this season with players needing to be on the infield dirt and just two on each side of second base. I’m going to take an early glance to see if more hits are happening because of the extra holes in the infield and shallow outfield. Overall, the results ended up close to expectations but are noisy in some spots.

For the shift information, I’m using two rates, the full and strategic shift designations. For clarification, here is the explanation of the “strategic” shift from Baseball Savant.

A “strategic” shift is our current catch-all for positioning that is neither “standard,” nor “three infielders to one side of second base.” More granular categories, like “guarding the lines,” “five infielders,” etc., may be added in the future.

Examples of this often include just a single player being out of position, like a second baseman being shifted to short right while no other fielders are, as in the image above, or a shortstop moving very close to the second base bag, outside of the usual shortstop zone, but not quite moving to the other side of it.

During the offseason, I examined how the shift might affect individual players and the league-wide BABIP. For The Process, I looked at players moving from the full to the strategic shift. I used the strategic values since defenders could still move around this, just not as much as before. It was far from perfect, but I felt it was better than assuming no shift. Here are my conclusions from the book.

Jeff looked at into several solutions, including taking handedness into account, and ended up with the following formula to estimate a player’s change in BABIP:

BABIP Gained = Full Shift%^2 * 0.035

League-wide in 2022, 34% of all shifts were a full shift, so using the above formula, the league-wide BABIP is expected to jump by .004. On the whole, not that much.

And here are expected individual hitter BABIP gains for various full shift amounts.

Full Shift% Rate and Expected BABIP Jump With No Shift
Full Shift% BABIP Change
90% .028
80% .022
70% .017
60% .013
50% .009
40% .006
30% .003
20% .001
10% .000
0% .000
The Process

On the league-wide value, I was off a bit with the league-wide value so far going from .243 to .249 or .006. Close.

As for the individual players, I bucketed the players into 10% point groups for anyone who hit in both 2022 and 2023. Then I found the Harmonic mean of the plate appearances to help weigh the yearly change. First, I bucketed just the full shift values.

2022 Full Shift% Rate and 2023 BABIP & AVG Weighted Changes
Full Shift% BABIP Change AVG Change Count
> 90% .013 .019 8
80% to 90% .013 .006 23
70% to 80% .022 .012 33
60% to 70% .010 .007 29
50% to 60% -.004 -.009 29
40% to 50% -.016 -.009 39
30% to 40% .005 -.010 27
20% to 30% .014 .018 37
10% to 20% -.001 .001 65
<10% .002 -.001 111
>65% .017 .009 81

The top and bottom 20% came out near expectations with decent jumps for the most shifted players and no change for those who weren’t shifted. Now in the middle, values bounced all over the place.

I wondered if those in the middle were being strategically shifted a bunch and adding those shift values might clean up the results. I reran the test with the full and strategic shift rates combined. Here are the results.

2022 Full + Strategic Shift% Rate and 2023 BABIP & AVG Weighted Changes
Full and Strategic Shift BABIP Change AVG Change Count
> 90% .019 .022 21
80% to 90% .018 .006 43
70% to 80% .006 -.002 32
60% to 70% -.008 -.001 29
50% to 60% -.027 -.021 39
40% to 50% .030 .015 34
30% to 40% .004 .010 49
20% to 30% .000 .004 71
<20% .002 -.002 83
>65 .014 .007 114

The results stayed the same. The top and bottom 20% are nice and clean while the middle bounces around.

In both cases, I highlighted the results for those who see the particular shift two-thirds of the time. In each case, there was about a 15-point jump in BABIP and an ~8-point jump in AVG. The results so far match the preseason expectations and in a month or so, it will be time for another check-in.


My Imaginary $10,000 Quandary

This offseason, I struggled with how much fantasy-based content is too much content. I’ve created plenty of material including a 300-page book on my process and several articles per week here a FanGraphs. In addition to writing about fantasy baseball and playing in a few free leagues, I started dipping my toe into high stakes. The entries started out small but I’ve rolled my winnings back in and it was a sizable amount this spring.

With five figures on the line, I felt the pull of providing the best content available and being competitive in these leagues. This offseason, I had several takes. Some I made public while others, I sort of kept to myself. Here are three examples.

1. One of my guys this year was José Suarez (shares). I didn’t go into the offseason being high on him but liked some of his mid-season changes.

A complete transformation. [Suarez’s second half 18% K%-BB% is in line with Wood and his comps (Urias and Alcantara). He is a breakout in hidden plain sight. I would take Wood ahead of him (longer track record), but Suarez would be an easy second choice.

… I ended my campaign for him right then and tried to roster him in every league. While others noticed the article, I didn’t go out of my way to make him one of my guys. Read the rest of this entry »


2022 Projection Accuracy: Hitter Counting Stats

It’s time to continue examining projection accuracy. Today, it’s a quick run through the hitter counting stats. From last year’s results, I came to the following conclusion.

Hitter Rate/Counting Stats

For the stand-alone projections, THE BATs stands out (I’d use THE BAT X). Just below THE BAT are all four aggregators.

This year’s results didn’t disappoint.

I’m not reposting all the background information that no one reads anyway. It can all be found in the previous playing time article. I’ll just post the results and then draw my conclusions. Read the rest of this entry »


Fernando Tatis Jr. & Shoulder Surgeries

D. Ross Cameron-USA TODAY Sports

I tweeted out wanting to know who had shoulder surgeries similar to Fernando Tatis Jr. and it garnered many examples and opinions on the subject.

All I wanted was the names of those who had the same or similar operations but got a lot more. With those comps, I hoped to get a range of potential outcomes. Well, I got them and whole lot more.

I know most people will already be anchored to an opinion that is probably based on already drafting or passing on Tatis in drafts or rostering him or not in a keeper league. For those with an open mind, here is what I think is the best information people gave me. Read the rest of this entry »


Stolen Base Rate Depending on Lineup Position

 

I started out wanting to see if a player stole more bases from one lineup slot compared to another one. Discussions around Trea Turner’s spot with the Phillies led me down this path. Last season, Turner had 603 PA from the 2nd and 3rd spot in the batting order and just 105 PA while leading off. He was on a 29 SB/600 PA pace from the leadoff spot and a pace of just 22 SB/600 PA from the other two. I wanted to see if the bump was normal and if not, what should I expect? What I found was a mess and don’t plan on regurgitating here. I put the “F- Around, Find Out” philosophy to work with over a day wasted to end up with three graphs and four actionable conclusions.

Read the rest of this entry »


RP-to-SP Inning Estimations

Sep 20, 2022; Oakland, California, USA; Oakland Athletics relief pitcher A.J. Puk (33) pitches the ball against the Seattle Mariners during the seventh inning at RingCentral Coliseum. Mandatory Credit: Kelley L Cox-USA TODAY Sports

There has been some recent news about A.J. Puk (link) and Seth Lugo (link) joining their team’s rotation. Both were full-time relievers in 2022, so it would be quite a transition. The question I wanted answered was not if they would make the transition, but if they did, what are the most reasonable number of innings they should be expected to throw if they make the transition? After looking into some comps, it was more than I expected.

To find my sample, I didn’t want any tweeners, guys who started 15 games and had 20 relief appearances. Both Lugo and Puk were only relievers last season and could be going to the rotation. Read the rest of this entry »