[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
THE BOOK cover
The Unwritten Book
is Finally Written!

Read Excerpts & Reviews
E-Book available
as Amazon Kindle or
at iTunes for $9.99.

Hardcopy available at Amazon
SABR101 required reading if you enter this site. Check out the Sabermetric Wiki. And interesting baseball books.
Shop Amazon & Support This Blog
RECENT FORUM TOPICS
Jul 12 15:22 Marcels
Apr 16 14:31 Pitch Count Estimators
Mar 12 16:30 Appendix to THE BOOK - THE GORY DETAILS
Jan 29 09:41 NFL Overtime Idea
Jan 22 14:48 Weighting Years for NFL Player Projections
Jan 21 09:18 positional runs in pythagenpat
Oct 20 15:57 DRS: FG vs. BB-Ref

Advanced

Tangotiger Blog

A blog about baseball, hockey, life, and whatever else there is.

Sunday, February 16, 2025

Bat-Tracking: Timing Early/Late

Previously: Timing Along the Bat, Timing Over/Under

One of the challenges of figuring out if a swing is early or late is determination of the presumed point of contact. What is a late contact swing and what is an early contact swing?

A simple approach is to choose a common point, like the front of home plate. But, you can imagine that each batter is going to have a different approach. And so, we discarded that option in favour of it being batter-specific. Even in that case, the batter is moving up and down the batters box, or at least they could. And so, we made sure to make it based on the center of mass for that batter for that swing. Even in THAT case, we cannot just choose a common point, like 30 inches in front of them. This is where EV50 comes to save the day once again. Paul Goldschmidt hits his Best Speed (50% hardest hit, the EV50) balls 20 inches forward from his center of mass, while Justin Turner is closer to 40 inches. And therefore, I am setting the Ideal Timing Point in this manner: every batter (and their batside) has a unique forward point relative to their center of mass.

From here, we then simply ask this question: when the ball and bat cross paths, or came closest to crossing path (what I call the Intercept Point), where is that Intercept Point compared to the Ideal Timing Point (for that batter-batside)? In this way, we can establish if a swing was early, late, or on-time.

With regards to the Over/Under, about two-thirds of the swings were within 2 inches of the centerline of the swing path. Similarly for TiedUp/Flair, a range of +/- 4 inches from the sweetspot ringe gives us two-thirds of the swings.

In order to establish a time range for on-time, any swing where the ball-bat Intercept Point was within 7 millseconds (roughly 10 inches) of the Ideal Timing Point is considered an On-Time Swing. Otherwise, the swing is either Early or Late.

These charts below represent all swings. The first chart is the run value, and we see that the best performing swings are the early swings. And if you think about pulled homeruns, I think this becomes easier to understand.

The second chart shows the frequency of the swings. The median and mode is a slightly late swing, even though the overall average swing is roughly exactly on-time.

Again, we will learn in the comming weeks, on a batter by batter basis, how often their swings are early, late or on-time.

Bat-Tracking: Timing Over/Under

See part 1, for Timing Along the Bat.

A plane is two-dimensional. A thin sheet of paper is the simplest version of a plane (even though technically a sheet of paper has thickness, but let's not technical precision get in the way of a natural illustration).

When we talk about a swing plane, there's two things that make this not true. The first is that the bat itself has thickness. Whereas we can accept that a single sheet of paper is two-dimensional, a stack of 500 sheets of paper is obviously three-dimensional. A bat is much more like 500 sheets of paper than a single sheet. And so, a swinging bat is obviously not going to trace out a plane, but rather a slab.

Even if the bat itself was two-dimensional, the other is that the bat itself is not going in a circular path, and so tracing out a single plane (a single sheet of paper). Because the wrists and arms of the batter is involved, the bat may look like it's tracing a single plane, but it is in fact going through multiple planes.

As a result, rather than using the inaccurate term of plane, we will use the more descriptive term of path. We will be talking about the swing path (which if you want to think of it like a swing plane, you may do so).

As I mentioned, the swing path is really a slab, a two-by-four if you wish. That's the coverage area the swing is tracing out. As we mentioned in a previous article, the slab that the swing path goes through is roughly +/- 2 inches. If the ball goes over this slab, then this means the bat went under the ball. And we naturally have the opposite: the slab of the swing path going over the ball.

And we see here the data bears this out (click to embiggen). This data is as earlier: we focus on the ideal part of the bat, the +/- 1 inches around the sweetspot, and then look at the results.

When the ball goes flush against this two-by-four slab of a swing path in the sweetspot, 95% of these swings leads to an EV50 (which we established in the previous article that EV50 leads to a best speed batted ball for that batter). And any ball that is more than 3-4 inches from the centerline of the swing path is 100% whiff. And so, we are now in a position to establish for every batter, and every swing of that batter, how often they swing under, swing over, and swing in-slab. (Feel free to suggest a better term. It's ok to say you don't like to say in-slab, but I need an alternative that is better than in-slab. Saying Not-in-slab is not helpful to a baseball fan, though it is the perfect thing to say if you are a politician.)

In terms of performance, we see a slight bias toward hitting under the ball (the right side of the chart is the ball going over the swing path). And this makes sense: slightly hitting over the ball is a grounder; slightly hitting under the ball is an airball. And you have a better chance of good production in the air than on the ground. We can see the most damage happens from around the center of the ball being half-an-inch below the centerline of the swing path to one-inch above the centerline of the swing path.

I can tell you that league-wide, 12% of swings has the swing path go over the ball, while 24% of swings has the swing path go under the ball. And this makes sense, since we don't want to hit the ball exactly flush, but with a slight offset. So naturally, when you miss, you will miss more often by going under the ball than over the ball. We'll learn in the coming weeks how often batters line up the ball in their swing path in-slab, as well as how often they miss over or under.

Bat-Tracking: Timing along the bat

DIMENSIONS

The thickness of a baseball bat around the sweetspot is about 6 cm, which is 2.36 inches. That sets the centerline of the bat as 1.18 inches from the outer edge of the bat.

The diameter of a baseball is about 7.4 cm, which is just over 2.91 inches. That sets the radius of a baseball as 1.46 inches.

So, when the center of the baseball and the centerline of the bat are 1.46 + 1.18 = 2.64 inches apart, this means the bat and ball will graze each other.

In order for the bat to do any kind of damage to the ball, the center of each has to be about a maximum of 2 inches apart.

OBJECTIVE

While there is more to hitting a baseball than how hard you hit it, it's the objective of every batter to square up on a ball as much as possible. One of the ways to measure the performance of a batter is to focus on how hard they hit the ball. To that end, one thing that I like to do is focus on all batted balls, and for each batter (and by bat-side for switch hitters) take their 50% hardest hit balls. The average of these balls with the highest Exit Velocity (EV) we label as EV50, and we can call them Best Speed.

Interlude

One small note for you percentile jocks: when you take the 95th percentile of something, that is very similar to taking the 10% highest of something and figuring the average of those things. Similarly, the 90th percentile value is very similar to the average of the 20% highest. In other words, the single value percentile number is at the midpoint of a distribution. Of course, because we are looking at the tail-end of a distribution, it doesn't work out exactly like that, but you can think of it in that way. So, the EV50 would be equivalent to the 75th percentile. In other words, EV50 is EV75th. So, why use EV50 instead of EV75th? Well, when you take a percentile, you are taking a single value as representing everything around it. Why do people do that? Because it's really really easy to do that. But, if you want to better represent ALL of the data in question, then we should take ALL of the data in question and average that. So, that's why I eschew percentile values and focus on the average of all the points above a line.

EV50

The EV50 is perhaps the most important value to look at for a batter. You can see that value on two leaderboards on Savant: the Exit Velocity leaderboard, and the Custom Leaderboard.

When we look at an EV50 batted ball, we know something that is true: the batter hit the ball pretty close to the sweetspot of the bat. Does the tracking data bear this out?

This is what I did. For each batter, I determined how far in front of them do they hit these EV50 batted balls. For the typical batter, this is about 30 inches forward from their center of mass, with a range of 20 inches (Paul Goldschmidt) to 40 inches (Justin Turner). So, everyone has their preferred timing spot. So, I limit the swings to when contact is made within 7 msec (about 10 inches) from their ideal contact spot. I further limit the swing to balls hit within half-an-inch of the centerline of the bat.

RESULTS

With all the ideal conditions for the swing determined, this leaves us with 4% of all MLB swings; all that is left is to see how often an EV50 swing resulted, based on its proximity to the sweetspot of the bat (click to embiggen):

If you focus at the peak point, that says that 95% of swings that hit within half-an-inch of the centerline of the bat, and on the sweetspot, resulted in an EV50 batted ball. This also suggests that any chance of doing any damage at all has to be within 6 inches of the sweetspot.

One note about the sweetspot and the bat length. The bat length has been fixed at 83 cm, or 32.7 inches. We don't have the each batter's actual bat length available in the tracking system, and so, a nominal value was selected. And the sweetspot was set at 6 inches from the head of this bat. This is why the 100% whiff rate only starts at 10 inches from the sweetspot, which is 4 inches beyond this nominal bat. As the ball radius is 1.46 inches, the 100% whiff rate should be there. However, differing bat lengths and limitation in the precision in the tracking gives us the results we see. While not ideal if this is the year 2035, it is an astounding value to have available in 2025. If you think of where we were in 2015, we're 90% of where we want to be today, which is a huge leap.

Another way to measure the performance of the batter is based on actual outcomes, whether it's a HR, a hit, or a whiff. We do this with Run Values. And for purposes of this article, I'm going to calculate the run values of each swing, relative to the average run value for that batter. In this way, our overall average is zero, and each batter is compared to themselves.

When we do that, we see that a batter has a bit more margin of error when they miss the sweetspot closer to themselves, rather than toward the head of the bat. Focus on the +3 inches of both charts. Here we see that 50% of the swings still result in an EV50. And that overall, they get their own average production. But look at the symmetrical -3 inches: those swings result in an EV50 70% of the time. And as a result, their overall production is still +15 runs per 100 swings.

Indeed, at about -7 inches from the sweetspot (so 13 inches down from the head of the bat), the batter gets the same production as at +3 inches. Even though at -7 inches, almost none of the batter's swings are EV50. Mishits that lead to singles are still singles. While not something you want in a batter, it does show that when you mishit, you want to mishit closer to the label rather than mishit closer to the head.

NEXT TIME

There are three dimensions in timing a swing. We have this one I just showed, in terms of trying to line the ball up to the sweetspot of the bat. In other words, a spectrum from Flail / SweetspotRing / TiedUp

The next two I will present in a future article:

Wednesday, February 12, 2025

Reality of Runs and Wins, through the lens of the 1960 Pirates-Yankees World Series

HISTORICAL BACKGROUND

In the 1960 World Series, entering the bottom of the 9th inning, the Pirates were tied with the Yankees, three games to three, the score of the game was 9-9. To this point, this sounds like an even series.

Except in the three games the Pirates won, they outscored the Yankees 14-8, while the Yankees demolished the Pirates by a score of 38-3 in their three wins. So, we have a 3-3 record, but the Pirates scoring 17 runs to the 46 by the Yankees. Being outscored by 29 runs does not lead to good results.

Then, light-hitting great-fielding Bill Mazeroski hit a home run in the bottom of the ninth, to win the game and the World Series for the Pirates. Final result for the Pirates:

  • 4 wins, 3 losses
  • 27 runs scored, 55 allowed

SABERMETRIC BACKGROUND

When a team outscores its opponents by a factor of 2, it will outwin its opponents by a factor of 4. In other words, we'd have expected the Yankees to have a 4-1 record against the Pirates, not 3-4.

Sabermetrically, we would represent the actual runs scored-allowed of the Pirates over the Yankees (27-55) as an EQUIVALENT won-loss record of 1.5 wins and 5.5 losses, over 7 games.

When we create a uber-stat, we have to decide whether we want to evaluate the individual players within the context of actual runs, or actual wins. And no series makes it clearer as to the decision that needs to be made than the 1960 World Series.

THE TWO PATHS

Now, let's follow both paths, to see where they lead us. 

Path 1 - Runs

First, let's go with the traditional standard of focusing on runs scored and allowed. This is the popular approach because after seven games, that seems far more real than the Random Variation that comes with wins and losses. The entire legacy of this series resting on the final swing of the Series to flip a game to 4-3 for one side or the other just screams Random Variation. And so, the focus is on Runs Scored and Runs Allowed. 

From that standpoint, we want the Pirates players, as a group, to come out with around 1.5 wins and 5.5 losses (and similarly the Yankees players with 5.5 wins and 1.5 losses). And, it will seem like a simple enough task to get there. The Pirates scored 27, allowed 55, and so it'll be easy to find just a couple of batters and pitchers to lead to those 1.5 wins, and plenty of batters and pitchers to lead to those 5.5 losses. And obviously, just as easy the other way to get the individual Yankee players to sum up to a 5.5 - 1.5 record.

Path 2 - Wins

The alternate path is to start with actual wins and actual losses. We want the sum total of the individual Pirates players to add up to 4 wins and 3 losses (and naturally the Yankees players to add up to 3 wins and 4 losses). This is the mindset of Bill James, which you can see in his Win Shares.

This is going to be a bit of a challenge: we have 55 runs scored in 7 games by the Yankees batters. Somehow, this will lead to only 3 wins. So, the way this will work is that we have a different runs-per-win (RPW) conversion for Yankees players as we do for Pirates players. Whereas the normal RPW is 10, we may have to go with 16 for Yankees batters (and Pirates pitchers) and 7 for Pirates batters (and Yankees pitchers). Or whatever disproportionate ratio we need.

In other words, what we are really doing is taking actual wins and losses (4-3 for the Pirates) and converting that into EQUIVALENT runs scored - allowed. For the Pirates, that comes out to about 44 runs scored (instead of 27) and 38 runs allowed (instead of 55).

THE REAL CURRENCY

As you can see, we are starting with one currency, and getting the equivalent on the other currency.

Is one currency (wins or runs) more real than the other? Bill thinks Wins is the real thing. Runs is just how you get there, but that not all runs are worth the same.

Most other people think Runs is the real thing, while any discrepancy with Wins is largely Random Variation. And we don't want to assign Random Variation to players.

Now, you can make a good argument for either side. If you follow-through on it.

BILL IS ULTIMATELY WRONG

However, here is where Bill James loses it. I'll explain it as clearly as possible.

  • In the 4 Pirates wins, the Pirates outscored the Yankees 24-17.
  • In the 3 Yankees wins, the Yankees outscored the Pirates 38-3.

What Bill James does is looks at the 55 runs scored by the Yankees and treats them ALL THE SAME. Those 17 runs that Yankees scored in the 4 Pirates wins? They count. Those 38 runs that the Yankees scores in the 3 Yankees wins? Those count the same, in terms of 1:1. Even though most of those 17 runs scored in the 4 Pirates wins are pretty much useless to the Yankees, Bill will make sure that 17/55 of those runs will carry proportionate weight.

The Yankees batters as a team had a .383 OBP and .528 SLG. Suppose you have a Yankees batter who hit like an average Yankees batter. But, he did all his good hitting when the Yankees lost, and did an 0-fer when the Yankees won. This batter therefore contributed nothing to the 3 wins, and you could argue contributed only part of something to the 0 wins. In other words, we can't treat all the runs to be worth the same. Runs scored in wins must be worth more than runs scored in losses. We can't just merge all the runs together, get 55 runs scored and 27 runs allowed, and then untangle them somehow to get to 3 wins and 4 losses.

This is why Bill is ultimately wrong in his approach. He says he cares about Wins. But he gets there by first merging all the runs together, thereby ignoring the impact of those runs on a game by game basis. And then when he sees 27 runs scored and 55 runs allowed by the Pirates, in order to get to 4 wins and 3 losses, he has to treat all those 55 runs allowed equally.

GOOD OBJECTIVE, BAD APPROACH

Now, just because Bill is wrong in his approach, does that mean his objective was wrong? No. It's a totally valid objective to say that we want the individual contributions to add up to the wins. But, we have to do this on a game by game basis. This is the most important part of this entire long and boring article.  If Bill wants his objective satisfied, he MUST. MUST.  MUST do it on a GAME. BY GAME. basis.  MUST.  Got it?

  • In game 6, the Yankees won 12-0.
  • In game 4, the Yankees won 10-0.
  • In game 2, the Yankees won 16-3.

Each of those games could just as well be the same as a 7-3 game. They all count as 1 win. We have to treat each win as if they were a 7-3 game (or whatever the average score of a win is). You must treat each game on its own, and not merge them with all the other games (wins and losses). When you do that merging, you lose the very essence of Actual Wins and Losses, and therefore, you lose your objective.

THE IMPLICATION

So, if Bill insists on using Wins and Losses, then he has to do it game by game. And when you do that, you are not going to like the results. The results may be more real in terms of being linked to actual wins and losses. But it's going to be very disentangled to actual runs scored and allowed.

And when you look at a batting line for a batter, do you really want to start separating it into performance in wins and performance in losses (and furthermore into performance in close wins and performance in blowout wins)? Because that is ultimately the path that we go toward.

And to what end? To better explain the Actual Wins and Losses? While losing out on Actual Runs Scored and Allowed?

There's a reason that most of us have decided to focus on Runs as the more real of the two, the one containing the Signal, and Wins as the more Random one, the Noise.

While I think Bill's objective is worthy, it is really just more of a sidebar. It may give you some insight in to the team, that season, by linking the timing of the performances.

To the extent that everything is real, and we want to give proportionate weight, I'd suggest that Runs is what is 90% real and Wins is 10% real.

And the only way to prove it to the reader is to do it both ways, the right way (or at least as right as we can make it); the results will speak for themselves.

Wednesday, February 05, 2025

Batting Average as a proxy for fun!  Batting Average as a proxy for fun?

First off, go read the articles from my buddies Joe Posnanski and Jay Jaffe.

I'll wait, go read that.

Ok, all done? Next thing: if you thoroughly enjoyed either of those two articles, I implore you, do not read what I am about to write. As Ferris Bueller said: go home.

Ok, now that we got rid of everyone else, time for the after party. Once you jump this line, that means you are totally with me.

Read More

(3) Comments • 2025/02/06 • History

Monday, February 03, 2025

Valuation implication of straying from the .300 win% replacement level

Let's create an average team of 15 batters, going from 650 plate appearances (PA) down to just over 100, such that the team total is 6000 PA.

Let's also create a talent level of Wins Above Average (per 650 PA) of +1.1 down to -2.0. Each player's WAA will range from +1.1 down to -0.5. The sum total of these players WAA is going to be exactly 0. We have an average 81-81 team.

Our team looks like this:

So, the last line says that player A15 will come to bat 108 times. At a rate of -2 wins from average per 650 PA, that gives him 2/650 x 108, or -0.3 WAA.

Now, let's try three different levels of replacement level of win%: .258, .300, .342. We'll give the batters 58.6% of the WAR, which means the amount of WAR going to this team, based on these three replacement levels are: 23, 19, 15 WAR respectively.

How did I get those numbers? Well, a .500 team with a .300 replacement level, means they are +.2 wins per game above replacement or 32.4 wins over the course of 162 games. We give the batters 58.6% (for illustrative purposes), and so .586 x 32.4 is 19 WAR.

This means if we have a .300 win% replacement level, the batters are going to get 19 WAR. If the replacement level is .258, then we have 23 WAR to hand out. A .342 replacement level means giving out 15 WAR to the batters.

Obviously, this 81-81 team has 0 WAA. In order to go from 0 WAA to 19 WAR, we have to add 19 wins, proportionate to the number of PA. In that case, all we have to do is divide the PA of each player by 315.8, and we'll get 19 WAR.  That is, 6000/315.8 is 19.

We repeat the same for the 23 WAR version (divide PA by 260.9) and the 15 WAR version (divide PA by 400.0000).

This is how much WAR our team gets, based on the three different replacement levels.

Now, let's pay our batters 183 million$, of which the league minimum is 800,000$. For WAR based on a .300 win%, that means paying 9 million$ per win. For WAR based on the .258 win%, that means each win costs 7.43 million$. For WAR based on the .342 win%, that means each win costs 11.4 million$.  The number 183 million$ is just for illustration, and it doesn't really matter what it is.

Again, if that is not obvious: 9 x 19 is 171, and we have 0.8 x 15 players or 12. So, 171 + 12 is 183. We make sure that regardless of what the replacement level is, we are always paying 183 million$ (for illustration purposes only).

This is how that looks:

Focus on the 4th player, and all the way down. The range in $ valuation between the .258 win% replacement level and the .342 win% replacement level is less than 2 million $, from A04 to A15. In other words, regardless of the replacement level chosen, our uncertainty ends up being less than 2 million$ for the vast majority of players. It's only at the very top-end of the players where the replacement level really matters. But on a percentage basis, that group is only +/-5% to 8%.

What does all this mean? Well, getting the precise replacement level is really not that important. It's going to have some impact if you are comparing a part-time player like Jacob deGrom in 2021-24 to a full-time much lesser pitcher. But, really, not much will change. For example, say you have a +2.06 win/650 PA player, with only 300 PA, and you have a league average player with 600 PA. In terms of WAR using a .300 level win%, both players are worth 1.9 wins. Lower the replacement level all the way down to .258, and the 600 PA player ends up with 0.2 more wins (2.3 to 2.1). Increase the replacement level all the way to .342 and the 300 PA player ends up with 0.2 more wins (1.7 to 1.5).

And in terms of dollars? Well, the league average 600 PA player gets 17.9 million$ either way. Our 300 PA star gets 16.4 million$ with a low replacement level and 20.2 million$ with a high replacement level. In other words, our valuation changes by up to +/-2 million$, depending how far from that .300 replacement level you get.

So, this is what all the talk about is, with regards to trying to find the best replacement level: It is a tale told by an idiot, full of sound and fury, signifying nothing.

And trying to figure out something other than a linear dollar to win conversion is going to overcomplicate things. The reality is that a linear dollar to win conversion can be achieved by playing around with the replacement level.

To the extent that you want to keep that replacement level fixed, you can try a non-linear conversion. But that's more out of convenience than learning something new.

(1) Comments • 2025/02/03 • Talent_Distribution

Sunday, January 19, 2025

Breaking into the Sports Industry WITHOUT learning to code

I'm not smart enough to give you a good answer, but I am smart enough to get smarter people to give you many thoughtful answers:

  • Rick: More important IMO is the ability to communicate data driven insights to non-technical audiences. Being able to break down and explain why x drives y, etc. in an intuitive and easily digestible manner is far more impactful than knowing the latest programming syntax best practices. And this is a skill that you can continue to grow and develop. Bonus - if you ever decide to want to learn how to code in the future, this skill will make you a better programmer.
  • Mike: I’d want to get a sense of what the student wants to do and what the student thinks he/she “can” do. What kind of ideas does the student have? What’s the student’s thought process? Where does the student see his/her existing skills and capabilities being of service to someone in the sports industry? Being able to code is a good thing. Being able to come up with ideas that can be coded by someone else if necessary is a better thing.
  • Richard: Learning to code is a little bit problematic too since most teams will want full stack developers with machine learning, just to set up an initial interview. But you can use online tools and write up your own analysis which can help get your foot in the door. Also, go to conferences and network and intern with a local minor or independent league team.
  • Josh: Knowing all of the rules of the sport is also super useful- both game rules and collective bargaining!
  • Lewie: Have a portfolio of independent/school work that demonstrates your insight and you ability to tackle interesting projects without coding. If you show that you can contribute with your current skillset, it makes it easier for prospective employers to picture you adding value (especially if you're willing to learn to program as you begin your career).
  • Michael: I think building out your own Squarespace website with scouting reports or a blog on your thoughts is always a good way to get noticed!
  • Bradley: Learning Spanish is also extremely useful for working in PD. Most PD workers are closer to social case workers than your typical baseball employee, so knowing Spanish and a lot of practical life skills is really important!
  • Alexander: You have to show how you can provide value to the organization. For some roles, such as the PD analyst role I had in sports, coding is how you do that. But I worked alongside staff who proved their value from their time as a prospect themselves, or their work outside of sports, or even colleges without the resources for high-level college analytics programs. Take what you know and figure out how it would make an organization better. Then, it’s like any other job: make a good argument as to why they need you. Sports teams also love self-starters, so if your experiences include taking the lead on something, then talking about the project and what you learned is a good place to start.
  • Tommy: Break in with a lower level (even unrelated) role and over time learn/make sports geared stuff on the side (check out savant, trumedia, etc for ideas) to show when roles come up internally, in sports it's who you know so just the work in the sport helps a ton. It takes time in sports, and the longer you're in it, no matter the role, the better your chances are.
(2) Comments • 2025/01/31

Tuesday, January 14, 2025

Aging Curve - Swing Speed

As we have (unpublished) 2023 Swing Speed (post-ASG) and the published 2024 Swing Speed, we can compare the change in swing speed by age, using the delta method, then chaining the results.

For example, the 67 batters at age 26 (comprising 21,141 swings) averaged 71.1 mph.  The next season (at age 27 naturally), they averaged 70.8 mph.  This is a drop of 0.3 mph.  So, we can say that the impact of aging from age 26 to 27 causes a 0.3 mph drop in swing speed.

We have 58 batters at age 27 who averaged 71.2 mph.  Their next season at age 28 averaged 71.1 mph, for a drop of 0.1 mph.

We can combine the results (chain them) by setting a nominal speed value at age 26 (let's say 71 mph), then applying the delta value of 0.3 mph to get them to 70.7 mph at age 27.  And then applying the next delta value of 0.1 to get them to 70.6 mph at age 28.

Repeating this process for all age groups, and weighting by number of swings (the above was a simple average) gives us this aging curve (click to embiggen).

I'll talk about that first data point in a sec.  From age 22 to age 31, we have a very flat aging curve, basically dropping by 0.02 mph per year.  From age 31 onwards, batters are losing 0.31 mph per year. 

As for that first data point: with only six batters, we are subject to a single player who may have had a huge jump.  And we do have such a player in Jordan Walker.  Here's what happened to him in 2023 and 2024.  

With a gain of 2.4 mph, this ends up driving up the overall average for age 21-to-22 as +1.2 mph. We of course can't start cherry-picking players to remove. We can (potentially) put in caps, but that's for another day.  

Here's the distribution of changes for all batters.  As you can see, Walker is part of a pretty extreme group on the right.  We could be tempted to set a cap at +/- 1 mph, maybe 1.5 mph.  And that anything beyond that is really something to do other with aging.  That maybe it has to do with injuries or some mechanical adjustment.  Of course, injuries and mechanical adjustment IS part of aging.  We rely on the volume of player to mitigate the impact of the Jordan Walkers.  So, we'll see next season how all this looks for the age 21-to-22 players especially.

(6) Comments • 2025/02/07

Tuesday, December 31, 2024

Run value of a called ball, part 2

In 2021, Blake Snell threw 84 more called balls than a league average pitcher, after controlling for the ball-strike count.

In 2022, he was at 60 more called balls.

In 2024, in a partial season, he was at +38.

In 2023 however, he threw 202 more called balls than the league average pitcher, easily the highest such number since the period of the study (2021-2024). He also won the Cy Young in 2023.  Sometimes, all those bad things are not so bad.

So, what better predicts next season's walk rate: the prior season walk rate or the prior season called ball rate? You shouldn't be surprised by the results I will show, but let's go through it anyway.

We have a correlation of r=.47 in terms of walk rate predicting walk rate (year T to year T+1). With an average of 378 PA in the sample, this gives us a Regression Toward the Mean Amount (Ballast) of 435 PA. If we use Number of Called Balls Above Average, our correlation increases a bit to r=.48. That gives us a Ballast of 410 PA (1600 pitches), which is an ok result on its own.  That it's an improvement on the walk rate is a win here.

The worst pitchers in Number of Called Balls Above Average in 2024:

  • +158 Quintana
  • +148 Gibson
  • +121 Peralta
  • +110 Quantrill
  • +108 Gil
  • +103 Stroman
  • +97 Fedde

And the best:

  • -159 Skubal
  • -141 Mikolas
  • -132 Kirby
  • -132 Woo
  • -124 Imanaga
  • -111 Estes
  • -110 Sanchez, C
  • -107 Schwellenbach

Using the run value of each called ball gives us the same r=.47 as the walk rate. Which makes sense. And so, it doesn't help us here, since we're doing extra work to get back to the same point of just using total walks.

As we learned last time, some called balls are worse than others. A called ball with a 3-X count is of course devastating in terms of that pitch (walk), but maybe it is not so bad in terms of telling us about the pitcher's walk proclivities in the future. So, is there any benefit in breaking up the called ball rate based on the count?

It is in fact better. Breaking it up into the five groups of ball-strike counts, the correlation increases to r=.52, which is a decent gain considering what we started with. Our Ballast is down to 350 PA.

And, we get a level of weighting as follows:

  • 2.3X: 3-2 count
  • 1.9X: 2-X and 3-X counts
  • 1.3X: first pitch
  • 0.6X: X-2 count
  • 0.5X: 0-1, 1-0, 1-1

If you remember, the run value at the 3-2 count was by far the highest. However, the leverage of that count would have suggested a weighting of 4X or 5X, not 2.3X. In other words: yes, we need to overweight called balls in the 3-2 count, but not to that extent.

The weighting for the 2-X and 3-X counts is a bit lower than its actual run value.

The first pitch run value is pretty low for a called ball, but pretty high in terms of the proclivities of walking a batter. So, this is a strong indicator.

All the other counts are roughly in line with their run values.

Having done all this, I think the next step (hopefully for an AspringSaberist and not me) is to actually look at it for all 12 counts. There might be nuances being missed that my groupings above is hiding.

In any case, I am quite pleased with uncovering the need to overweight the first pitch. Correlation using only those first pitches is r=.42, which is pretty high given that it's only one pitch per PA. By far the best pitcher in this regard is RP Chris Martin, who takes the 2nd, 3rd, 4th, and 7th place for lowest called ball rate on first pitches in the last 4 seasons. The top was Gabe Speier in 2023. Luis Medina is among the the few pitchers who appears multiple times at the bottom of the list (in 2023, 2024). We might be able to see if he improves his walk rate by seeing if he can keep his called ball rate on first pitches more under wraps.

Run value of a called ball, part 1

For the last twenty years, we've been working with the Run Expectancy by the 12 ball-strike counts (RE12). I posted such a chart back in 2017 here.

Those numbers have not changed much since. Comparing to 2020-present, and every number there is within .01 runs. So, we'll just go ahead and use those numbers for this discussion.

The value of a first-pitch called ball is simply the difference between the run value at 0-0 (.000 runs naturally) and 1-0 (.040 runs). In other words, a first-pitch called ball is worth +.040 runs.

On the other hand, the value of a called ball on a 3-2 count is the difference between the run value of a walk (.330 runs) and the 3-2 count (.056) or +.274 runs.

In other words, not all called balls are worth the same. Which of course we all intuitively know. All we're doing here is quantifying this effect.

Now, we know, for that play, that not all called balls are worth the same. But, from the perspective of the TALENT of the pitcher, is that true? Do we really want to give each called ball a different run value?

There are in fact (at least) four different approaches that the pitcher follows. And when I show you that breakdown, you will immediately understand. You can of course argue for 12, and I'd agree, but that makes the analysis much more difficult.

First, there is the 3-2 approach. This is a pretty special case because it all comes to a head. It's down to one pitch. A called ball we saw above is huge (+.274 runs). A called strike is just as huge (-.326 runs). This is a very very high leverage count, with no margin of error, for the pitcher or the batter.

Then we have the X-2 approach (0-2, 1-2, 2-2). In this case, the run value of the strike far exceeds the run value of the ball. Which of course you could have guessed, since a called or swinging strike means a strikeout, while a ball still keeps the at bat alive. A pitcher will be tempted to see if a batter will chase because the downside of a called ball is so low compared to the swinging strike.

Then we have the 2-X, 3-X approach (2-0, 2-1, 3-0, 3-1). In this case, the value of the called ball is 1.5X to 2.5X that of the value of the called strike. So in this case, the pitcher is really not counting on a batter chasing and so will be targetting the strike zone. He just can't afford a called ball here.

Finally, we have the remaining counts (0-0, 0-1, 1-0, 1-1), where the run values of a called ball or strike is fairly muted, as well fairly even. In other words, at these counts, the pitcher has a much higher margin of error, and so has a more individualized approach.

I would make an exception for the 0-0 (first-pitch) as a special fifth case. In addition to the low run value for a called ball and strike, batters also swing the least in this count, compared to all other counts except 3-0. So, at 0-0, the pitcher really has little to fear, as a batter is really motivated to not swing.

What I will be doing is tracking the called ball rate in these five groups for each pitcher, and seeing how well it correlated to next season's walk rate. Ideally, what we'll see is that a pitcher having a low or high called ball rate in the X-2 approach has little impact to his walk rate. And that his called ball rate on 3-2 as well as 2-X/3-X counts is what will drive his walk rate.

We'll have of course have to take care of the frequency in which he finds himself in a high-ball count to begin with.

I'll do the study next time.

Monday, December 30, 2024

How can you measure pitch speed by counting frames?

First, this is alot easier to do with high frame cameras (300 frames per second).

You can still do it with low-frame (30 fps), but that will substantially increase the margin of error for a single pitch. To compensate for that, you would need 100 pitches at 30 fps in order to match the uncertainty of 1 pitch at 300 fps.

Anyway, here's the question I asked on Twitter:

300 frames/sec camera picks up moments ball comes out of hand of pitcher, hits catcher glove. THIS pitch has 150 frames elapsed

Using SEASONAL average for that pitcher's release, and catcher's catch point, we estimate travel distance of 56-57 feet

What is the speed out of hand?

About one-third of the respondents selected:

  • Simple math solves this?!

So, for those folks, I'll show you how to handle this with math.

The other two-thirds of the respondents were split 50/50 between calculating the AVERAGE pitch speed and the OUT-OF-HAND pitch speed. When you calculate the average pitch speed, and say that that's the same thing as the out-of-hand pitch speed, you are saying a ball experiences no air resistance. While it is tempting to think that with under 60 feet of travel, a laser pitch doesn't experience much air resistance, that's not actually how it works.

Finally, for the remaining group that did use math and did apply some amount of air resisistance, they were split 50/50 as to how much air resistance you can actually have.

As you can see, basically, the responses were all over the place. And this is a fundamental part of all speed calculations. In the end, only 16% of respondents gave the correct answer.

So, enough with all that background. Jump the line to see the math.


We have a 300 frame/sec camera, and 150 frames elapsed. So, this means the flight time was 150 frames / (300 frames/sec), which comes out to 0.5 seconds.

The travel distance was 56-57 feet.

Speed is: distance over time. So, the speed here is 56.5 feet / 0.5 seconds = 113 feet/sec. This is the AVERAGE speed over the flight of the ball.

Air resistance makes it that the end speed after ~56-57 feet is about 90-92% of the starting speed. So, the starting speed is at 100% of the starting speed. The ending speed is 90-92% of the starting speed. The average speed is about halfway between the two, or 95-96% of the starting speed.

So, an average of 113 feet/sec, divided by ~0.955 will give us a starting speed of 118 feet/sec.

Converting from feet/sec to mph is to multiply by 3600 (seconds per hour) / 5280 (feet per mile). So, 118 feet/sec is 80.5mph. Or about 79-82 mph.

(1) Comments • 2025/01/07 • Statistical_Theory

Friday, December 27, 2024

De-De-Leveraging Run Values

How do I explain this? Let's see if I can do this.

BACKGROUND 

Run Values are dependent not only on the 8 base and 3 out states (24 base-out), but also the 4 ball and 3 strike states (12 ball-strike). We have 288 states to consider. In order to know the impact of an event, we track the run potential at each state, and attribute the change in run potential from one state to the other to that event. That's what we mean when we talk about the run value.

ILLUSTRATION

Let me take a random situation. We have a 3-1 count, and runners at the corners, with 1 out. The run expectancy is 1.36. That means we expect an average of 1.36 runs to score from that point to the end of the inning. Sometimes we'll get 0 runs. Sometimes 1 run. Sometimes 2 or 3 or 5 or 10. The average of all that is 1.36.

If we get to a 3-2 count on a swinging fastball, the run expectancy drops to 1.24 runs, or a change of minus 0.12 runs. We attribute that change, the run value of -0.12 runs, to that event (which in this case is a strike or a fastball strike). We can do this for every single pitch, and then we can aggregate this at the pitch type level.

Now, some situations have more leverage than others. In the above situation, if the bases were empty, the 3-1 count had a 0.38 run expectancy, and a 3-2 count had a 0.32 run expectancy. So, a fastball strike with the bases empty has a run value of 0.06 runs, half the run value of the above two-runner situation. This is called the base-out Leverage.

How about an 0-0 count becoming an 0-1 count, with the bases empty? That's a drop from 0.27 runs to 0.24 runs, or a drop of 0.03 runs. That's half the run value of the 3-1 state. This is called the ball-strike Leverage.

As you might be able to guess, the largest leverage at the ball-strike level is the last pitch. This is because the plate appearance has concluded, and so, there is no uncertainty level for that plate appearance. A HR is worth +1.40 runs in a random situation. An out is worth -0.27 runs. A walk is worth +0.32 runs, and so on. We are talking about a huge shift in run value, far more than what a ball or strike is going to generate.

And of course, bases loaded HR or out, or bases empty HR or out, has an even wider range in impact in run values.

LEVERAGE AND DELEVERAGE

So, we have two leverages that we want to handle, to deleverage, so that we keep everything in line: we want a pitch to be worth the same, regardless if it's the last pitch of a plate appearance or not, and whether there are runners on base or not.

It is easy enough to deleverage based on the base-out state. Indeed, the run values you see at Fangraphs are deleveraged in this manner. Instead of giving 24 different run values for a HR, we have 1 run value. And so on for each event.

One thing that no one does, at least publicly as best I know, and at least until now, is to de-leverage at the ball-strike level. We don't want the last pitch to be worth more than all the other pitches. For purposes of what I am about to do, rather than de-leverage each pitch within a plate appearance, I will only deleverage the last pitch. The last pitch has a Leverage Index that is 8X that of an intermediate (non-last) pitch. And so, the run value on the last pitch will get reduced by that much in order to keep the impact of the last-pitch to be the same as an intermediate pitch.

THE STUDY

Ok, so that lays the foundation for what I am about to do, for the 2021-2024 seasons.

The next step is to flag each pitch as being a 4-seam fastball (FF) or not (XX). I am going to track the run values in this manner:

- FF on intermediate

- FF on last pitch

- deleveraged XX on any pitch

I am going to limit it to pitchers who threw at least 10 pitches of each. Though naturally, the average is going to be much higher than that. Afterwards, I'll re-run what I did with a higher cutoff.

The correlation will be against the next-season results.

What I am interested is in what we can learn about a pitcher's results in year T+1 from their breakdown from above in year T.

RESULTS

First, let's consider the last-pitch FF in year T. The correlation to last-pitch FF in year T+1 is r=.11. With an average number of 115 pitches in the sample, this suggests a Regression Amount (a ballast) of 900 pitches. This means that if we had 900 pitches, then half the results we'd see in year T on last-pitch FF will be signal for what to expect in year T+1 on last-pitch FF. This is actually a pretty good result.

In terms of the intermediate FF: our correlation to itself in year T+1 is a pretty high r=.44, which given 355 pitches on average suggests a ballast of only 446 pitches. This is pretty great as a result.

Now, how about correlating to each other? The last-pitch FF correlated only to intermediate FF in year T+1 at r=.07 (ballast of 1454 pitches). Similarly, the intermediate FF correlated to last-pitch FF at r=.02.

In other words, we are seeing something quite real and distinct here: performance on last pitches don't predict performance on intermediate pitches, or vice versa.

How about the non-FF (the XX) pitches, do they correlate with either? No, they do not. At an r=.09 in one case (last-pitch FF, ballast of 7300 pitches) and r=.00 in the other case (intermediate FF), we can also safely say that performance on non-fastballs don't tell us anything about performance on fastballs. This is actually a comforting result. There's really no reason to think that being good on one pitch means you are good at another pitch.

HEART OF THE MATTER

Let's now get to the heart of the matter: correlating the last-pitch FF and intermediate FF in year T to the deleveraged FF run value in year T+1. Both are quite substantial, with the intermediate FF pitches actually carrying more weight. The overall correlation is r=.39. Why would the intermediate have more weight? It probably has to do with the idea that the last-pitch has extreme binary results (HR happened, rather than counting it as a partial HR and partial double and partial out, based on the expected speed+angle properties of the batted ball). The intermediate pitches are much more true to the outcome: a ball is a ball and a strike is a strike, except for the 5 or 10% of the time that it's close enough that it can go either way.

Still, sticking with a correlation of deleveraged run value year to year, our ballast is a healthy 733 pitches (equivalent to 190 PA). Which is great, as a success in this regard is really anything under 300 PA (or ~1200 pitches).

So, there's two things we can try here. The first is used xwOBAcon instead of wOBAcon for the last-pitch batted ball results. I'll do that next time.

The other is what I mentioned above and use a higher cutoff to see if we get similar results.

With a 25-pitch cutoff in each of the intermediate and last-pitch sets, our correlation of deleveraged FF runs jumps to r=.49, with a ballast of 621 pitches (equivalent to 160 PA). Trying different cutoffs keeps us in that 150-200 PA range.

When I do NOT use deleveraged Run Values, and instead keep the full leverage on that last pitch, the correlation drops substantially. In other words, we really really don't want to give extra weight to that last pitch, especially its implicit 8X weight.

NEXT STEP

This opens up the door for all the stuff-metrics out there, as to what to correlate against. I don't know what everyone out there is using as a standard. But this research suggests that we probably want to use deleveraged run values, both at the base-out level (which I would guess most if not all are already doing) and at the ball-strike level (which I would guess the opposite).

Also next time, I am going to look at sliders especially because those seem to always come up as something interesting.

Thursday, December 26, 2024

Run Value with runners on base v bases empty

Logan Gilbert had a sensastional .227 wOBA with bases empty and a pedestrian .324 with runners on base. His FIP was just as stark: 2.60 v 4.95.

Among pitchers with at least 2100 pitches, the wOBA leaders were:

  • .246 Skubal
  • .247 Skenes
  • .255 Gilbert
  • .256 Wheeler
  • .260 Sale

You will notice that the AL Cy Young winner, plus the top 3 NL Cy Young finishers among those top five pitchers. Plus Gilbert.

His Run Value (runs above average) was +23 runs, an excellent figure but 16th in MLB, and well behind Skubal at +38.

The issue is how to handle his performance with runners on base. His ERA obviously reflects it, as does his Run Value. That's because those are context-sensitive stats: performance with runners on base get extra weight (implicitly, by a factor of 2X).

The question is if that's what we want. We typically don't do that with batters. If a batter is exceptionally well with runners on base, which leads to real runs, we don't give that extra weight. Maybe we should. Personally I would. But the large majority of folks in my milieu do not.

By the same token, maybe we should be consistent with pitchers as well. We can deleverage the results so that the implicit extra weight of performance with runners on base gets an explicit neutral weight, matching the same weight with bases empty.

When we do that, Logan Gilbert shoots up in (Deleveraged) Run Value. This is how those rankings look:

  • +39 Skubal
  • +36 Gilbert
  • +36 Sale
  • +34 Miller
  • +29 Clase
  • +29 Wheeler
  • +28 Skenes
  • +27 Lugo

Is this a better list than the wOBA list? I don't know, maybe. Maybe not.

It comes down to how you feel performance with runner on base should be treated for pitchers. And if that same treatment should apply to batters.

The one argument to make for pitchers and against batters is that pitchers are contributing to putting runners on base. So, they have a hand in creating their context. Then again, they aren't alone in doing that. Their fielders are doing so as well.

The wishy-washy way to resolve this is to just split the difference. Calculate it both ways, context-specific and context-neutral, and take the midpoint. That's probably going to be closer to the true answer than the two extreme points. It allows you to acknowledge both sides. And it allows you to handle pitchers and batters consistently.

That is usually the way I operate. Going one extreme or the other is usually the wrong answer. 50/50 may not be the right answer, but it's probably closer to the truth. Whatever truth actually means here.

(2) Comments • 2025/01/02 • Linear_Weights

Run Values of Pitches: Final v Intermediate

There were 152 pitchers who threw at least 500 4-seam fastballs in 2024. The wOBA ranged from .190 to .460, with a league average of .331 on 4-seamers (league average on all pitches is .310).

Yusei Kikuchi had a .348 wOBA on 4-seamers, which was worth -11 runs (negative is bad). So, he was very below league average. The run value and his wOBA are consistent to each other.

And yet, if you look at all his 4-seamers, he was +1 runs (just over league average).

So, how is it that he is 11 runs below average in one sentence, and 1 run above average in the other sentence, when I'm only talking about his 4-seamers?

He threw 1374 4-seam fastballs. Of those, 305 was the last pitch of the plate appearance. wOBA is only calculated for each plate appearance, and not for each pitch. This means there was another 1069 4-seam fastballs that Kikuchi threw that did not end the plate appearance. The wOBA on those 1069 pitches is a null: no numerator and no denominator. As far as wOBA is concerned, those 1069 pitches did not happen.

But they in fact did happen: 665 strikes and 404 balls. I'll call these the intermediate pitches. All those intermediate strikes were worth +29 runs to Kikuchi, and all those intermediate balls were worth -17 runs. So, his 4-seamers on his intermediate pitches were worth +12 runs. Add in the -11 runs on his last pitch of each plate appearance, and we have a total of +1 run on his 4-seamer.

Compare that to Tarik Skubal and his 4-seamers: Skubal had a very low .248 wOBA, for a total of +19 runs. When looking only on the last pitch of each plate appearance, those 4-seamers were worth +12 runs. In other words, his .248 wOBA (his performance on his last pitches) generated +12 runs. On his 709 intermediate 4-seamers, they were worth +7 runs. In other words, his 452 strikes (+17 runs) and 257 called balls (-10 runs) generated +7 runs.

This is why you can't just quote a pitcher's wOBA and try to directly associate that to the overall run production of a pitch.

As for what we show on Savant: well, we don't actually split the run value like that on the player pages.  You can back into that by using the last-pitch flag on the Search page, like here.  You can remove the flag to get the total runs.  Then subtract the two to get the intermediate run value.

There is another way to show this data, which might make it clearer.  This is for Skubal on 4-seamers:

  • +31 runs on strikes (+17 on intermediate, +14 on strikeouts)
  • -14 runs on balls (-10 intermediate, -4 walks)
  • +2 runs in play

And Kikuchi:

  • +49 runs on strikes (+30 on intermediate, +19 on strikeouts)
  • -21 runs on balls (-18 intermediate, -3 walks)
  • -27 runs in play

This presentation makes it much clearer what is going on.  Kikuchi is getting tremendous value on his strikes (as long as we don't consider balls in play as strikes), while getting hugely hurt on balls in play.

(1) Comments • 2024/12/28 • Linear_Weights

Hall of Fame voting structure problem

Sometimes you adopt a voting structure that seems reasonable, but the results end up belying its purported reasonableness.

Take the case of Felix Hernandez and Francisco Rodriguez. In a head-to-head matchup, where you are asked to rank one ahead of the other, we can use the results of this poll to estimate that 95% of the respondents put Felix ahead of KRod. And it's not hard to see why. In careers that largely overlapped, KRod did pretty well on the Cy Young front, especially for a reliever, finishing 3rd once, and 4th twice. Felix of course has the Cy Young, two 2nd place finishes, a 4th place, and votes in two other seasons. It's no surprise that Felix earned about 3X the salary than KRod did. And not coincidentally, he also earned 3X the WAR. Everything is basically consistent with Felix getting 95% of the vote in a head to head matchup.

But, the Hall of Fame ballot is not explicitly about head to head. When you fill out a ballot, there's going to be some prevailing thought, like trying to find balance of pitchers and nonpitchers, and maybe starting pitchers and relief pitchers. It is not a ranked-order ballot. It's easy for a voter to say that Felix is not the top starter on that ballot (preferring CC) and that Wagner is not the top reliever (preferring KRod). Whether any of those two choices is true is beside the point I am making. And the point I am making is that once CC and KRod are selected as the top of each role, there's much less effort in comparing the top reliever (KRod in this illustration) to the 2nd best pitcher (Felix in this illustration). There's no actual mechanism to require that explicitly be done.

The current voting shows this:

  • 30 Felix No, KRod No
  • 1 KRod Yes, Felix Yes
  • 6 Felix Yes, KRod No
  • 3 KRod Yes, Felix No

What we are interested in is those last two lines. There were 9 voters who chose one, but not the other. We'd expect it to go 8 Felix, 1 KRod, or 9 Felix, 0 KRod. Instead, we get only 6 Felix, 3 KRod.

Obviously, with only 9 ballots in question, it's too early to come to a conclusion. So, it will be interesting to see the final results here.

If on the other hand voting did go head-to-head, or a ranked-order voting of all players on the ballot, then how my voters voted would likely be pretty much how the current body would end up voting. And putting in an Elect-4 or Elect-3 would likely get Felix into the Hall of Fame within five years.

This would also handle the more controversial players that continue to linger on the ballot. It's alot easier to say "no" to ARod and look for someone else than to rank him as 28th on a ballot with 28 players. Eventually, the controversial players would get dinged a few rungs in a ranked-order process by some voters (and not at all by others). Furthermore, in a ranked-order process, the rankings would carry enough weight that those who put those controversial players at 1 or 2 or 3 would push them over. Is this good or bad? It's irrelevant. It would simply reflect the prevailing sentiment.

(2) Comments • 2024/12/27 • Awards

Monday, December 23, 2024

Swing Speed and Acceleration Curves

One thing I do is classify every batted ball as whether it is a Best-Speed or not. Best-Speed is simply the 50% swings with the highest launch speed. The reason we do this is because we are often interested in swings when good things happen. As for the number of swings chosen, the top 50% corresponds most closely with a batter's talent.

A batter will also not have the same swing each time even limited to these best-speed swings. Acceleration peaks at about 50 msec prior to impact, but not always. The range player to player is wide. And even swing to swing for the same player, there is variation. So, I also flag the best-speed swings where he reaches his personal most common acceleration point.

What I will now show you are the average of the 38 optimal swings for Giancarlo, frame by frame. At 300 frames per second, this means we are tracking 3 frames for every 10 milliseconds. So, on the x-axis, where you see -3, that means it is 10 msec prior to impact. The chart starts at -30, or 100 msec prior to impact.

Click to embiggen

On the left y-axis, that's the swing speed, which peaks at almost 84 mph (solid line). This is essentially close to the human limit.

On the right y-axis, that's the acceleration, in the form of change in speed, frame to frame. I am showing it as a dotted line. We see that Giancarlo has a peak acceleration at close to 15 frames (50 msec) prior to impact. Since we are looking at the best-of-best, we can also surmise that this is exactly what Giancarlo wants to do.

Math interlude: We can see he gains just over 3 mph (3.2) per frame, or 3.2 mph per 3.33 msec of acceleration. 3.2 mph is 4.7 feet per second. Therefore 4.7 ft/s per 3.33 msec is 1410 feet per second-squared. Gravity is 32.174 feet per second-squared, or one g-force. Giancarlo is 1410 / 32.174 = 44. That's how much acceleration Giancarlo generates with his swings: 44 g-force.

All that is fun, but let's look even more. We can also classify all his whiffs (swing and misses) by whether they are early or late. So, here's the same chart, but with the blue lines for his late swings. We can see by the curves that he is late by about 3 frames (10 msec).

And now the green lines to add in his early swings, which you can see is about 15 msec.

And if you want to see a bit of fun, here are all his ontime, early and late swings, but shifting his whiffs forward/backward.

What we will learn in the coming years is the Aging Curves of early/late swings.  As batters lose their swing speed, are they able to adapt.  Or, are they simply obstinate and keep trying the same thing over and over again, and the late swings will overtake the early swings more and more as they age.  So much to still learn...

Sunday, December 22, 2024

What does Andre Pallante know about the platoon disadvantage that everyone else does not?

I'm going to put the math calculations at the end, because that's the least interesting part about what I'll show you. But, it'll be useful for everyone out there to perform the same calculations.

Andre Pallante against LHH threw his 4-seam fastball 79% of the time, and his knuckle curve 17% of the time. He threw 3% sliders and 1% sinkers. He is essentially a 2-pitch pitcher against LHH (I call that 1.7 pitches, see the math at the end).

Against RHH, it was a pretty even split of sinkers, sliders, 4-seamers (each between 25% and 36%), with 8% knuckle curves. He is a 4-pitch pitcher agaist RHH (I call that 3.9 pitches).

Now, having that kind of a split is not unusual for a LHP pitcher. Except Pallante is a RHP.

Typically, a RHP will do like Jacob deGrom does: throw a 4-seam/slider combination with the platoon advantage against RHH. They do that because they already have the platoon advantage and so don't need too much variety to overcome the opponent. They just use their two best pitches. But against opposite handed batting, they need extra pitches. For deGrom, he adds in changeups and curves that he throws exclusively against LHH.

You can look at Max Scherer as well. While not as dogmatic as Jake, he does similarly: against same-handed, he throws primarily a 4-seam/slider combo (79% of the time), with a little bit of changeup/curve/cutter. But against opposite-handed, he severely drops the slider and increases the use of the cutter/curve to compensate, as well as the changeup. This is very common: drop the slider, add the cutter/curve.

But Pallante does not do that. His arsenal usage suggests that he has the platoon advantage against the opposite-handed LHH, and he needs support against the same-handed RHH. What do the results actually say? Incredibly, his career wOBA against the opposite-handed LHH is a very low .274 (on 597 batters faced) and an astromically high .350 (on 671 batters) against the same-handed RHH.

Pallante throws with a high-three-quarter delivery. At 59 degrees, it's pretty much close to as over-the-top an arm angle as you'll get in MLB. Pitchers who do that do so to have an advantage against opposite-handed batting. Which we see here with Pallante. Not only does he have the sensational results against opposite-handed batting, but he's doing it as a 2-pitch pitcher. He has figured it out.

But somehow, against same-handed batting, he is totally lost. First off, that over-the-top angle (or high-three-quarter) is not doing him any favours. As we have learned, low-angle pitchers have a much better performance against same-handed batters (always have Randy Johnson in your mind to understand that).

Still, all that means is that he should have neutral platoon splits, and not the huge reverse splits we are seeing. We always have to consider some of that is just Random Variation.

But more importantly, why is he adding two pitches to his arsenal against same-handed batting? Is it mechanical? Is it confidence? Is it that he just doesn't know what to do against same-handed batters? Is his slider not something he can throw with that high an arm-delivery against same-handed batters?  I really have no answers for you, just alot of questions and speculation.

The hope we have here is that he has an astounding set of results against opposite-handed batters being a 2-pitch pitcher. That is an incredible baseline to build against. That should hopefully translate eventually to being at least as good against same-handed batters.

I am interested in what Zack Wheeler has done over the last few years, drastically changed his arm angle, with the expected results: he went from somewhat neutral platoon splits to heavily better against same-handed batters. And all the while, remains one of the best pitchers in baseball. The question I have is: if pitchers can do what Wheeler does, and change their arm angle year to year, can they do so by having two separate arm angles, one for each bat side? And if they can, then this would be a huge win for pitchers, probably a bigger gain in performance than anything else they can do. But, I say that not knowing anything about the mechanics of pitching, the mindset of pitching, and the repeatability/comfort of pitching.


Here's the math to calculate the number of pitch types in an arsenal for a pitcher.

  1. Take the frequency of each pitch thrown
  2. Square the number
  3. Add those up
  4. And take the recipricol

So, someone who has a 70/30 split looks like this:

  1. 70%, 30%
  2. 0.49, 0.09
  3. 0.58
  4. 1.7

So, we'd say someone who has a 70/30 split in usage throws 1.7 pitches. If it was 50/50, then it would be 2. If it was 100/0, then it would be 1.

Since 2021, Chase Anderson (in 2022) leads with the most number of pitches in their arsenal against same handed batting at 6.1 pitches (and only 3.9 against opposite-handed, for a reverse split of 2.2, the highest of all pitchers).

Yu Darvish in 2024 has 7.7 pitches against opposite-handed batters (and 5.7 against same-handed).

Ranger Suarez has the largest gap of most added pitches against opposite-handed batters +2.7 pitches added in 2023.

Click to embiggen

(2) Comments • 2024/12/23 • Batter_v_Pitcher

Saturday, December 21, 2024

Run Values by Movement and Arm Angles

There are many variables that affect the performance of a pitcher. In addition to the typical things we usually consider (platoon advantage, pitch speed, movement direction, spin rate), there is also their arm angle.

In order to make sure that we are making an apples to apples comparison, we need to make sure that we account for the bias that each variable exhibits. For example, the most obvious is the platoon advantage. When a pitcher throws to a same-handed batter, the run value drops by 0.5 runs per 100 pitches. The direction is obviously as expected, hence the existence of the term platoon advantage (same-handed for pitchers, opposite-handed for batters).

Our job as saberists is almost always to focus on the magnitude an effect, rather than the existence of an effect. For example, I will always concede that yes, Clutch Talent exists. But, there's a difference between saying that the Clutch Talent will turn David Freese into Albert Pujols, or that it will turn David Freese into a slightly better version of David Freese. As saberists, we're in the magnitude business. I'll concede that Clutch Talent can add (or subtract) 10 points of wOBA (or 10 points of OBP and 15 points of SLG). That does a few things to the conversation. We can move forward and accept that humans are humans. It also makes the point that this is hardly actionable. And most important, if all we have to look for is 10 points of wOBA, that's going to take thousands of plate appearances to find it, making the effort not worth the while of most folks.

Platoon advantage is nothing of the sort. The magnitude is much larger, while trying to find it is much easier. We actually know as a point of fact the handedness of the batter and the pitcher. Classifying the players is a huge step. Determining its magnitude is therefore much easier, with much less uncertainty.

The wOBA impact on handedness is somewhere around 25 points, which means around .020 runs per plate appearance (PA). Since 2016, there have been almost 4 pitches per PA. So, .020 runs per 4 pitches, means .005 runs per pitch. I like to show things in terms of 100 pitches (basically a full game for a starting pitcher). So, .005 runs per pitch is 0.5 runs per 100 pitches. That's the platoon effect based on handedness.

If you think like a human, and put yourself in the shoes of Larry Walker and John Kruk facing Randy Johnson, all it takes is one pitch to understand why the platoon advantage exists (video at all-star game).

So, what follows will be after neutralizing for the handedness effect.

What I am interested in is the effect of the direction of movement of a 4-seam fastball, vis-a-vis, with the arm angle of the pitcher. I'm going to use numbers to describe angles and directions, but I'll use words as proxy too. When I say 0 degrees, that means a sidearmer, and that the ball will move horizontally (or tails). When I say 90 degrees, that means over the top delivery, and the ball will move vertically (or rides).

So, when I say 45 degrees as the arm angle, that's the three-quarter delivery. A bit below 45 degrees is a low-three-quarter, and a bit above 45 degrees is a high-three-quarter.

The most interesting performance level we have, by far, is the low arm angle (30-35 degrees), so the low-three-quarter delivery. When it's at 30 degrees of arm angle, the run value based is not really dependent on the movement angle. But as the arm angle increases to 35 degrees, the run value improves for the pitcher as the movement angle increases (more ride).

Increase it some more to 40 degrees, and the impact of the ride starts to go down a little bit, while the impact of the tail stays the same as at 35 degree arm angle.

Once you get to 45, 50, 55 degrees of arm angle (so the high-three-quarter), the run value of the vertical movement, the ride, is now fairly constant, and neutral (0 runs). But the run value of the horizontal movement, the tail, is now very bad for the pitcher (+0.5 runs per 100 pitches).

So, we can we conclude here? If you are going to throw a 4-seam fastball, keep your arm angle in the low-three-quarter range. And if you can also get as much ride (vertical movement) as possible, you will have a tremendous advantage. Even if your pitch tails too much, that's at least neutral.

If your arm angle is in the high-three-quarter range, you definitely need to have your pitch ride. If you have both a high-three-quarter arm angle AND your pitch tails, your fastball will be a disaster.

After lunch, I'll find examples of pitchers of the two extremes:

- low-three-quarter with ride (what we want)

- high-three-quarter with tail (what to avoid)

And maybe seeing the names will make it clear. (I haven't checked yet to see who qualifies in which)

I'll also change the study a bit, and look at movement relative to the arm angle.

(1) Comments • 2024/12/21 • Batter_v_Pitcher

Sunday, December 15, 2024

Art and Science of WAR: Deriving the zero-baseline, historically

One of the interesting things that baseball data (or sports data in general) makes you confront is the difference between observed success rate and true success rates

There is a presumption among many that once you have several hundred opportunities (whether it's a plate appearance or a shot on net or a shot at basket) that that is enough to minimize Random Variation. This is in fact not true. In order to understand how much Random Variation is clouding your observations from seeing the truth, you have to understand the underlying talent distribution to begin with.

This seems like a bit of chicken-and-egg, since the thing we are trying to figure out is the true talent of each player and so getting to a talent distribution for the league. But, there are ways to get there. This is easier to explain with teams.

TEAMS

If you observe a distribution of Winning Percentages, the binomial distribution will already tell us how much Random Variation impacts those observations. True Talent plus Random Variation equals Observations. The plus and equals is actually applied to the square of each of those values, but I'm not going to pollute the text with a bunch of exponents. They are there. The point is, True + Random = Observed, or Observed - Random = True.

In baseball for example, we can use this equation to establish a Prior. And on a team level, every team has a baseline value of 35 wins and 35 losses. And so, you take whatever Observation you have (say a team starts the season at 20-5), add the Prior (35-35), and we get the Posterior (55-40, or .579 win percentage). That .579 is the True Talent of your team.

REMINDER: DELETE THIS PART

This is all part of the horribly named Beta Distribution with the even more horribly named alpha and beta parameters. After the Binomial and Poisson distributions, this is perhaps the most important distribution to know in sports. And whoever created the name for this distribution was probably a committee of a dozen statisticians, who couldn't agree on anything, and so decided to just use alpha once and beta twice. Furthermore, they made this distribution even more unwieldly by making it seem that alpha and beta are independent, when they are in fact extremely dependent on each other. If I had time, I would tell you how I really feel about all this, but I'll just keep my opinion to myself, so you have no idea what I am actually thinking. Let me backspace out this entire paragraph, just to be safe.

PLAYER SELECTION BIAS

Ok, where was I? So, with teams, things are alot easier, because every team is playing the same number of games. With players, there's plenty of selection bias at play here. Who plays, how often they play, where they play, all those are going to cause us problems. A manager is going to make decision based on the past observations (which we already know is polluted with Random Variation, most of which the manager will ignore, and treat those observations as if it had very little Random Variation). We have a real mess on our hands.

I'll tell you how you (not me, but you) can solve this. Then I'll give you my shorthand for all this. In order to solve this, running a simulation, like Out of the Park (OOTP) Baseball would be very handy. What you want to do is come up with a set of Talent Distribution and Playing Time Rules that when combined will give you Observed Values over 162 games and 30 teams. And you know you hit the right combination of the two inputs (Talent and Time) when your Observation matching what we actually saw in 2024 (or at least reasonably close). There's a lot of trial and error here, but once you have it down, then you've got something pretty powerful. You have a model that you can tweak and apply for any season.

SHORTCUT

That's alot of work, and I don't want to do all that. You can. As Bill James said: I can't do all this by myself. Keith Woolner for example, some 20+ years ago, did something very similar to what I described. Keith has been working for Cleveland for almost 20 years now. He was definitely ahead of his time, which is probably why Cleveland snapped him up when they did. Anyway, getting back to my shortcut method: take the 20% of players with the least amount of playing time (our OBSERVATION). And treat that group as the minimum level of TALENT in baseball. See, we're not saying that those specific players are part of the minimum level. After it, it will include Jacob deGrom and it may include Mike Trout. Furthermore, I just finished saying that observation is not equal to talent, since we have random variation to account for. But, we won't let perfect be the enemy of the good. Taking the bottom 20%, and treating the group data as if it represents the minimum level is something that is probably going to be close to the truth. Until someone does the work, it's a reasonable way to move forward here.

Note that by doing this, taking the bottom 20% and saying that that is the zero-baseline, it LOOKS like we're saying that half of them (10%) are BELOW the zero-baseline. Now, their observed performance data will be below the zero-baseline, but that does NOT mean their TALENT is below the zero-baseline. I'll prove it to you in one short paragraph.

SHORT PROOF

Mookie Betts goes 0-for-5. Is his TALENT below the minimum level we can accept in MLB? Or, is it simply that those 5 plate appearances are just a small sample of observation that really tells us (almost) nothing about Mookie Betts and his talent to play MLB? No matter what we do, that 0-for-5, or any batter's 0-for-5, will count as a negative. That's just how it works with observations. And having five or ten games like that, well, that's a tough hole to get out of. You can have a few 1-for-5 and 2-for-5 games to obscure that. But the reality is that we will always observe players below the zero-baseline, even if their talent is above the zero-baseline. Hope that was short enough to prove it to you.

THE RESULTS

(Click to embiggen) Here is how the Bench players did, as batters, relative to league average, year by year, since 1969. As you can see, since 1987, it's been pretty flat at around 18 runs below average. This has hovered between -15 and -21 runs since then. How does it look before 1969? I don't know, I haven't looked. The floor is open. But, I feel confident enough that we can just go with a single -18 run value since at least 1969.

Now, that's for batting. How about for fielding? As we recently learned, the Bench fielders are about 3 runs below the league average fielder.

So, combined, we can say that the Bench line is about 21 runs below the league average line (or 2.1 wins below league average). With 9 full-time batters per team, that means the position+DH players are about 19 wins below league average.

PREVIEW

I don't know what we'll find with pitchers (yet), but let's say that'll be 14 wins below league average.

And 19+14 is 33 wins below league average. Since the league average is 81 wins, then 33 wins below that is 48 wins. And 48/162 is .296 win%. And that number, close to .300 win%, is why we set the zero-baseline in WAR at .300.

But, I jumped ahead here, and before we stick with that .300, let's do the pitchers. Which I will. Next time.

(6) Comments • 2024/12/18 • Talent_Distribution

Saturday, December 14, 2024

How good, or bad, are the fielders on the Bench (part 2)?

Go here for Part 1: Re-Introduction and Infielders

PRIMARY CF

Our Regular Primary CF is +7.5 runs (above the average outfielder), while our Bench Primary CF is +6.2 runs. Half of the backup innings comes from our Bench Primary CF, while the other half comes from our Secondary CF (whose Primary Position is LF/RF). Those Secondary CF are +0.3 runs.

So, the backup OF at CF is +3.2 runs. That means our Regular Primary CF is +4.3 runs better than their backup.

Just for kicks: the Out of Position fielder (so, those who are Primary Infielder, 1B, or C) is +0.8 runs. In other words, the fielding production of an out-of-position CF is about the same as an experienced corner outfielder. This does not bode well for the corner outfielder.

PRIMARY RF

Regular RF is -1.0 runs, while Bench RF is -5.2 runs. Secondary RF (Primary CF) is +4.3 runs, while Secondary RF (Primary LF) is -4.6 runs. This is our first indication that the CF is a much much much better fielder than the LF. Overall, our Backup RF is -2.5 runs. So, our Regular RF is +1.5 runs better than their backup.

Just for kicks: Out of Position is -10 runs. In comparison to the Out of Position at CF, I think the conclusion should be safely to say that a manager will look for a talented infielder to put at CF, and lowers the bar to put them at RF. Ideally, we'll see similar results in LF.

PRIMARY LF

Regular LF is -4.6 runs, while Bench LF is -5.4 runs. Secondary LF (Primary CF) is +0.8 runs, while Secondary LF (Primary RF) is -3.8 runs. Here is our first indication that CF is a better fielder than RF. Overall, our Backup LF is -3.5 runs. In other words, the Backup LF is a BETTER fielder than the Regular LF.

Just for kicks: Out of Position is -7.5 runs. So, this conforms to the RF Out of Position we just saw.

SUMMARY OUTFIELDER

First off, since all the outfielders are being compared against the same standard, we can see how the average Regular of each position looks:

  • +7.5 CF
  • -1.0 RF
  • -4.5 LF

The average of our two corner outfielders is -2.7. So, the gap between CF and our corner outfielders is 10 runs. This is delicious because that's what we've been using as our standard positional adjustment between CF and our corner outfielders.

What we do learn here is that the RF is a better fielder than the LF. This is something we've learned a few years ago, and now we can finally see it. As a reminder, this is the positional adjustments I introduced some 15-20 years ago:

  • +2.5 CF
  • -7.5 RF
  • -7.5 LF

Keeping the center of that (about -4.2runs) fixed for comparison purposes, the above suggests this:

  • +2.5 CF
  • -6.0 RF
  • -9.5 LF

In the coming weeks, I'll be figuring out the positional adjustments. But this is a pretty good sign.

Relative to our backups, this is how the Regular fielders are:

  • +4.3 CF
  • +1.5 RF
  • -1.1 LF

Of course, the backups are a carefully selected group of players, with a fairly biased representation.

UPDATED (18:30 ET)

PRIMARY CATCHER

This is probably the one I most have looked forward to. Our Regular Primary Catcher is +1.1 runs, while our Bench Primary Catcher is -5.2 runs. Is it surprising that the Bench Primary Catcher is so much a worse fielder? Maybe. Maybe not. I don't know. That's why we study these things. In any case, we have a whopping 6 run gap between Regular and Bench.

Just for kicks: This is the one I was most looking forward to. And we are not disappointed! The Out-of-Position fielder at Catcher is -18 runs! This is only 38 players covering 2 full seasons of play (spread over the 30 teams since 2016). This represents less than 1% of all catcher innings played. So, for our emergency catchers, this was the best option the clubs sent out there, and even then, they were a whopping 18 runs below average. Catching is really really really hard.

PRIMARY 1B


Finally, the 1B. The Regular Primary is -0.5 runs, the Bench Primary is -2.0 runs, and the Out of Position is -2.3 runs. So, our Regular 1B is about 1.5 runs better than their Backup.

Page 1 of 189 pages  1 2 3 >  Last ›

Latest...

COMMENTS

Feb 07 15:38
Aging Curve - Swing Speed

Feb 06 11:55
Batting Average as a proxy for fun!  Batting Average as a proxy for fun?

Feb 03 20:21
Valuation implication of straying from the .300 win% replacement level

Jan 31 13:35
Breaking into the Sports Industry WITHOUT learning to code

Jan 26 16:27
Statcast: Update to Catcher Framing

Jan 19 15:02
Young players don’t like the MLB pay scale, while veteran stars love it

Jan 14 23:32
Statcast Lab: Distance/Time Model to Catcher Throwing Out Runners

Jan 07 13:54
How can you measure pitch speed by counting frames?

Jan 02 17:43
Run Value with runners on base v bases empty

Dec 28 13:56
Run Values of Pitches: Final v Intermediate

Dec 27 13:56
Hall of Fame voting structure problem

Dec 23 19:24
What does Andre Pallante know about the platoon disadvantage that everyone else does not?

Dec 21 14:02
Run Values by Movement and Arm Angles

Dec 18 20:45
Should a batter have a steeper or flatter swing (part 2)?

Dec 18 16:19
Art and Science of WAR: Deriving the zero-baseline, historically

THREADS

February 16, 2025
Bat-Tracking: Timing Early/Late

February 16, 2025
Bat-Tracking: Timing Over/Under

February 16, 2025
Bat-Tracking: Timing along the bat

February 12, 2025
Reality of Runs and Wins, through the lens of the 1960 Pirates-Yankees World Series

February 05, 2025
Batting Average as a proxy for fun!  Batting Average as a proxy for fun?

February 03, 2025
Valuation implication of straying from the .300 win% replacement level

January 19, 2025
Breaking into the Sports Industry WITHOUT learning to code

January 14, 2025
Aging Curve - Swing Speed

December 31, 2024
Run value of a called ball, part 2

December 31, 2024
Run value of a called ball, part 1

December 30, 2024
How can you measure pitch speed by counting frames?

December 27, 2024
De-De-Leveraging Run Values

December 26, 2024
Run Value with runners on base v bases empty

December 26, 2024
Run Values of Pitches: Final v Intermediate

December 26, 2024
Hall of Fame voting structure problem