Category Archives: Information

Lazy days of Winter

I haven’t done much since the end of the 2017 season.   Spring training is starting up but we can’t make any analysis until May, possibly mid May.   Hopefully by that time the simulations will have been completed and run against our dataset that consists of the last 7 years of daily lines for each game.   If this system can show a clear margin we have something.  If not then we need to figure out why.

A prototype web portal to this data model will be developed throughout the season.  This blog concentrates on the Cubs but this analysis can be done for any team, for any season.  The web portal will be turned into a prototype app for anyone to quickly look up anything about baseball through the lens of this data model.

The next post will be a career based ranking based upon whatever we can discern from various team’s player rosters.  The Cubs have quite a few high ranking career players now compared to the earlier years after the Ricketts purchased the team.  You can click on and peruse various careers by drilling down.  This data covers everything up to including 2013 so it’s quite out of date.  That will be made current.

Apparently now publishes detailed box scores and event data for each game in XML.  We used to rely on who publish this yearly in December well after the season is over.  We have certain stats like RISP which we introduce here. that can’t be calculated without event data.  We should probably write another RISP article before May as well.

And finally, the Cubs just acquired Yu Darvish for $21/year for 6 years.  I am not an MBA  we don’t have a good way to determine whether that’s a good deal.  All we can do is look at his career.

Year WAA Name_TeamID Pos Rank
2012 0.5 Yu_Darvish_TEX PITCH XXXXX
2013 5.1 Yu_Darvish_TEX PITCH +029+
2014 2.5 Yu_Darvish_TEX PITCH +121+
2016 1.8 Yu_Darvish_TEX PITCH +188+
2017 1.2 Yu_Darvish_TEX PITCH +157+
2017 1.1 Yu_Darvish_LAN PITCH +157+
Total 12.2

He has had a solid career with his best season in 2013 which is his upside potential.  If he pitches like that the Cubs will be in good shape.  For 2017 you have to add TEX and LAN together giving him a WAA=2.3.  This ranks him #157 for the season, top 200.

The above numbers don’t mean much unless put into context with the entire MLB player dataset from 1900-2016.   That will be fodder for another before May article.  Until then….

About this site

This site is a public logbook on the development of a baseball data model that measures baseball player value and ranks them from best to worst.  This model contains the current 30 MLB franchises, their minor league affiliates, and their historical teams.   It covers all seasons and all players from 1900 – 2017.

Browse the Table of Contents for more information.  We covered the 2017 season extensively.  Not much published here in 2016 even though the Cubs won and it has been sporadic the years before starting in September 2013.

The goal of this data model is to become an app that user can quickly evaluate a player being talked without knowing anything about baseball.   They can then become the smartest person in the room about that player.  There will be a handicapping component but that is a work in progress and hasn’t been proven.  We have a solid proof for the WAA measure, something WAR does not have.

The Simulation Part 1

It has been difficult to think about baseball these last few months.  Still have a Giancarlo Stanton article and a rebuttle to a Bill James article in the works and then there are these simulations that need to be done before next season.  We’ll describe these simulations  a little at a time.

The basic concept of tiers is not too complicated and first described here and below.

  1. average + 1 standard deviation
  2. average + 1/2 standard deviation
  3. average
  4. average – 1/2 standard deviation
  5. average – 1 standard deviation.

We compute a moving average WAA and standard deviation and separate all groups into tiers.  A starter is a single player, a lineup is the sum of WAA for those in the starting lineup, and relief is the sum of relievers listed on the roster.  This is estimated for past years using event data from

Throughout the year we described the concept of lineup-starter pairs.  There is also a lineup-relief pair as well.  These two pairs represent matchups for an entire game.   Since the lineup tier will be the same for both pairs we get the following tuples.

lineup-(starter-relief)  for visitors-(home) 
lineup-(starter-relief)  for home-(visitors)

There are 5 tiers for each lineup starter and relief making 125 different combinations.  There are two tuples per game and we know the number of runs scored for all games since 1970.  Each tuple will have its own run distribution which we will use to draw from in the simulation.

The simulation will run a number of iterations.  Each iteration will generate a random number which will pull a value out of lineup, starter, and relief to determine who wins that game.

Innings pitched by starters will vary by tier level.  Tier 1 starters pitch more innings than Tier 5 for obvious reasons.  The run value pulled from the starter distribution will also have innings pitched.  This will be used to calculate the relief runs.

Each simulated game will have two tuples.  Let’s run through an example.  Suppose we see a home team with a Tier 1 starter, Tier 5 lineup, and a Tier 1 relief.  The visiting team has a Tier 5 starter, Tier 1 lineup, and a Tier 5 relief.  The two game tuples are.

home 5-(1-1)
visitor 1-(5-5)

The simulation runs 10K, 100K, or even 1M iterations pulling numbers from the distribution.  Which ever lineup gets more runs wins that game.  Ties are discarded and we calculate a win percentage which can translate into our estimated line for the game.  We’ll run the above estimate when the simulation scripts are completed and post and update.

This line can then be compared with the real lines to determine whether or not this is a betting opportunity based upon a different set of requirements which will be described later.   From this we can determine whether or not this method can beat the lines and by how many percent based upon our historical data.

There are 125 different tuples.  Since the order of two tuples in a game does not matter that means the number of possible pairs of tuples is:

n*(n+1)/2 where n=125

125*126/2 = 7875 combinations

If we do 100K iterations per game pair that would be almost a billion games to simulate.

In subsequent parts we will explore different pairs perhaps using real games from last season that I kind of eyeballed and guessed at.  Since the later playoff games had such close matchups perhaps that’s what makes home/away field advantage/disadvantage more important.  We observed this in both ALCS and NLCS.  This will have to be explored when we go further down this rabbit hole.  Until then….

Properties of a Value stat

The value stat generated by this data model, WAA, has additive and other properties that no other measure of value has.  In this post we’ll see how this all works with current data.  Since it’s May I’ll release the WAAs associated with players.  We’ll do ranking in a couple of days.

WAA has additive properties.  The WAA for a group of players is the sum of their individual WAA.  Let’s see how that works for the Cubs’ lineup today.

WAA Name_TeamID Pos PA
-0.25 Kyle_Schwarber_CHN LF 111
0.69 Kris_Bryant_CHN 3B 115
0.73 Anthony_Rizzo_CHN 1B 114
0.42 Ben_Zobrist_CHN RF 86
0.67 Addison_Russell_CHN SS 103
0.46 Jason_Heyward_CHN CF 94
0.13 Willson_Contreras_CHN C 72
-0.15 Jon_Lester_CHN P 11
-0.27 Javier_Baez_CHN 2B 66
TOTAL WAA=2.44 PA=772 Win%=0.561

The above table shows the CHN lineup today (5/2/2017) with their 2017 WAA as of yesterday.  Jon Lester at -0.15 is his batting WAA which is separate from his pitching WAA.   The total WAA for today’s lineup is WAA=2.44 which is above average.  But how far above average?  WAA can be converted into a Win/Loss percentage according to this post.  Below is the simple formula:

Win% =  0.5*WAA/(number of games played) + 0.5

After reading that article the Win% for the above tables is:

Win% = 0.5(2.44)*38.4/772 + 0.5 = 0.561

What does a 0.561% signify?  It just shows how far above average the lineup is.  If that lineup goes against a 0.561% pitching then what?   That would be a judgment call.  I haven’t figured out a mathematical way to model pitch vs. bat vs. bat vs. pitch ..etc. etc. to come up with a Win% that beats The Ouija Board.

The only point is it shows an accurate representation of the strength of a lineup.  I don’t have PHI lineup yet to compare but it doesn’t matter for this explanation.  There is plenty of season left to do a full analysis.  Here is what The Ouija Board says about today.

DATE 05_02 8:05_PM May_2_15:08:19 PHI CHN
LINEAWAY PHI [ 0.330 ] < 0.333 >
STARTAWAY 1.85 Jeremy_Hellickson_PHI
LINEHOME CHN [ 0.688 ] < 0.688 >
STARTHOME 0.36 Jon_Lester_CHN

The number next to the starting pitchers is their WAA.  Lester is above average so far but Hellickson is doing much better this season.  CHN is at around 2 – 1 favorites to win today at 0.688.  Standard home field advantage is 0.540 so the Cubs are getting a good premium again.

Here is Jeremy Hellickson’s career.

Rank WAA Name_TeamID Pos
2010 0.5 Jeremy_Hellickson_TBA PITCH XXXXX
2011 4.4 Jeremy_Hellickson_TBA PITCH +046+
2012 3.6 Jeremy_Hellickson_TBA PITCH +061+
2013 -5.3 Jeremy_Hellickson_TBA PITCH -009-
2014 -1.2 Jeremy_Hellickson_TBA PITCH -231-
2015 -2.5 Jeremy_Hellickson_ARI PITCH -078-
2016 2.1 Jeremy_Hellickson_PHI PITCH +158+
2017 1.8 Jeremy_Hellickson_PHI PITCH +015+
Total = 3.4

Since WAA has additive properties they can be added up year after year to get a total.  Hellickson is another slightly above average career pitcher and he’s off to a good start this year.  It will be interesting to see how this turns out.

What is a Value Stat?

If you look at the back of an old baseball card you’ll  sometimes see hundreds of numbers all aligned in rows and columns.  What does that all mean?  Since the movie Moneyball made Sabermetrics popular numbers have been multiplying like cockroaches.  OPS, BABIP, FIP, WAR, WRC+, and on and on and on and on.  It can make your head spin.

I don’t want to get into a critique of all these now because there are too many.  Here is my critique of FIP.  tl;dr FIP doesn’t predict anything and doesn’t mean anything.

This model’s definition of a value stat is one a General Manager uses.  A game stat is something Joe Maddon uses to manage a game.  Value stats can be tied to compensation.   Player contracts are an extremely complicated math model that I don’t know enough  to cover.  This model only provides a value stat in WAA for ranking purposes.  Sabermetrics has WAR.  Although there are many variations to how WAR is calculated, there is only one calculation to WAA and, like Batting Average and ERA, it will never change.

The Wins Above Replacement (WAR) measure uses the following

HITS —estimate—>RUNS —-estimate—->WINS

The basic HITS to RUNS estimate boils down to this:

Runs Estimated = ( Hits + Walks ) * ( Total Bases) / Plate Appearances

The above is the basic foundation of that estimation.  The Sabermetrics people have made it far more complicated than it needs to be.  If I get bored later this season I’ll do some error measurements on their math using the last 50 or 100 years of baseball data.  Once they have runs they estimate WINS from that.  There are two levels of error.

This models uses the following:

RUNS —-estimate—->WINS

We know the runs with 100% accuracy and estimate WINS using Pythagorean Expectation as defined by Bill James.  We know what the error is for Pythagorean Expectation.

Thus, this model cares not about hits, walks, strikeouts, ground outs, double plays, home runs, stolen bases, etc. etc. etc.  it only cares about runs.   When MLB determines who wins or loses a game they only care about the R column, not the H column or E column or any other column.  Runs are the currency that create wins.  We can divvy up runs with 100% accuracy even though it can be a harsh mistress to some, as we will see later on.

Game stats like K/9, OBP, WHIP, etc. are very useful for what Joe Maddon has to do to manage his players during a game.  He needs to know a pitcher’s (Walk + Hits) / Innings Pitched (WHIP) if that pitcher is coming into the game with Runners In Scoring Position (RISP).  He wants a pitcher that can throw strikeouts, perhaps throw 110mph, and not let up walks or hits very often because the game is on the line.  A value stat like WAR or WAA cannot tell you that.

If you want to argue who is better; Chris Sale or Adam Wainwright, you need to look at a value stat.  There are some limitations to WAA that we’ll get into later.  Until then.,