sqltableau

MLB's Launch Angle

MLB data has never been better, easier to access, and more useful in explaining the game. One such metric, launch angle, has recently been taking over the league.

GithubTableauKaggle
MLB's Launch Angle

Introduction

MLB is in the midst of a hitting revolution. Gone are the days of slap hitting shortstops who beat out weakly hit ground balls for base hits. Instead, the game has dramatized towards sluggers who crush the ball as far as humanly possible. If you've watched any baseball though, you'll inherently know that hitting the ball hard isn't the end-all-be-all. A ball that's smoked into the ground is way less valuable than a ball that's smoked into the air. The former is a loud ground out to third. The latter is a home run.

The angle at which a ball is hit into the field of play is what we call a player's launch angle, and it can be key in understanding a player’s underlying offensive abilities, potential, and risk.

Goal

This project will investigate launch angle and its effect on offensive performance within the MLB.

Data Collection

Baseball Savant is a treasure trove of baseball data, especially public batted ball data. I gathered the following information from the site:

  • last_name
  • first_name
  • player_id
  • year
  • xba: expected batting average
  • xslg: expected slugging percentage
  • woba: weighted on base average
  • xwoba: expected weighted on base average
  • xiso: expected isolated power
  • wobacon: weighted on base average on contact
  • xwobacon: expected weighted on base average on contact
  • exit_velocity
  • launch_angle
  • barrel_batted_rate

If you are unfamiliar with baseball statistics, no problem! We'll mainly be looking at exit velocity (how hard the ball leaves a player's bat), launch angle (the angle at which the ball leaves a player's bat), and xwOBA (a predictive measure of offensive performance). I decided to utilize xwOBA as it is a predictive, rather than observational, statistic. Batters have control over how hard they hit a baseball and their launch angle but they aren’t in control over what happens once the batted ball is hit into play. xwOBA strips away what batter's can't control (good/bad defensive, luck, etc.) and only focuses on what a batter can truly account for allowing us to have a greater understanding and predictor of future offensive success.

Thankfully, this dataset is impeccable and won’t require any cleaning. Let’s proceed with the analysis!

Data Analysis

Let's first take a look at the players with the highest average exit velocities. I’m making a basic assumption that the harder a player hits the ball the better, but we can double check that here.

1SELECT
2	last_name, 
3	first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg 
7FROM 
8	stats
9ORDER BY 
10	exit_velocity_avg DESC, xwoba
11LIMIT 20;
Last NameFirst NameYearAverage Exit VelocityAverage Launch Angle
StantonGiancarlo201596.115.7
JudgeAaron20199611.2
Tatis Jr.Fernando202095.98.7
JudgeAaron202295.915
JudgeAaron202195.811.6
SanoMiguel202095.220.2
AlvarezYordan202295.212.3
StantonGiancarlo202195.110.3
Guerrero Jr.Vladimir202195.19.4
StantonGiancarlo20229510.8
JudgeAaron20179515.8
GalloJoey201994.822.4
JudgeAaron201894.712.4
Cruz Jr.Nelson201694.611.2
SanoMiguel201994.415.9
GalloJoey201894.321.9
LongoriaEvan202194.115.5
SanoMiguel201594.116.3
DonaldsonJosh202194.114.6
YelichChristian2020947.1

Scroll to view the full table.

It’s great to see an assumption made true. This is a list of the most powerful and best hitters in the league. I mean, 2022 Aaron Judge comes fourth on this list and he just had one of the best offensive seasons in MLB history. Now that we have this understanding under our belt (hit the ball hard = good) we can begin to dive into launch angle’s effect on offensive performance.

To begin with, average launch angles within MLB adheres to a normal distribution. Not many have very low average launch angles and not many have very high average launch angles.

Distribution of average launch angle among MLB players

Now let's see how a player's launch angle affects their xwOBA.

1SELECT
2	launch_angle_avg, 
3    AVG(xwoba)
4FROM 
5	stats
6GROUP BY 
7	launch_angle_avg
8ORDER BY 
9	AVG(xwoba) DESC;
Average Launch AngleAverage xwOBA
23.10.428
24.60.395
2.70.388
220.385
21.20.383
230.3765
23.20.3635
22.40.35766666666666663
17.20.3526
22.60.34933333333333333
18.60.349
5.70.347
16.60.34614285714285714
4.40.346
22.20.3446
29.70.344
14.40.3439444444444444
22.50.3426666666666667
18.50.3421111111111111
20.10.34199999999999997
17.90.3416666666666666
15.70.34137499999999993
13.30.34011764705882347
15.90.3394285714285714
18.10.33809999999999996
160.33809090909090905
18.20.33741176470588236
20.80.33725000000000005
19.50.33725
240.337
13.40.3364761904761905
18.40.33575
21.40.3355
21.70.33516666666666667
180.3348
18.80.33475
21.60.33466666666666667
16.30.33443750000000005
18.70.33414285714285713
6.50.33375
15.50.3332
16.80.3332
19.30.333
17.50.333
190.33269230769230773
16.50.331875
13.80.3317272727272727
20.50.3316
14.50.3312105263157895

Scroll to view the full table.

Note, this is just a small sample of the full result-set. To view the full result-set, please visit my GitHub.

While we can see that the highest xwOBAs tend to generally come with a launch angle in the high teens to twenties, this table isn’t too informative. I'll make a quick plot to see if their relationship can be made any clearer.

Relationship between xwOBA and launch angle

Unfortunately, their relationship is still not entirely clear, or if there even is one! I do, however, think that the data is maybe a little to granular to grasp their connectivity. Let's break the launch angles into buckets of 5 degrees.

1SELECT 
2	AVG(xwoba),
3	CASE
4		WHEN launch_angle_avg <= 0 THEN '0 and below'
5		WHEN launch_angle_avg <= 5 THEN '0.001 - 5'
6		WHEN launch_angle_avg <= 10 THEN '5.001 - 10'
7		WHEN launch_angle_avg <= 15 THEN '10.001 - 15'
8		WHEN launch_angle_avg <= 20 THEN '15.001 - 20'
9		WHEN launch_angle_avg <= 25 THEN '20.001 - 25'
10		ELSE '25.001 - 30'
11		END as 'launch_angle'
12FROM 
13	stats
14GROUP BY 
15	CASE 
16	WHEN launch_angle_avg <= 0 THEN '0 and below'
17    WHEN launch_angle_avg <= 5 THEN '0.001 - 5'
18    WHEN launch_angle_avg <= 10 THEN '5.001 - 10'
19    WHEN launch_angle_avg <= 15 THEN '10.001 - 15'
20    WHEN launch_angle_avg <= 20 THEN '15.001 - 20'
21    WHEN launch_angle_avg <= 25 THEN '20.001 - 25'
22    ELSE '25.001 - 30'
23    END
24ORDER BY 
25	launch_angle_avg;
Average xwOBALaunch Angle
0.27914285714285720 and below
0.30580689655172410.001 - 5
0.312238618524332775.001 - 10
0.321282242990654610.001 - 15
0.325847692307692415.001 - 20
0.3253431372549020520.001 - 25
0.3136725.001 - 30

Scroll to view the full table.

Launch angle's relationship to xwOBA

That’s much better. As a player's average launch angle increases so does their xwOBA. These increases in xwOBA may not seem like much, but a .200 point difference is the gap between Jon Berti (0.306 xwOBA), certified role-player, and Xander Bogaerts (.323 xwOBA), four time All-Star and five time Silver Slugger.

We do see, however, that increasing launch angle too much can have negative effects on xwOBA. Intuitively this makes sense, though. As launch angles continue to increase, a player will simply pop the ball straight up, which is an easy out.

Let’s find the players with average launch angles greater than or equal to 20°.

1SELECT 
2	last_name, 
3	first_name, 
4	year, 
5	launch_angle_avg, 
6    xwoba
7FROM 
8	stats
9WHERE 
10	launch_angle_avg >= 20
11ORDER BY 
12	xwoba DESC
13LIMIT 25;
Last NameFirst NameYearAverage Launch AnglexwOBA
TroutMike201922.20.46
TroutMike202023.10.428
GalloJoey201922.40.397
TroutMike202224.60.395
CarpenterMatt201821.60.391
BryantKris201620.80.386
BeltBrandon2017220.385
BeltBrandon201621.20.383
CarpenterMatt201722.60.381
GalloJoey2017230.379
HoskinsRhys202121.70.378
BeltBrandon2021230.374
RamirezJose202023.20.373
GalloJoey201821.90.371
JansenDanny202222.20.368
EncarnacionEdwin201922.50.367
PolancoJorge202221.70.358
BuxtonByron202221.40.358
FrazierTodd201720.30.355
ZuninoMike202123.20.354
GalloJoey202122.70.354
SantanderAnthony202221.40.352
BeltBrandon201823.30.351
HoskinsRhys201822.60.349
BruceJay201921.60.346

Scroll to view the full table.

Players with average launch angles greater than 20 degrees

It's always a good thing to see a list populated with Trout! Certainly not bad when Gallo and Jose Ramirez are included as well when trying to find the best hitters in the MLB.

What about on the other end of the spectrum?

1SELECT 
2	last_name, 
3    first_name, 
4    year, 
5    launch_angle_avg, 
6    xwoba
7FROM 
8	stats
9WHERE 
10	launch_angle_avg <= 5
11ORDER BY 
12	xwoba
13LIMIT 25;
Last NameFirst NameYearAverage Launch AnglexwOBA
Strange-GordonDee20163.70.228
ArciaOrlando201840.238
RomineAndrew20153.60.239
LopezNicky20193.10.242
VillarJonathan2022-0.70.247
NeuseSheldon20221.50.254
SuzukiIchiro20153.30.256
SeguraJean20154.30.258
PacheCristian20223.80.259
CastilloRusney20150.90.259
VillarJonathan20201.60.261
SimmonsAndrelton20213.90.261
SuzukiIchiro201750.262
GutierrezKelvin20212.30.263
FuldSam20153.20.263
SlaterAustin20182.60.264
DesmondIan201700.265
VillarJonathan20173.10.266
HaseleyAdam201950.269
CelestinoGilberto2022-1.90.27
IglesiasJose20154.50.272
LopezNicky20224.90.273
WoltersTony20184.90.273
TapiaRaimel2021-4.40.273
Strange-GordonDee20172.20.274

Scroll to view the full table.

Players with launch angles less than 5 degrees

Not so great. Dee Strange-Gordon was frequently shuffled between the majors and AAA, Orlando Arcia has had trouble sticking in the pros, and to be quite frank, I've never heard of Andrew Romine đŸ€·â€â™‚â€

Let's go back to looking at our players who hit the ball really hard over the years of data we have (2015-2022).

1SELECT 
2	last_name, 
3    first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg
7FROM 
8	stats
9ORDER BY 
10	exit_velocity_avg DESC, xwoba
11LIMIT 50;
Last NameFirst NameYearAverage Exit VelocityAverage Launch Angle
StantonGiancarlo201596.115.7
JudgeAaron20199611.2
Tatis Jr.Fernando202095.98.7
JudgeAaron202295.915
JudgeAaron202195.811.6
SanoMiguel202095.220.2
AlvarezYordan202295.212.3
StantonGiancarlo202195.110.3
Guerrero Jr.Vladimir202195.19.4
StantonGiancarlo20229510.8
JudgeAaron20179515.8
GalloJoey201994.822.4
JudgeAaron201894.712.4
Cruz Jr.Nelson201694.611.2
SanoMiguel201994.415.9
GalloJoey201894.321.9
LongoriaEvan202194.115.5
SanoMiguel201594.116.3
DonaldsonJosh202194.114.6
YelichChristian2020947.1
StantonGiancarlo201693.913.9
Cruz Jr.Nelson201893.912.8
Tatis Jr.Fernando202193.913.8
Acuna Jr.Ronald202193.818.2
CabreraMiguel201593.812.2
StantonGiancarlo201893.711.7
Cruz Jr.Nelson201993.713.1
TroutMike202093.723.1
OhtaniShohei202193.616.6
CabreraMiguel201693.612.3
BroxtonKeon201693.59.6
BoteDavid201893.53.7
SchwarberKyle201993.515.5
SanoMiguel202193.417.6
FlowersTyler201693.312.8
OlsonMatt201893.318.1
ReyesFranmil201993.39.5
SchwarberKyle202293.319.2
GalloJoey201793.323
HernandezTeoscar202093.315.3
YelichChristian201993.311.3
PedersonJoc202293.214.8
CabreraMiguel202093.212.1
AlvarezYordan202193.214.1
Cruz Jr.Nelson201793.212.4
OrtizDavid201693.216.9
SeagerCorey202093.211.9
ChapmanMatt201893.114.9
HollidayMatt201693.18.6
MoncadaYoan201993.112.3

Scroll to view the full table.

Even though we have the stars of the MLB here, we also have some surprising names like David Bote and Keon Broxton coming in the top 35 average exit velocities seasons since 2015. What gives?

1SELECT 
2	last_name,
3    first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg, 
7    xwoba
8FROM 
9	stats
10WHERE 
11	last_name = 'Broxton' 
12ORDER BY 
13	exit_velocity_avg DESC;
Last NameFirst NameYearAverage Exit VelocityAverage Launch AnglexwOBA
BroxtonKeon201693.59.60.326
BroxtonKeon201988.110.30.233
BroxtonKeon201787.210.30.308

Scroll to view the full table.

Despite Broxton having one of the best seasons in professional baseball since 2015 in terms of exit velocity, he had a poor xwOBA. Why? Take a look at the launch angle for 2016. Broxton's 9.6° is far from optimal and an important lesson. Premium exit velocity cannot make up for poor launch angles. Both parts of the equation are needed to be an elite hitter.

Let's take a look at what Broxton could have accomplished with the same average exit velocity but with a launch angle 5°-10° higher.

1SELECT 
2	AVG(xwoba)
3FROM 
4	stats
5WHERE 
6	(exit_velocity_avg BETWEEN 93 AND 94) AND 
7	(launch_angle_avg >= 14.6 AND launch_angle_avg <=19.6);
AVG(xwOBA)
.387

Scroll to view the full table.

Wow, that’s a huge difference compared to his observed .326 xwOBA, but let's put that xwOBA in context with some player comps.

1SELECT 
2	last_name,
3	first_name,
4    year,
5	exit_velocity_avg,
6    launch_angle_avg,
7	xwoba
8FROM 
9	stats
10WHERE 
11	(exit_velocity_avg BETWEEN 93 AND 94) AND 
12	(launch_angle_avg >= 14.6 AND launch_angle_avg <=19.6)
13ORDER BY 
14	xwoba DESC;
Last NameFirst NameYearAverage Exit VelocityAverage Launch AnglexwOBA
OzunaMarcell20209316.40.436
OrtizDavid201693.216.90.43
Acuna Jr.Ronald202193.818.20.429
OrtizDavid20159315.70.42
OhtaniShohei202193.616.60.411
HernandezTeoscar202093.315.30.401
O'NeillTyler20219317.80.392
SchwarberKyle202293.319.20.375
SchwarberKyle201993.515.50.375
PerezSalvador20219315.90.374
PedersonJoc202293.214.80.367
OlsonMatt201893.318.10.357
ChapmanMatt201893.114.90.338
SanoMiguel202193.417.60.322

Scroll to view the full table.

Jeez, with an improved launch angle but the same average exit velocity, we could have expected him to be comparable to Marcell Ozuna, David Ortiz, Ronald Acuna Jr., and Shohei Ohtani! For those keeping score at home that's a combined 17 All Star appearences, 2 MVP awards, and 12 Silver Slugger awards. Keon Broxton was absolutely mashing the ball in 2016, he just didn’t have an optimal launch angle to capitalize.

Broxton is a great example of how important a player’s launch angle can be. It alone won’t drive offensive performance, but it’s difficult to be a truly great hitter without an optimal launch angle. If he were still playing, he would be a prime candidate for someone who would benefit from a re-tooled swing focused on adding extra lift.

Let’s see if we can find other players that fit this mold – above average exit velocities but sub-optimal launch angles. First we'll need to find what an above average exit velocity is.

1SELECT 
2	AVG(exit_velocity_avg)
3FROM 
4	stats
5ORDER BY
6	year DESC;

Since 2015, the average exit velocity in MLB has been 88.52mph.

Now let's find the average launch angle.

1SELECT 
2	AVG(launch_angle_avg)
3FROM 
4	stats
5ORDER BY 
6	year DESC;

The average launch angle in MLB is 12.41° degrees.

Great, now we have our criteria for a player who could potentially benefit from a re-worked swing – an average exit velocity of 89mph or higher and an average launch angle of 12° or lower.

1SELECT
2	last_name, 
3    first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg
7FROM 
8	stats
9WHERE 
10	launch_angle_avg < 12 AND exit_velocity_avg > 89
11ORDER BY 
12	launch_angle_avg, exit_velocity_avg DESC
13LIMIT 30;
Last NameFirst NameYearAverage Exit VelocityAverage Launch Angle
VillarJonathan202289.6-0.7
RamosWilson201990-0.1
YelichChristian201591.70.1
DesmondIan201890.10.1
MorseMichael201590.40.4
Kendrick IIIHowie201590.31.2
NeuseSheldon202289.11.5
Kendrick IIIHowie201690.51.7
AlfaroJorge202190.91.8
EscobarYunel201689.31.9
HosmerEric201990.82.1
PenceHunter201590.12.1
FreeseDavid2016912.2
LeMahieuDJ202091.32.3
GutierrezKelvin202189.92.3
ButlerJoey201590.12.4
HayesKe'Bryan202190.22.6
YelichChristian201692.62.7
YelichChristian2021912.8
GreeneRiley202289.52.8
LeMahieuDJ201590.52.9
LeMahieuDJ202289.23
PerezRoberto201590.63.3
HosmerEric202190.53.3
DavisJ.D.202090.13.3
LeMahieuDJ201789.33.3
YelichChristian202291.53.6
BoteDavid201893.53.7
MauerJoe201689.93.8
PacheCristian202289.43.8

Scroll to view the full table.

The list for the most part is pretty uninspiring in terms of offensive weapons, but that's the point! These guys hit the ball hard but into the ground too often to be noticeably productive. #11 on this list is Eric Hosmer, the poster child for someone who hits the ball hard but kills a lot of worms in the process. Similarly, at #3 we have the 2015, pre-MVP version of Christian Yelich. Let's take a look at his career trajectory.

1SELECT 
2	last_name, 
3    first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg, 
7    xwoba
8FROM 
9	stats
10WHERE 
11	last_name = 'Yelich'
12ORDER BY 
13	year;
Last NameFirst NameYearAverage Exit VelocityAverage Launch AnglexwOBA
YelichChristian201591.70.10.358
YelichChristian201692.62.70.388
YelichChristian201790.64.60.363
YelichChristian201892.650.416
YelichChristian201993.311.30.429
YelichChristian2020947.10.378
YelichChristian2021912.80.337
YelichChristian202291.53.60.339

Scroll to view the full table.

His launch angle increased from 0.1° to 11.3° in 2019. His xwOBA follows a similar trend, peaking in 2019 at .429 all the while his average exit velocity remained relatively stable.

Christian Yelich's career through launch angle and xwOBA

By looking at this data in 2015, and knowing of an attempted swing change, we may have been able to forecast a breakout. His premium exit velocity paired with a rise in launch angle were huge reasons why he won the NL MVP in 2018 and came runner-up in 2019. His launch angle has since come down, and he has been a consistent disappointment since. Let's keep looking for these 'breakout candidates' but in more recent seasons.

1SELECT 
2	last_name, 
3	first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg
7FROM 
8	stats
9WHERE 
10	(launch_angle_avg < 12 AND exit_velocity_avg > 89) 
11    AND (year = 2020)
12ORDER BY 
13	exit_velocity_avg DESC
14LIMIT 20;
Last NameFirst NameYearAverage Exit VelocityAverage Launch Angle
Tatis Jr.Fernando202095.98.7
YelichChristian2020947.1
SeagerCorey202093.211.9
DeversRafael20209310.6
AbreuJose202092.910.9
SchwarberKyle202092.88.8
Guerrero Jr.Vladimir202092.54.6
ReyesFranmil202092.411.2
JimenezEloy202092.45.7
MoranColin202091.98.3
LongoriaEvan202091.710.7
BellJosh202091.75.9
Cruz Jr.Nelson202091.69.4
LeMahieuDJ202091.32.3
HappIan202091.19
Gurriel Jr.Lourdes202090.810.5
TurnerTrea202090.59.5
WalkerChristian202090.411.5
DavisJ.D.202090.13.3
ReyesVictor20209010.7

Scroll to view the full table.

Vlad Guerrero Jr. pops out. His average exit velocity is right up there with Fernando Tatis, Yelich, and Kyle Schwarber but his average launch angle is nearly half of theirs. Unlock that power Vladdy!

1SELECT 
2	last_name, 
3    first_name, 
4    year, 
5    exit_velocity_avg, 
6    launch_angle_avg, 
7    xwoba
8FROM 
9	stats
10WHERE 
11	last_name = 'Guerrero Jr.'
12ORDER BY 
13	year;
Last NameFirst NameYearAverage Exit VelocityAverage Launch AnglexwOBA
Guerrero Jr.Vladimir201989.46.70.329
Guerrero Jr.Vladimir202092.54.60.333
Guerrero Jr.Vladimir202195.19.40.417
Guerrero Jr.Vladimir202292.84.30.348

Scroll to view the full table.

And he did! Well at least for 2021 when he challenged Shohei Ohtain for AL MVP. And then it fell back again in 2022 wherein his xwOBA crashed as well.

Vlad Guerrero Jr.'s career through launch angle and xwOBA

I wonder what Vladdy we’ll get in 2023!

Conclusion

As we can see, hitting the ball hard is a good indicator of strong offensive performance, but it is not enough when looked at alone. When paired with a player’s launch angle, fans can get a better insight into a player’s true abilities, the stability/instability of their performances, or even who could potentially be a star if they simply altered their swing a little. So who’s your favorite player in the MLB? And do they have an optimal launch angle?

Learning Take-Aways

Clean data is everything. I was extremely fortunate when embarking on this project because Baseball Savant has meticulously curated data for the public to use. The beauty of not having to fix/deal with any issues in the data is not lost on me, and it is a good benchmark to try to acheive in future endevours when cleaning data.

Bucketing granular data into meaningful chunks. This is a super useful skill to have. By creating buckets for the average launch angles, I was able to come to meaningful conclusions from the data that I would not have been able to see otherwise. I'll absolutely be making use of this in the future.

There's always more to investigate. Fangraphs is another excellent source for pubic baseball data, and in the future I would love to combine their data with what I gathered from Baseball Savant. By using joins, I could get a more holistic view of launch angles' effect on offensive performance by looking at even more metrics like wRC+, BABIP, K%, and even plate disciple. The ideas and opportunities are endless with enough data!

© 2025 Kyle Zweng. Built by Taylor McPherson.