How scores are calculated
This site tracks games across multiple sports -- NFL, MLB, and NBA today, with more planned -- and calculates the same handful of excitement metrics for each: GEI, THRILLA, Comeback, and Audience Score. The underlying concepts below apply the same way regardless of sport; where the details genuinely differ (like what counts as an explosive play), that's called out explicitly.
Win probability
Every play in every game tracked here has a win probability attached to it. For NFL, that comes from nflverse's public play-by-play data, informed by the pregame Vegas point spread -- a heavy underdog starts the game with a lower win probability than a flat 50/50 assumption would give them, so a big comeback by an underdog counts for more. For MLB, it comes directly from the MLB Stats API's own win-probability model, computed play-by-play for every game.
NBA is different: there's no public NBA win-probability feed to draw on (the league's own stats API used to expose one, but it's been dead for a while), so this site trains its own small model instead. It's fit on several seasons of play-by-play using score margin, time remaining, and a pregame team- strength estimate the site computes itself (an Elo rating system, updated after every game, in the style of FiveThirtyEight's NBA ratings) -- no external ratings feed involved there either.
Game Excitement Index (GEI)
Popularized by football analyst Brian Burke and applied the same way here to every sport this site tracks, GEI sums the absolute change in win probability caused by every single play in a game. Games with frequent, large swings in who's likely to win -- lead changes, momentum-shifting turnovers or errors, a late rally -- accumulate a higher GEI than games that were comfortable or one-sided throughout.
THRILLA (comeback factor)
THRILLA stands for Total Hair-Raising Index (Log Loss Adjusted).
GEI alone doesn't capture the thrill of a huge underdog comeback -- a game with lots of small back-and-forth swings can out-score a legendary blowout recovery. THRILLA fixes this by multiplying GEI by a comeback factor:
comeback factor = -log₂(p), where pis the eventual winning team's lowest win probability at any point during the game.
Using log base 2 gives a clean rule of thumb: every time the winning team's win probability is cut in half, the comeback factor goes up by exactly 1.0. A team that was a coin-flip the whole way (p=50%) gets a comeback factor of 1.0. A team that fell to a 25% chance gets 2.0. A team down to 1% gets roughly 6.6.
Comeback
The same comeback factor that feeds into THRILLA above is also percentile-ranked on its own into the Comeback score shown on the leaderboard -- so you can sort games purely by how deep a hole the winning team climbed out of, independent of how much total win-probability volatility (GEI) the game had overall.
Audience Score
GEI and THRILLA both measure excitement the way a win-probability model sees it -- but a lot of what makes a game fun to watch has nothing to do with how much the odds moved. Audience Score is a simpler, more subjective stand-in for that: a hand-tuned point total built from the things a casual viewer would call exciting, also percentile-ranked into a 0–100 score the same way GEI and THRILLA are. The specific things that earn points are sport-specific -- pick a sport below to see its breakdown.
- A one-possession final margin (2 pts), or a two-possession margin (1 pt)
- Every lead change (or the game becoming tied) in the last two minutes of regulation or in overtime -- 3 pts each, uncapped, so a game with several late flips scores higher than one with a single flip
- Every explosive play, a 20+ yard gain -- 0.5 pts each, uncapped
- Every turnover -- interception, lost fumble, or turnover on downs -- 0.75 pts each, uncapped. A long interception or fumble return (20+ yards) also counts toward the explosive-play total above
- Every touchdown -- 1 pt each, uncapped
The raw point total has no inherent meaning on its own (the weights above are a judgment call, not a model fit to anything) -- it exists only to rank games against each other, which is what the percentile score does.
The 0–100 score
Raw GEI and THRILLA values aren't very intuitive on their own -- a THRILLA of "27" doesn't mean much without context. So the site displays each game's percentile rank instead: 100 means the single most exciting (or most comeback-heavy) game out of every game tracked for that sport; 0 means the least. This percentile is global within that sport-- always relative to that sport's entire tracked history, not just the season you're currently viewing (and not compared across sports, since a 90th-percentile NFL game and a 90th-percentile MLB game aren't measured against each other). The underlying raw number is still available by hovering over a score.