Archive for Site News

Farm System Rankings Are Now on THE BOARD!

In November of last year, Craig Edwards published new research on how to value prospects by Future Value tier. We’ve used that research in conjunction with our prospect evaluations to assess the value of all 30 teams’ farm systems and arrive at our farm system rankings. Starting today, those rankings and valuations are available to view on The BOARD in the Farm Ranking tab. These rankings will automatically update as we move prospects between Future Value tiers, prospects change systems following a trade, or prospects graduate and lose prospect eligibility.

Within that tab, you’ll find:

  • A team’s rank
  • The value of a team’s system
  • A count of how many prospects a team has on THE BOARD
  • The average dollar value per player in a given system

We also break down how many pitching and position player prospects each team has within each Future Value tier. You can also sort on each batter and pitcher column within a given tier. Two-way prospects are split (0.5/0.5) between the batter and pitcher tiers for valuation purposes, as you can see below.

To navigate to the players contained within a particular team’s FV tier, just click on the number in the team’s row within that tier.

You’ll be automatically directed to the relevant part of THE BOARD — in this instance, Minnesota’s 13 hitting prospects with a 40 FV.

There’s some wiggle room in this otherwise fairly objective method of rankings farm systems, as two organizations with the same monetary total could end up being separated by which club has the higher per-prospect average. As we’ve discussed in the Trade Value Series and other places, all things being equal, teams would prefer that their WAR accumulate in as tight a time frame — and be concentrated in as few players — as possible. We don’t yet have an empirical way to express this, so for the time being, let’s say the the bonus you can give a system for concentration maxes out at about 10%.

We have a meaty roadmap of features we’d like add to the farm system rankings (more crosstab metadata on the makeup of a farm system, historical values, etc.), along with new columns and features we plan to add to THE BOARD before next season begins. Let us know what’s on your wishlist of new features to added by the wizard Sean Dolinar and the dark overlord David Appelman in the comments.


Introducing RosterResource Depth Charts!

As you might have already heard, RosterResource will be transitioning its baseball content to FanGraphs over the next few months. Effective today, the 30 depth charts can be found here.

Our first version is close to an exact replica of RosterResource, with a few important improvements. The load time is much faster, and player names link to the corresponding FanGraphs player page. In addition, the minor league power rankings, plate appearances, and innings will be updated daily as opposed to weekly.

In case you’re unfamiliar with RosterResource, here’s the lowdown. I created the site just over 10 years ago. It was initially called MLBDepthCharts but was renamed RosterResource a few years later. The idea was that the site would be an easy-to-read, visual interpretation of a team’s 25-man roster and organizational depth throughout the entire year. It has evolved over time, but at a pace that was never fast enough for me. With the move to FanGraphs, you should expect to see a cross-pollination of data and features from both FanGraphs and RosterResource in the hopes of bringing you a more useful product. Read the rest of this entry »


MiLB Options, Service Time, and Updated Contracts Are Now on Player Pages!

With Jason Martinez and RosterResource.com joining FanGraphs, we’ve taken all the great information over there and put it to work on the FanGraphs player pages.

That means that up-to-date contract information, service time, various eligibilities, and minor league options are now available on our player pages. Please note that Service Time and MiLB Options are recorded at the start of the season and will be updated in the off-season. Arbitration and free agent eligibility is projected.

If anything seems amiss as you’re looking through your favorite players’ pages, please let us know in the comments.


Leaderboards Update – Introducing Custom Date Range

We have added a custom date range to the main leaderboards. This allows you select any date range of three years or less after the start of 2002. Importantly, this will give you custom defined partial season WAR, which can’t be found elsewhere on the site.

The main controls for the custom date range can be found beneath the multiple seasons drop down menus. It uses the same date selector as the splits leaderboards, except it requires you to hit “Submit Custom Date” to load the leaderboard with the desired date range.

A custom date range is similar to options like “Last 30 Days” and “Past 3 Calendar Years” that are currently available on the leaderboards.

  • There is a new option, “Custom Date Range,” in the same “Split” menu.
  • A custom date range follows the same filtering restrictions, where you can’t filter by age, split seasons, or filter rookies.
  • You also cannot apply additional splits like handedness.

This is the present behavior of our time frame options. They might change in the future, but not in this update.

Important notes:

  • The leaderboard will only apply a date range when the split option is set to “Custom Date Range”
  • You can only select dates from 2002 to the present.
  • Date ranges can’t exceed three years. This restriction is due to data processing time.
  • Date ranges only work with the batting and pitching tabs, NOT the fielding tab.
  • Defensive value metrics, including the components of WAR, are prorated from the entire season, so you are unable to analyze defense within a specific date range.

If you encounter any issues, please let us know!


New FanGraphs “Plus” Stats!

One of the tricky things about having so many stats on the site is that it can sometimes make it difficult to figure out whether a particular player is “good” or “bad” in a given statistical category. The other thing that can further complicate matters is the ever changing league rates. Given that the league strikeout percentage has increased over 8% in the past 30 years, what was once considered a well above average strikeout rate might today be merely average.

That’s why we’re introducing the “+ Stats” section to our leaderboards, where we have season and league adjusted a number of stats for your perusal.

Just like wRC+ and ERA-, all of these stats have a baseline of 100, where the number above or below 100 is the percentage above or below average a player is. For instance, Pedro Martinez’s 1999 K%+ is 239, that means he was 139% above the league average.

These baselined stats make it relatively easy to compare things like strikeout rates and walk rates across seasons and careers to see who was truly above (or below) their peers.

We’ll periodically add other stats to this section, so if you have additional “+ Stats” you’d like to see, please let us know in the comments!


ZiPS Update: Three Year Projections!

FanGraphs now has Dan Szymborski’s Three Year ZiPS Projections on both the sortable projections pages and all of the player pages.

As Dan notes:

It’s the ZiPS you love/like/hate, now slightly less accurate! Predicting the future is foggy and the further you go, the thicker the fog gets. Every time ZiPS runs a projection, it provides a player’s rest-of-career projection, but until now, only the first-year projection has been made public on a systematic basis.

ZiPS is a non-parametric model, deriving aging curves from very large groups of similar players, so history is the main guide. After all, there’s no experimental data; it’d be nice to let Jose Altuve play out his career a million times in a million realities and see how he ages, but that’s currently impossible. Plus, the MLBPA probably would not be open to participating in this unending purgatory.

The three-year projections are start-of-season projections. There’s currently no mechanism to update future projections the same way the in-season projections are calculated. The year-to-year model that ZiPS uses is much more robust than the in-season model and I am not smart enough to have figured out an automatic workaround yet.


The FanGraphs Site Guide: 2019 Edition

Happy Opening Day everyone! In this post, I’m going to tell you about all the wonderful, possibly hidden, stat things you can find on the website. This is for those of you who may be joining us for the first time, or for those of you who might be returning to the site after doing whatever it is people do when not thinking about baseball every waking moment.

Player Pages

The Main Player Page – The main player pages include hundreds of stats on each player. Player pages have real time data, season and daily projections, and basically everything you’d ever wanted to know about how a player performed.

Graphs – Visualize how a player has performed over time! You can see breakdowns by season, game, age, and so on. The combinations are nearly endless.

Splits – Splits pages come in three varieties: static splits, the splits tool, and pitch type splits. The static ones contain all the pre-compiled splits. The splits tool is where you can slice and dice your way to the most esoteric of baseball stats. And the pitch type splits break down each pitch a player has thrown or has seen, and provides performance metrics on those pitches. Read the rest of this entry »


FanGraphs Pitch Framing

In 2008, when Dan Turkenkopf was the first to quantify the value of pitch framing, he noted that it appeared to be alarmingly important. Bill Letson was similarly astounded when he calculated the size of the effect in 2010. Max Marchi and Mike Fast each took a turn in 2011, finding large and highly correlated catcher values despite using different methods. Other sabermetric luminaries have contributed sophisticated methods and sanity checks, some of which I’ll touch on below. And yet, this terrifically important, seemingly well-established, and impressively repeatable defensive skill has been left out when calculating FanGraphs player WAR and ignored when Steamer forecasts pitchers and catchers. . . until now.

In what follows, I’ll briefly lay out a series of steps for calculating how many framing runs each catcher contributed as well as and how many extra strikes each pitcher was granted (or, in some cases, earned). This much has all been done and clearly described before thanks to Dan Brooks and Harry Pavlidis; that research was updated and expanded upon by Pavlidis and Jonathan Judge. I’ll then compare the values I’ve obtained to the ones created by Baseball Prospectus, StatCorner, and Sports Info Solutions and demonstrate (I hope) that those extra strikes really do result in extra strikeouts and fewer walks. Lastly, I’ll discuss what this means for Steamer forecasts.

Modeling the Strike Zone

It all starts with the strike zone and I started by using generalized additive models to estimate the probability of a strike in any count, to either left-handed or right-handed batters at each location in and around the plate. On the first pass (shown below), I created strike zones averaged across seasons and, on the second pass, looked for changes in the strike zone by season. The blue contour lines in the images below show where strike calls are a coin flip and the red dashed lines show where we’d expect a 25% or 75% chance of a strike. If you’re read Matt Carruth or Jon Roegele, you’ll be unsurprised to see a small 0-2 strike zones (shown in the upper right facets) and large 3-0 strike zones (in the lower left).

Read the rest of this entry »


WAR Update: Catcher Framing!

Update: An earlier bug that impacted updated pitcher WAR has now been resolved. The pitcher tables below have been updated to reflect that. Thanks to everyone who pointed out the issue!

I’m very pleased to announce that FanGraphs has finally added catcher framing data to the site, with full thanks to Jared Cross, who you may know as the co-creator of the Steamer projections. We’ve also incorporated catcher framing into WAR.

Including catcher framing in WAR has been a topic of internal debate at FanGraphs for the past half-decade. The problem has never been with the inclusion of framing numbers on the catcher side of things. That’s a fairly simple addition. The problem has always been what to do with the pitchers. For instance, the 2011 Brewers were some 40 runs above average in catcher framing. When you add those 40 runs to catchers, do you subtract 40 runs from pitchers? As it turns out, you do, but those runs are not attributed equally to each pitcher:

2011 Brewers Starting Rotation
Player IP Catcher Framing Framing per 9
Randy Wolf 212.1 -0.45 -0.02
Yovani Gallardo 207.1 7.79 0.34
Shaun Marcum 200.2 7.47 0.34
Zack Greinke 171.2 5.95 0.31
Chris Narveson 161.2 5.12 0.29
Positive framing numbers for pitchers indicate a pitcher was helped by the catcher’s framing ability; negative numbers indicate a pitcher was hindered by the catcher’s framing ability.

While most of the pitchers on the 2011 Brewers benefited from Jonathan Lucroy’s otherworldly framing, Randy Wolf was stuck with George Kottaras most of the time. In this instance, the entire Brewers pitching staff, with the exception of Randy Wolf, was a little bit worse once catcher framing is taken into account than their previous, non-catcher framing inclusive WAR would indicate.

Exactly how do you add catcher framing to WAR you ask?

For catchers, you take the catcher framing runs above average, divide by the runs to wins converter, and add it to your existing WAR total.

WAR = (Batting + Base Running + Fielding + Catcher Framing + Replacement Level) / Runs to Wins

On the pitcher side, we adjust FIP by the catcher framing runs above average per 9 innings. If Zack Greinke’s 2011 FIP was 3.00, and he was helped to the extent of 0.31 framing runs per 9 innings, we now use 3.31 in the WAR calculation instead of the original 3.00 FIP. We also adjust the pitcher’s dynamic runs to wins converter. In Greinke’s case, this would increase his personal run environment and also increase the runs to wins converter.

WAR = (((League FIP – (FIP + Catcher Framing / 9)) / Dynamic Runs to Wins Converter + Replacement Level) * IP / 9) * Game Start Leverage / 2

The RA9-WAR calculation has been adjusted in the exact same way.

Let’s take a look at how the inclusion of catcher framing has changed things:

Largest Career WAR Increases (2008 – 2018)
Player Catcher Framing Old WAR New WAR Difference
Brian McCann 181.9 30.4 49.2 18.8
Russell Martin 165.6 29.5 46.7 17.2
Yadier Molina 151.6 34.8 50.5 15.7
Jose Molina 140.4 0.6 15.2 14.6
Jonathan Lucroy 126.8 22.6 36.2 13.6
Miguel Montero 127.0 15.6 28.9 13.3
Yasmani Grandal 119.6 15.1 27.6 12.5
Buster Posey 118.0 38.7 51.1 12.4
Tyler Flowers 89.4 8.6 17.8 9.2
David Ross 80.7 10.0 18.3 8.4
Ryan Hanigan 79.2 8.8 17.1 8.3
Martin Maldonado 69.2 4.6 11.7 7.2
Jeff Mathis 69.1 -1.1 6.0 7.1
Chris Stewart 66.2 2.9 10.0 7.1
Mike Zunino 49.5 7.7 13.0 5.3
Hank Conger 48.1 1.7 6.9 5.2
Rene Rivera 48.1 3.9 9.1 5.1
Largest Career WAR Decreases (2008 – 2018)
Player Catcher Framing Old WAR New WAR Difference
Ryan Doumit -156.6 5.7 -10.4 -16.1
Gerald Laird -109.1 4.0 -7.2 -11.2
Nick Hundley -90.7 11.3 1.9 -9.4
Chris Iannetta -89.5 17.7 8.3 -9.3
Kurt Suzuki -86.1 18.1 9.0 -9.1
Carlos Santana -78.6 14.7 6.4 -8.3
Salvador Perez -79.9 17.8 9.5 -8.3
A.J. Ellis -77.1 8.2 0.1 -8.1
Carlos Ruiz -68.9 21.2 14.0 -7.3
Dioner Navarro -65.4 5.6 -1.2 -6.8
Lou Marson -57.6 2.5 -3.5 -6.0
Welington Castillo -52.1 13.2 7.6 -5.6
John Buck -52.4 7.2 1.7 -5.6
John Jaso -51.9 8.0 2.5 -5.5
Rob Johnson -48.4 -1.5 -6.5 -5.0
Robinson Chirinos -47.7 8.3 3.4 -5.0
Largest Single Season WAR Increases (2008 – 2018)
Player Season Catcher Framing Old WAR New WAR Difference
Jonathan Lucroy 2011 42.4 1.4 5.9 4.5
Brian McCann 2008 37.5 5.1 8.9 3.7
Brian McCann 2011 34.1 3.8 7.4 3.6
Jonathan Lucroy 2013 31.8 3.4 6.8 3.4
Jonathan Lucroy 2010 32.4 0.6 4.0 3.4
Jose Molina 2008 32.1 0.4 3.6 3.2
Tyler Flowers 2017 31.9 2.4 5.6 3.2
Brian McCann 2009 31.6 3.7 6.9 3.2
Jose Molina 2012 27.1 0.8 3.6 2.8
Buster Posey 2012 27.0 7.5 10.4 2.8
Yadier Molina 2010 27.2 2.2 5.1 2.8
Russell Martin 2011 26.6 2.5 5.3 2.8
Russell Martin 2008 28.1 4.8 7.6 2.8
Brian McCann 2012 26.4 1.5 4.2 2.8
Buster Posey 2016 26.7 3.8 6.5 2.7
Jonathan Lucroy 2012 26.1 3.4 6.2 2.7
Y Grandal 2016 25.7 2.8 5.5 2.6
Miguel Montero 2014 23.8 1.1 3.7 2.6
Hank Conger 2014 22.9 0.3 2.8 2.5
Mike Zunino 2014 22.8 1.7 4.2 2.5
Largest Single Season WAR Decreases (2008 – 2018)
Player Season Catcher Framing Old WAR New WAR Difference
Ryan Doumit 2008 -57.8 2.9 -2.8 -5.8
J Saltalamacchia 2014 -31.8 1.5 -2.0 -3.5
Gerald Laird 2009 -32.3 1.6 -1.6 -3.2
Carlos Santana 2011 -30.3 3.4 0.2 -3.2
Carlos Santana 2012 -27.6 3.0 0.1 -2.9
Chris Iannetta 2008 -26.6 3.1 0.5 -2.7
Jorge Posada 2010 -24.2 1.5 -1.0 -2.5
Kurt Suzuki 2014 -22.8 1.9 -0.6 -2.5
Ryan Doumit 2009 -24.6 0.6 -1.9 -2.5
Chris Iannetta 2013 -22.8 1.9 -0.5 -2.5
Dioner Navarro 2014 -22.0 2.0 -0.4 -2.4
Gerald Laird 2008 -23.9 1.4 -1.0 -2.4
Ryan Doumit 2012 -22.2 1.0 -1.4 -2.3
Dioner Navarro 2008 -22.6 1.9 -0.3 -2.3
Miguel Olivo 2011 -21.2 0.2 -2.0 -2.2
Jonathan Lucroy 2017 -22.1 1.1 -1.1 -2.2
Lou Marson 2011 -20.4 1.0 -1.2 -2.2
Lou Marson 2010 -20.3 0.5 -1.6 -2.1
Rob Johnson 2009 -20.8 -0.1 -2.2 -2.1
Dioner Navarro 2016 -20.2 -0.2 -2.3 -2.1
Wilin Rosario 2012 -19.5 1.2 -0.8 -2.0
John Buck 2010 -19.1 2.8 0.8 -2.0
W Castillo 2013 -18.3 3.2 1.2 -2.0

And the Pitchers, where the differences are considerably smaller:

Largest Pitcher WAR Increases (2008 – 2018)
Player Framing Old War New War Difference
Felix Hernandez -23.3 42.7 45.4 2.7
Justin Masterson -20.7 14.2 16.4 2.2
Jason Vargas -21.0 12.9 15.0 2.1
Justin Verlander -17.6 57.0 59.0 2.0
Ricky Nolasco -12.4 23.6 25.0 1.4
Mike Pelfrey -13.6 11.8 13.2 1.4
Kevin Correia -12.3 5.5 6.8 1.2
Cole Hamels -11.1 41.4 42.6 1.2
Anibal Sanchez -11.7 25.7 27.0 1.2
Zach Duke -12.4 8.3 9.5 1.2
Ubaldo Jimenez -10.8 26.6 27.8 1.1
Ian Snell -11.9 1.6 2.7 1.1
Derek Holland -10.5 13.2 14.3 1.1
Danny Duffy -10.2 11.7 12.8 1.1
Luke Hochevar -10.1 8.0 9.1 1.0
Paul Maholm -10.2 11.4 12.4 1.0
Edwin Jackson -10.1 16.1 17.2 1.0
Jeff Karstens -9.6 3.2 4.2 1.0
Roberto Hernandez -9.7 4.2 5.1 1.0
Largest Pitcher WAR Decreases (2008 – 2018)
Player Framing Old War New War Difference
Yovani Gallardo 25.6 21.3 18.4 -2.9
Bronson Arroyo 28.6 8.9 6.1 -2.8
Madison Bumgarner 23.4 30.7 28.0 -2.7
Tim Hudson 24.5 14.5 12.0 -2.6
Kyle Lohse 21.7 14.9 12.6 -2.3
Adam Wainwright 18.6 35.3 33.2 -2.1
Jair Jurrjens 19.2 9.7 7.7 -2.0
Derek Lowe 19.0 12.4 10.5 -2.0
Ryan Vogelsong 18.4 5.8 3.9 -1.9
Tommy Hanson 17.2 9.5 7.6 -1.8
Johnny Cueto 16.9 29.5 27.7 -1.8
Marco Estrada 16.6 13.3 11.6 -1.7
Matt Cain 15.7 21.1 19.4 -1.7
Ian Kennedy 14.7 16.3 14.6 -1.6
CC Sabathia 14.7 40.3 38.7 -1.6
Zack Greinke 13.8 50.7 49.1 -1.6

Now you know everything there is to know about how we added catcher framing to WAR. Please note the following:

  • Catcher Framing (abbreviated as FRM) is available on the leaderboards and player pages in the fielding sections.
  • WAR has been updated with catcher framing data everywhere WAR is available on the site.
  • Catcher Framing data is available in batter and pitcher sections of the leaderboard as a custom stat.
  • Fielding (the WAR component) now includes Catcher Framing runs above average.
  • Steamer projections and depth chart projections both include projected catcher framing for catchers and pitchers.

We Added Minor League Level to THE BOARD!

We’ve added a column on THE BOARD called “Current Level” displaying the most recent minor league level the prospect has played at or has been transacted to.

The process of programmatically determining a prospect’s current level is slightly less straight forward than it might seem. For example, Vladimir Guerrero Jr. is currently a Blue Jays non-roster invitee, so his Minor League Baseball stat page has him listed as Blue Jay, but he hasn’t played a MLB game.

To mitigate problems like this, we are using a combination of our game logs and MLB’s transaction list, along with some logic to determine the prospect’s level. Here’s the summary of the logic:

  • If the prospect hasn’t played in the majors, he cannot have the majors as his level.
  • We look at the most recent minor and major league games the player has played and find the game with the most recent date.
  • We look at the most recent transaction MLB has listed.
  • We compare the transaction and last game to determine which is more recent and use that for level, with consideration of the MLB debut.

This logic will prevent prospect non-roster invitees in Spring Training from displaying as being at the major league level. The transaction and game log approach will provide some robustness against any errant transaction data. Since this is programmatic, there isn’t any judgement on whether an assignment is temporary, like a rehab stint would be.

If you notice any errors, there could be a delay because the data processing runs overnight, but if it persists, please let us know.