Loading scores…

About the numbers

Methodology

Sad Sports Graphs tracks the NFL, MLB and NBA with a particular interest in the bad nights: blowouts, collapses, and seasons that got away. This page explains where the data comes from and how each ranking and metric on the site is calculated.

Data & updates

Game & season stats
Raw stats sourced from multiple stat aggregators and refreshed throughout the day. NFL Verse for NFL, Statcast for MLB, and stats.NBA for NBA. The footer shows the latest completed game date loaded for each league.
Live scores
From ESPN's public scoreboard, cached for five minutes. Live scores are shown as-is and aren't part of the nightly data until the next refresh.
Advanced NFL stats
Play-charting stats such as yards after catch and yards after contact are finalized a few days after each game, so the most recent week can shift slightly once they land.

Game Value & Season Value

Game Value estimates a player's net contribution to their team in a single game. Heavily influenced by game position, more in a close game, less in a blowout. Positive values mean the player helped, negative values mean they hurt. Season Value is the same idea across a whole season. It's a Sad Sports Graphs metric, calculated in our own data pipeline rather than taken from a public source.

Reading it on the site

Percentiles
Each game is also placed against two baselines: every game that season (“vs 2026 season”) and every game in that league's history (“vs NFL since-2000”). “Bottom 0.05%” means almost no recorded game was worse.
Plays that hurt
How many of the player's recorded actions that game (plays, plate appearances, possessions) counted against their team, out of all of them.
Availability
NFL single-game values are kept for the most recent couple of weeks, so older NFL matchups show box-score stats without a Game Value.

NFL metrics

ANOY — Adjusted Net Offensive Yards

Representation of total offensive yard impact provided by specific player.

Weights are also added to increase/decrease value of yards created by player, i.e. QBs not being rewarded for YAC as much

ANOY = passing yds + rushing yds + receiving yds
       − sack yds taken
       − interception return yds
       − / + dropped air yds (depending on passing/receiving position)
       − penalty yds

Impact Index

Rewards drive-extending and scoring plays and penalizes drive-killers, with touchdowns and turnovers counted double.

Impact = 2 × (passing + rushing + receiving TDs)
       + (passing + rushing + receiving first downs)
       − sacks taken − fumbles
       − 2 × (interceptions + lost fumbles)

Who qualifies

Season-long positional charts only include players with at least 2 games and meaningful volume, so a single garbage-time snap can't top (or bottom) a leaderboard:

Quarterbacks
50+ pass attempts, or 5+ per game
Running backs
25+ carries, or 2.5+ per game
Receivers & tight ends
15+ targets, or 1.5+ per game

Home page rankings

Biggest blowouts
Games from the past 14 days, ranked by how far the final margin sits above that league's typical margin over the same window (in standard deviations). A 10-run MLB game and a 30-point NBA game can then compete fairly.
Largest blown leads
Games where the losing team led by more than 4 and by more than half of the winner's final score (one-fifth in the NBA, where scores run much higher), ranked by the size of the lead.
The Sad Story
The single saddest result from the last three days of data. Blowouts are scored by their final margin and blown leads by their full swing (largest lead plus the final losing margin), both measured against the league's typical margin, and the highest score wins. Every line of the headline and summary is generated from the game's data.
Tankathon
The five teams with the lowest win percentage in each league's current season. Bars show each team's season scoring differential (points or runs scored minus allowed).
Worst & best of all time
Every team-season in the data, ordered by our overall all-time ranking.

League pages

Expected record

A team's scoring line predicts its record surprisingly well. We use the standard “Pythagorean” formula, with each sport's usual exponent: 2.37 for the NFL, 1.83 for MLB and 13.91 for the NBA.

expected win % = scored^k / (scored^k + allowed^k)
expected wins  = expected win % × games played

Storylines

Each storyline is scored by how unusual it is for the number of games played, so the page leads with the most surprising one, and each team appears at most once.

Unlucky / Living dangerously
Wins at least one standard deviation below (or 1.2 above) the expected record.
Collapse / Turnaround
Win percentage down at least .200 (or up .250) from last season.
Skid
A current losing streak of three or more.
Last place / Winless
The league's worst record.
Outscored
A per-game scoring differential at least 1.5 standard deviations below the league, for a team in the bottom quarter of the standings.

Standings cover regular-season games only. MLB and NBA games still in progress aren't counted until they finish.

Spot something that looks off? The numbers are only as good as the data behind them, and early-season samples are small. Back to the home page →