Joe Biagini’s xwOBA and RISP Spread
Would you believe me if I told you that Joe Biagini did a better job minimizing contact quality last year than Marcus Stroman? I didn’t believe it at first, but it turns out he had slightly better contact quality control on the whole. See the arranged summary table below: (min 500 pitches, showing data for batted balls)
player_name | xwOBA | |
1 | Danny Barnes | 0.306589888 |
2 | Aaron Loup | 0.307355422 |
3 | Roberto Osuna | 0.326513158 |
4 | Joe Biagini | 0.334128342 |
5 | Ryan Tepera | 0.33518593 |
6 | J.A. Happ | 0.339169336 |
7 | Dominic Leone | 0.340634286 |
8 | Marco Estrada | 0.341392086 |
9 | Marcus Stroman | 0.355793677 |
10 | Joe Smith | 0.368621951 |
11 | Francisco Liriano | 0.371231373 |
12 | Aaron Sanchez | 0.37646281 |
13 | Mike Bolsinger | 0.378370079 |
xwOBA in this case is a statcast proxy for contact quality, based on launch speed and angle. I’d go on a limb to say it essentially imputes an expected number of wOBA based on the quality of how the hitter squared up the ball, irrespective of what happens after that. Last year, the average xwOBA for a Blue Jays pitcher included in this sample above was 0.344.
Interesting. Biagini’s contact quality was fourth best on the team, but his ERA was third highest among the group. The two higher ERAs were Liariano and Bolsinger (also 11th and 13th highest expected wOBA). This is an example of how situational pitching can ruin you if you let it. Let’s factor in runners in scoring position and compare the same analysis. Below is the same table, except now showing one for runner in scoring position (RISP), 0 for not:
player_name | RISP | xwOBA | |
1 | Joe Biagini | 0 | 0.299694737 |
2 | Aaron Loup | 0 | 0.302101695 |
3 | Roberto Osuna | 0 | 0.309736842 |
4 | Ryan Tepera | 0 | 0.325156463 |
5 | Danny Barnes | 0 | 0.339150794 |
6 | J.A. Happ | 0 | 0.350223214 |
7 | Marco Estrada | 0 | 0.350911628 |
8 | Marcus Stroman | 0 | 0.352419087 |
9 | Francisco Liriano | 0 | 0.363611702 |
10 | Dominic Leone | 0 | 0.364512605 |
11 | Aaron Sanchez | 0 | 0.369082353 |
12 | Mike Bolsinger | 0 | 0.372388235 |
13 | Joe Smith | 0 | 0.395754386 |
14 | Danny Barnes | 1 | 0.227692308 |
15 | Dominic Leone | 1 | 0.289892857 |
16 | J.A. Happ | 1 | 0.30239604 |
17 | Joe Smith | 1 | 0.30676 |
18 | Marco Estrada | 1 | 0.308904762 |
19 | Aaron Loup | 1 | 0.320270833 |
20 | Ryan Tepera | 1 | 0.363538462 |
21 | Marcus Stroman | 1 | 0.369462185 |
22 | Roberto Osuna | 1 | 0.376842105 |
23 | Mike Bolsinger | 1 | 0.39047619 |
24 | Francisco Liriano | 1 | 0.39261194 |
25 | Aaron Sanchez | 1 | 0.393888889 |
26 | Joe Biagini | 1 | 0.444393258 |
Look at the two Biaginis! At the very top and very bottom. Without runners in scoring position, Biagini was the best pitcher on the roster in terms of limiting contact quality. Put a guy in scoring position, and he starts getting lit up. Here’s that same table, but sorted by the differences.
player_name | RISP.x | xwOBA.x | RISP.y | xwOBA.y | diff | |
1 | Danny Barnes | 0 | 0.339150794 | 1 | 0.227692308 | -0.111458486 |
2 | Joe Smith | 0 | 0.395754386 | 1 | 0.30676 | -0.088994386 |
3 | Dominic Leone | 0 | 0.364512605 | 1 | 0.289892857 | -0.074619748 |
4 | J.A. Happ | 0 | 0.350223214 | 1 | 0.30239604 | -0.047827175 |
5 | Marco Estrada | 0 | 0.350911628 | 1 | 0.308904762 | -0.042006866 |
6 | Marcus Stroman | 0 | 0.352419087 | 1 | 0.369462185 | 0.017043098 |
7 | Mike Bolsinger | 0 | 0.372388235 | 1 | 0.39047619 | 0.018087955 |
8 | Aaron Loup | 0 | 0.302101695 | 1 | 0.320270833 | 0.018169138 |
9 | Aaron Sanchez | 0 | 0.369082353 | 1 | 0.393888889 | 0.024806536 |
10 | Francisco Liriano | 0 | 0.363611702 | 1 | 0.39261194 | 0.029000238 |
11 | Ryan Tepera | 0 | 0.325156463 | 1 | 0.363538462 | 0.038381999 |
12 | Roberto Osuna | 0 | 0.309736842 | 1 | 0.376842105 | 0.067105263 |
13 | Joe Biagini | 0 | 0.299694737 | 1 | 0.444393258 | 0.144698522 |
Biagini was not the same person on the mound when threatened with a runner past first. To offer some perspective, that very difference is larger than that between Mike Trout (1st @ 0.437) and Kevin Pillar (130th @ 0.302). You must wonder what some possible explanations of this could be .Sign stealing? The yips? Pitch selection? Let’s look at the 2016 differences table and see if this affected him at all. (min 500 pitches)
player_name | RISP.x | xwOBA.x | RISP.y | xwOBA.y | diff | |
1 | Jason Grilli | 0 | 0.429316 | 1 | 0.229538 | -0.19978 |
2 | Drew Storen | 0 | 0.475368 | 1 | 0.320645 | -0.15472 |
3 | Joe Biagini | 0 | 0.345207 | 1 | 0.270319 | -0.07489 |
4 | R.A. Dickey | 0 | 0.39697 | 1 | 0.337583 | -0.05939 |
5 | Aaron Sanchez | 0 | 0.366077 | 1 | 0.328248 | -0.03783 |
6 | Roberto Osuna | 0 | 0.386113 | 1 | 0.350638 | -0.03547 |
7 | Brett Cecil | 0 | 0.411931 | 1 | 0.379067 | -0.03286 |
8 | Marcus Stroman | 0 | 0.362472 | 1 | 0.334 | -0.02847 |
9 | Francisco Liriano | 0 | 0.351901 | 1 | 0.369333 | 0.017432 |
10 | J.A. Happ | 0 | 0.363058 | 1 | 0.386705 | 0.023646 |
11 | Marco Estrada | 0 | 0.335267 | 1 | 0.359102 | 0.023835 |
12 | Jesse Chavez | 0 | 0.340885 | 1 | 0.48161 | 0.140725 |
Runners on second and or third in 2016, Biagini pitched to better contact quality. He was coming out of the bullpen, but it still leaves our question of consistency from last year unresolved. It wasn’t Biagini’s pitch selection either. Based on the table below, his distribution of pitches with and without RISP last year was more or less the same. It’s not as though he wasn’t throwing the breaking ball with RISP.
pitch_type | RISP | n | Frequency | |
1 | CH | 0 | 207 | 0.146393 |
2 | CU | 0 | 278 | 0.196605 |
3 | FC | 0 | 145 | 0.102546 |
4 | FF | 0 | 784 | 0.554455 |
5 | CH | 1 | 80 | 0.154739 |
6 | CU | 1 | 138 | 0.266925 |
7 | FC | 1 | 39 | 0.075435 |
8 | FF | 1 | 260 | 0.502901 |
I don’t know what the real explanation for this is. It likely could just be chance, but I’d like to think there’s a more probable explanation for it. I say the yips! Pitchers aren’t robots, some pitchers must get phased more than others by the pressure of potential runs scoring. But last year on the whole Toronto pitching allowed very similar contact quality regardless of having runners in scoring position.
RISP | xwOBA | |
1 | 0 | 0.343178 |
2 | 1 | 0.345718 |
P.S. first time posting! let me know what you think. had a lot of fun doing this.