The world’s leading publication for data science, AI, and ML professionals.

Analysing the Flow of NFL Games with One Simple Statistic

How play success can help you make sense of plain box scores.

Photo by Tim Mielke on Unsplash
Photo by Tim Mielke on Unsplash

In their weekend matchup against the Colts, the Bills QB Josh Allen threw 26 passes off 35 attempts for 324 yards and 2 touchdowns. The Bills run game also had 21 rushes for 96 yards.

In response, the Colts QB Phillip Rivers threw 27 completions on 46 attempt for 309 yards, also with 2 touchdowns. Their run game had 29 carries for 163 yards.

From these stat lines, we know that Allen had a marginally better game through the air. His completion % was higher and he threw for more yards. The Colts had a considerably better run game, they attempted more run plays than the Bills and had higher yardage.

But what about these teams’ respective performances over the course of the game? We know the Bills eventually had the better game, since they won 27–24, but it’s important to understand how that score came about so that we can effectively evaluate performances. A QB throwing the majority of his 300 yards in garbage time of a blowout game therefore wouldn’t be graded with the same performance as one that led his team to a win.

The purpose of this article is to introduce a single metric that takes standard play-by-play data and convert them into charts that better describe the flow of the game. This is just the surface of sports analytics, but it helps bring numbers a little bit of life and visualisation.

Play Success

For anyone unfamiliar with the game, each offensive drive in American Football consists of a series of downs. You have 4 downs to gain 10 yards before your downs reset. Typically, the 3rd down is the last down you can actually make a run or pass play from, as the 4th is usually reserved for punting the ball to the opposition, unless you have extremely good field position or you’re staging a comeback in a close game. If you don’t succeed to make the 10 yards by your 4th down, the ball is turned over to the opposition at the spot the ball was last snapped.

So how do we define whether a play was a success or not. Well, in the simplest terms, if you gain the required yardage then the play has to be a success, right?. But this raises an issue. If you’re on 1st & 10 and gain 8 yards, that’s a pretty solid play, but wouldn’t be counted as one under our initial conditions.

We have to adjust our requirements slightly and we do this by setting a fixed % of yards required per down. Standard consensus uses the following rules:

A Play is considered successful if it achieves…

  • …40% of the yardage required on 1st down
  • …60% of the yardage required on 2nd down
  • …100% of the yardage required on 3rd or 4th down

So this metric helps us give a little bit more credit to plays that are consistently progressing their offense up the field. There are at least 3 downs available to make up the 10 yards, we ensure that teams aren’t penalised for using all of them.

We can now start to develop this metric and split it into passing and running plays over the course of a game. We can also introduce defensive success, where a play is considered successful for a defense if they stop a successful play for the offense.

Assigning each run play to a 0 or 1 and likewise for passing plays and defensive plays gives us a set of values to plot over the course of the game.

We can plot this directly as the cumulative number of successful plays. For the Seahawks @ Rams game over the weekend, that would look a little something like this.

Image by Author
Image by Author

What we can initially tell from this graph is that the Rams appear to have won this matchup both in the run game and on defense. What we don’t see in this chart is the relative comparison. We know that the Seahawks had more passing plays and success for example, but how does this actually compare with the success that the Rams had.

We might calculate cumulative success %, calculated by the formula (number of successful plays/number of total plays). For the Rams Seahawks game, our plots might look something like this.

Image by Author
Image by Author

This visualisation helps us understand the flow of the game. We see a team’s overall performance based on the figure it settles around and this gives us a far clearer picture as to the pass game for Seattle. Whilst they did throw more and they did have more successful plays, the overall percentage was poor, at 46.15%. Add to this the fact that overall, they had a more inferior run game and defense and we start to understand why the Rams came away with the win here.

There is an obvious flaw with this visualisation. The later a team has a successful play, the less it contributes towards their %, which is why it’s important to look at both these graphs together. One thing this visualisation does do though, is help us understand how games are finished. If we see a drastic change in direction towards the end of any of these lines, it can really magnify how well or poorly a quarterback, running back or defense finishes the game.


This is just a simple example of how we might make sense of the numbers and play-by-play data that we get post-game. This is an efficient and clear way to summarise performance, whilst not losing track of the how the game progressed.


Related Articles