Sports Reference Blog

Advanced Stats on Player Pages: How We Made It

Posted by Adam Darowski on February 26, 2021

On Tuesday night, we added a new table of Advanced Stats to player pages.

This is what it looks like for hitters:

Mike Trout Advanced Stats

And for pitchers:

Gerrit Cole Advanced Stats

Rather than simply explain what we added, I’m going to describe how we added it. How does something go from an idea to a feature on Baseball-Reference? The entire process starts with you, the user.

At the beginning of January, we began conducting interviews with several users to discuss their experience using Baseball Reference and Stathead. By the time we launched the feature, we had spoken with nearly 50 users. It’s important to note that when we started the interview process, we didn’t have a particular solution or even a particular problem in mind.

There were several goals for these interviews. We wanted to find:

  1. What is the general perception of Baseball Reference compared with other sites?
  2. What features would users like us to add to Baseball Reference?
  3. What features would users like us to add to Stathead?
  4. What features of Baseball Reference and Stathead are users having a hard time using, finding, or just remembering to find?
  5. In what ways are people using our sites that we hadn’t anticipated?

Many of the interviews confirmed what we already knew. But every interview had at least one piece of gold that we could learn from. One interview in particular stood out to me and sent me on a path towards designing the feature you see on the site today.

I spoke with Mark Gorosh (@sportz5176 on Twitter) on February 3. Mark was lamenting that we don’t have advanced metrics such as BB% and K% on Baseball-Reference player pages. He didn’t understand why we had so many columns about the inner workings of WAR (in the Player Value table), but not established advanced stats like walk rate.

The issue, of course, is that we do have those stats. At this point I showed Mark the Advanced Batting page and… I’m not going to say Mark yelled at me, but he gave us some tough love that we really needed to hear. He couldn’t understand why all these great stats were not on a player’s main page.

And he was right.

There were a few different paths we could take.

  1. We could take all of the tables on the Advanced Batting pages and put them on the main player page. This wasn’t practical, however. There’s also an Advanced Fielding page and, of course, and Advanced Pitching page for pitchers. Adding all of these for a pitcher would lead to dozens of tables. Having so much on one page would negatively affect user experience.
  2. We could pick and choose certain things to bring over to the main page. Perhaps we could do this in a way that also leads users to click to the Advanced pages.
  3. We could move nothing, but focus on doing a better job of directing users to the player sub-pages (such as advanced batting and pitching, splits, and game logs).

We opted for the second option, but will also be looking to address the third option. The solution for the immediate job at hand is getting some advanced stats on the main player pages. But the fact that Mark (and other users) didn’t even know we had these advanced stats is a symptom of another issue—some users either are not noticing these sub-pages or they know about them but don’t think to use them (because they’re a click away).

This is a big deal because Baseball-Reference has a lot of users, but the super-users are the ones that have discovered the game logs, splits, and other advanced features. From there, they move on to Stathead to get even more powerful tools for their research. We want as many users discovering those features as possible so they can also turn into power users. So, in the future I’ll be looking to improve the player (and team and league) sub-navigation.

Now that we chose the path to explore, there were still different ways to proceed. One was to move the Player Value table (where we show WAR and its components) to the Advanced Batting page, but bring the most important columns (such as WAR, WAA, oWAR, dWAR, etc.) along with the most important columns from other Advanced Batting tables.

We began testing with that.

Francisco Lindor Advanced Stats Mockup

This early mockup tested well but some users showed a very strong preference for keeping the Player Value table where it was and adding a separate Advanced Stats table below it. Honestly, that was probably the right solution all along, but I wanted to see we could solve this without increasing the number of tables on player pages. We ended up adding one, but that’s fine.

There were several key things from this mockup that tested well, such as:

  1. The collection of stats we chose (which were the result of team discussions and also a survey we shared on Twitter).
  2. The addition of rOBA (our version of wOBA—Reference weighted OBA) and Rbat+ (our version of wRC+—based on the Rbat used in WAR). Despite the fact that these stats are brand new, I was impressed by how many guessed right away what they were.
  3. The links under the table to let users quickly jump to any table on the Advanced Batting page from the main player page. Not only does this help raise awareness of the Advanced Batting page, but also lets users know what tables are specifically on the page before they even go there.

The next version we tested kept all of these features, but put them in a separate Advanced Batting table. We also added base-running data, more batted ball data (such as the oft-requested Exit Velocity and Hard Hit %), and a row to display league averages for each stat (because users may not know what a good XBT% is).

That version of the mockup looked much like what you see today:

Francisco Lindor Advanced Stats

This version tested exceedingly well. Now it came down to building it. I asked Kenny Jackelen (@kennyjackelen on Twitter), Baseball-Reference’s developer, for a summary of the development process for a new feature like this. Kenny said he:

  1. Iterated multiple times with the team internally to get feedback on the table implementation (including how the table should render for players from different eras).
  2. Created new database tables for exit velocity data (which also powers the Hard Hit %)
  3. Added columns to existing tables to store rOBA and Rbat+ more permanently (previously these calculations were done as an intermediate step to get to WAR, so the database structure needed some updates to make it easier to pull them into the page-building process alongside other stats).
  4. Added logic to our play-by-play processing to assign batted balls a Pull/Center/Oppo location so that we can get a count of each type and compute the percentages for the Advanced Batting table
  5. Read a lot of slack messages in ALL CAPS from Adam D—like a marathon runner being handed a cup of water.

When it was ready, I got Mark back on Zoom to see his reaction. He said “it’s a 10.” He elaborated further, saying “It's not enough to be baseball’s best data aggregator. You have to present the information in a way that fans will be able to find it. I was honored that BRef and Adam took my suggestions to heart. The new player page designs put so many great pieces of data in easy to find places… near the top of the page.”

As a researcher, it was very fulfilling to come full circle with Mark. He went from tough love to delight.

As helpful as it was, not all user interviews revolve around tough love. Many users I have spoken with weren’t sure what to expect when they hopped on a call. Far more often than not, it’s just a casual conversation about baseball, the different ways people use the site, and what they’d like to be able to do.

I asked interview subject Jim Passon (@PassonJim on Twitter) if he had any thoughts on the interview process (so you don’t just have to take my word for it). He said “When Adam reached out to me to have a conversation about features that I’d like to see in the future, I couldn’t get the meeting set up quick enough. As expected, the meeting was awesome! I got to make a few suggestions, learn some new tricks, and catch a glimpse of the cool features that were already being developed for the site (which I absolutely loved). I now feel like I’m a part of my favorite site on the web... and that feels pretty good!”

Interviewee Jessica Brand (@JessicaDBrand on Twitter) echoed a similar sentiment, saying “I felt at ease, just discussing sports in depth in every which way with friends. It’s a great way to get those endorphins going to see and meet up with friends at your local stadium/arena/pitch you can’t necessarily see because of social distancing. Interviewing with Adam and Kenny provided the same warm and fuzzies.”

And honestly, in this time of social distancing and quarantine, hopping on the phone to talk about Baseball Reference with some of my favorite writers and analysts has been incredibly fulfilling. If you’d like to chat with me about how you’re using Baseball-Reference and Stathead, feel free to reach out at @baseballtwit on Twitter or go ahead and book a time on my calendar to chat.

2 Responses to “Advanced Stats on Player Pages: How We Made It”

  1. Anna Karina, Superstar Says:

    Fantastic work setting these riches out for easier access. Just excellent.

  2. Twh Says:

    .
    hey there...

    ".. and a row to display league averages for each stat (because users may not know what a good XBT% is)".

    Thank you for this nod (and life-saver) for the less fanatical readers/users.

    ...tom...