Baserunning - A Deeper Dive

Beat articles, power rankings, statistical analysis, etc. goes here.
User avatar
RonCo
League Director
Posts: 13070
Joined: Sat Nov 14, 2015 10:48 pm
Has thanked: 680 times
Been thanked: 575 times

Baserunning - A Deeper Dive

Post by RonCo » Fri Nov 08, 2019 3:12 pm

Ok…this one is going to be a little intense, but I wanted to capture the whole essence of what I’m doing so anyone who actually cares can follow along. If you just want the results, scan down to the “RESULTS” header…anyway…

A couple weeks ago I launched a first look into base running on balls in play in OOTP—or at least in the BBA—as far as outfield assists (and runners thrown out) are concerned. At the time, I said I was looking more deeply into the game logs, but then of course things went haywire and I put it aside. Now I’m back, and I’ve been able to expand the script I’m using considerably.


PROCESS NEEP:

Bottom line, I’m now tracking:
  • Runners thrown out by the outfield
  • Runners who advance extra bases on hits
  • Runners thrown out advancing extra bases
  • Runners who advance on a tag up
  • Runners thrown out tagging up
In each case, I’m assigning the base they were attempting to take and whether it’s an outfield assist (OFA=X) or Extra Base (EB=X).

For the coders around here, my script is in perl, and works by parsing each plate appearance in the game logs. Here’s the segment of code I’m using for the data presented here:

Code: Select all

# Check for baserunning movement

  $OFA = ""; $TagSafe = ""; $TagOut = ""; $EB = ""; 
  if($string =~ /OUT at second base trying to stretch hit/) { $OFA = 2; }
  if($string =~ /SAFE at second base trying to stretch hit/) { $EB = 2; }
  if(($string =~ /Runner from 1st tags up/) && ($string =~ /OUT/)) { $OFA = 2; $TagOut = 2;}
  if(($string =~ /Runner from 1st tags up/) && ($string =~ /SAFE/)) { $EB = 2; $TagSafe = 2;}

  if(($string =~ /Runner from 2nd tries for 3rd/) && ($string =~ /OUT/)) { $OFA = 3;}
  if(($string =~ /Runner from 2nd tries for 3rd/) && ($string =~ /SAFE/)) { $EB = 3; }
  if(($string =~ /Runner from 2nd tags up/) && ($string =~ /OUT/)) { $OFA = 3; $TagOut = 3;}
  if(($string =~ /Runner from 2nd tags up/) && ($string =~ /SAFE/)) { $EB = 3; $TagSafe = 3;}

  if(($string =~ /Runner from 3rd tries for Home/) && ($string =~ /OUT/)) { $OFA = 4; }
  if(($string =~ /Runner from 3rd tries for Home/) && ($string =~ /SAFE/)) { $EB = 4; }
  if(($string =~ /Runner from 3rd tries for Home, SAFE/) && ($string =~ /trailing runner, OUT at third/)) { $EB = 4; $OFA = 3; }
  if(($string =~ /Runner from 3rd tries for Home, SAFE/) && ($string =~ /trailing runner, SAFE at third/)) { $EB = 4;}
  if(($string =~ /Runner from 3rd tags up/) && ($string =~ /OUT/)) { $OFA = 4; $TagOut = 4;}
  if(($string =~ /Runner from 3rd tags up/) && ($string =~ /SCORES/)) { $EB = 4; $TagSafe = 4; }

  if($string =~ /OUT at second base trying to stretch/) { $OFA = 2; }
  if($string =~ /OUT at third base trying to stretch/) { $OFA = 3; }
  if($string =~ /OUT at home trying to stretch/) { $OFA = 4; }
After grabbing all the data, I’ve then had to do some considerable manually compilation to get something that’s even partially readable. If this gets to making sense, I suppose I should write a little report script to make it more institutionalized.

Regardless, I think the script is now capturing all baserunning activity except for runners who stretch hits into extra base hits. The issue at present is that I think the logs simply call a single stretched to a double as a DOUBLE and leave it at that—in other words, unless I can find a bit of a needle in a haystack in the game logs, I can’t differentiate your garden variety double from a stretched double.

All that said, there is always a chance that I'm missing something in my script.


RESULTS

I’ll attach a spreadsheet here with this data compiled, so start by opening that document.

2040-Base-Running-July.xlsx
(18.07 KiB) Downloaded 17 times

What follows is a guide on how to read the information therein:
  • The information is split into three segments: FIELDING DATA (events that happen when the team in question is pitching/fielding), HITTING DATA (events that happen when the team in question is batting), and a final calculation of total bases each team has gained (or lost) over the course of games through July 20 of this year.
  • In both fielding and hitting segments, the left side of the table are bases runners have successfully attained and the middle/right section are runners that have been thrown out.
  • For both fielding and hitting sections, I then calculate the total advancements that have been attempted, the number of bases involved (Bases- for defense, and Bases+ for offense), and the % of runners thrown out in each case).
  • The bottom row is the league total/average.
  • Finally, the last column is a simple summation of total bases that each team has either gained or lost on the bases this year.
EXAMPLE:

Looking at my own Yellow Springs team, I see that when we’re in the field, we’ve thrown out 17 runners while allowing 109 to advance, meaning we’ve thrown out 13.5% of runners—which is below the 17.6% league average. I also note that we’ve had only 126 advancements attempted against us, which appears to be a little lower than average. I note we’ve got some decent arms in the field, and that the pitching staff has been pretty good, so part of that almost certainly that we allow fewer base runners to begin with.

Similarly, while hitting, we’ve advanced 134 runners while having 27 thrown out (for a total of 107 extra bases on 161 attempts…perhaps we’re a little high on the aggression scale? Or maybe we just have more guys on base, so we get more attempts?). Regardless, this is a 16.77% RTO%, a little better than league average.

When I add up all our running (defense and offense), I see YS9 has gained 15 more bases on the base paths than we’ve lost.


WINNERS AND LOSERS

I’m tempted to do something like weight taking home more than taking third, and third more than second, but to be honest I’m not smart enough to know how to do that very well. So all I’m doing is adding bases. Feel free to do something better. [grin]

Regardless, this information says
  • Nashville’s Bluebirds are the best team in the league when it comes to extra bases, with Las Vegas right behind.
  • Charlotte’s -69 bases is nearly twice as many as the next worst club (Madison’s -37).
  • Offensively, New Orleans appears to be the “safest” runners, getting tossed out on the bases only 9.9% of the time they try to advance. Their 118 bases taken is only a little “conservative,” so I’d suggest there’s some skill going on there.
  • On the opposite side, Mexico City runners have been thrown out 26% of the time they’ve been trying to run. They’ve lost more runners at home than any other BBA team.
  • Defensively, Des Moines has caught only 9.7% of runners attempting to advance, while Boise (25.47%) and San Fernando (25%) lead the pack at cutting runners who try to advance down.

More Thoughts

I think this is really interesting (of course). There are still a LOT of moving parts that go into these numbers, though. Too many to make any great/grand statements about how anyone should adjust stuff. Here are a few take-aways I’m thinking about, though:
  • With RTO% varying from roughly 9% to 25%, and with total bases achieved ranging from -69 to +57, the baserunning skills and aggression settings of a team, and their counter defense mechanisms, do seem to matter to at least some degree--which makes sense, but it's nice to actually see.
  • Extend the 126 base differential from top to bottom (again, -69 to +57) out to the end of the year, and it becomes something around 200 extra bases from best to worst. That’s gotta be worth some runs, and therefore some wins. Anyone who wants to take a shot at quantifying that is free to do so.
  • Like catcher framing, I don’t think any of these data are in OOTP’s WAR, but I admit I’m completely in the dark. If I’m right, you can look at a player’s baserunning ratings and make tiny adjustments however fits your own mindset.
  • I’ll be reporting this thread to the OOTP Devs so they can scan it at their leisure. I believe the raw numbers of runners thrown out at each base are a bit off, but, again, see the comment about how many moving parts go into this…for example…
  • …if “arm” skill is way up or down in the league, all these numbers might change. Or baserunning…or speed (which I assume matters, too)…or maybe even intelligence. It’s also possible that pitcher quality matters…more deep flies move more runners. Leagues that have more singles, I’d bet, will have more runners advancing. I could make an argument that outfield range makes a difference here, too.
  • And that’s even before we get to the idea that my script may still be missing a few cases. As always, if you find an oddity, I’m interested. [grin]
Regardless, here’s my first real “in depth” look at baserunning and its value in OOTP. Hope you find it a good way to while away a few moments at lunch or in front of the TV.
Yellow Springs Nine
Playoff Regular, Landis Averse

User avatar
recte44
Commissioner
Posts: 29012
Joined: Tue Mar 30, 2010 12:14 pm
Location: Oconomowoc, WI
Has thanked: 47 times
Been thanked: 259 times
Contact:

Re: Baserunning - A Deeper Dive

Post by recte44 » Fri Nov 08, 2019 5:24 pm

Off Topic
Regardless, this information says
Nashville’s Bluebirds are the best team in the league when it comes to extra bases, with Las Vegas right behind.
This proves that something I always try to do with my outfielders works. :)
Matt Rectenwald
Commissioner, GM: Nashville Bluebirds

User avatar
recte44
Commissioner
Posts: 29012
Joined: Tue Mar 30, 2010 12:14 pm
Location: Oconomowoc, WI
Has thanked: 47 times
Been thanked: 259 times
Contact:

Re: Baserunning - A Deeper Dive

Post by recte44 » Fri Nov 08, 2019 5:25 pm

And also with aggressiveness ON the basepaths- LV is #1 and Nashville is #3.
Matt Rectenwald
Commissioner, GM: Nashville Bluebirds

User avatar
CTBrewCrew
General Manager
Posts: 139
Joined: Wed Sep 04, 2019 11:20 am
Location: Milford, CT
Has thanked: 44 times
Been thanked: 27 times

Re: Baserunning - A Deeper Dive

Post by CTBrewCrew » Fri Nov 08, 2019 9:46 pm

Jeeze thank god for Des Moines or Id be last in DEF RTO%. Im only at a measly 11.31%. Run amok boys - odds are your gonna get that base vs Madison’s OF. ...good stuff 👍
Image

User avatar
usnspecialist
League Advisor
Posts: 3684
Joined: Wed Jul 05, 2017 9:39 am
Location: Manama, Bahrain
Has thanked: 110 times
Been thanked: 184 times

Re: Baserunning - A Deeper Dive

Post by usnspecialist » Fri Nov 08, 2019 10:51 pm

so san Fernando is dead last by a mile at getting to the ball, but once we get there you better not think about going anywhere.
Randy Weigand
Havana Sugar Kings/San Fernando Bears: 2032-
724-573

Landis Champion- 34
Johnson Champion- 34
Frick Champion- 36, 37
Johnson League Southern- 34
Frick League Pacific- 37, 39
,Wild Card- 33, 35, 36

Image

Post Reply Previous topicNext topic

Return to “League Features”

Who is online

Users browsing this forum: No registered users and 4 guests