# What's the probability that an NFL team with a given win/loss record makes the playoffs?

For example, if I know that a team has a record of 11 wins and 5 losses, but no nothing about the records of any other teams, what is the probability that this team makes the playoffs?

The current (simplified) NFL rules for playoffs are that the team must either have the best record in its division (three other teams), OR have one of the best two records among teams in the conference that did not win the division.

So I suppose what I'm trying to figure out is:

1. What is the probability that at least one out of three teams has a better win-loss record? This is easy if I assume that the win/loss records of each team in the division are independent (they aren't because each team plays each team in the division twice), but how inaccurate will that make the final answer?
2. What is the probability that at least two other teams had a better win/loss record, but did not win their division? I really have no idea where to begin with this. Again, the odds of two teams having a better win/loss record is easy, but I'm not sure how to incorporate them winning their division.

(I mentioned 11-5 as an example record, but really I'm trying to solve this in general for any number of wins/losses, teams in a division, divisions, and teams in a conference)

• It's going to depend on your prior assumptions about the likely relative strengths of teams. Are you assuming that all games are 50/50 coin flips? Or, at the other extreme, that there is a linear ordering among teams that determines each game? Or perhaps you want to incorporate historical statistics to arrive at a more realistic answer...? Aug 8, 2013 at 4:33

In any realistic model, it's going to be very difficult to get a closed-form solution. So you should try a simulation. Run a million or so simulations of NFL seasons according to your model. In those million simulations, say there are a total of $N$ cases where a team had an $11-5$ record, and of those the team made the playoffs in $A$ cases. Then $A/N$ should be a good approximation of the probability.

This is only a long comment, rather than an answer, mostly to lay out the (current) structure of the NFL schedule, in case anyone wants to run some simulations.

There are two "conferences" in the NFL, each consisting of 16 teams divided into 4 "divisions" of 4 teams each. Six teams in each conference make the playoffs: the winner of each division, and two more teams with the best records among the 12 non-winners. (There are elaborate tie-breaking procedures that frequently come into play, but these are irrelevant for the OP's problem, where it's only the won-loss records that matter, not who holds them.)

For the OP's problem, we need only consider one conference. Call the divisions N, S, E, and W, and the teams in them N1, N2, N3, N4, etc. In a typical NFL season, each team plays the other 3 teams in its own division twice (once at home and once away); each team in N plays each team in S while each team in E plays each team in W; Ni and Si play Ei and Wi for i=1 to 4; finally, each team plays the 4 teams in one of the divisions in the other conference. (The exact match-ups rotate from season to season, but this is irrelevant for the OP's problem.) The total number of games each team plays is thus 6+4+2+4=16.

The structure of the schedule makes it conceivable for all four teams in a division to finish 3-13 (by all four teams winning their home games against their three division opponents and losing the rest) and hence send a division "winner" to the playoffs with a 3-13 record. It is not possible to make the playoffs with a 2-14 record: you simply can't have 11 teams in a single conference with 14 or more losses. (There are 96 games played within the conference and 64 games played against the other conference, so the total number of losses cannot exceed 150.)

Conversely, it's possible to miss the playoffs with a 13-3 record, but not with a 14-2 record. In practice, teams that go 11-5 or better rarely miss the playoffs, and teams that go 8-8 or worse rarely make it. (I think both extremes have occurred, but someone would have to check how often.) It can and does happen on occasion that a 10-6 team will miss the playoffs while a 9-7 division winner makes it. Them's the breaks.

It could be worth running simulations with coin flips to determine the outcomes of games, to see how the statistics stack up against the historical statistics. It might also be of interest to alter the schedule, say by eliminating inter-conference play and having Ni and Si play everyone in E and W except Ei and Wi, for i=1 to 4, to see if this has any effect on the stats.

Edit

I made a BIG mistake in my interpretation of the simulation - revised results have been substituted.

A team with an 11/5 record has an 99.97% chance of making the playoffs.

Simulation

In coming up with an answer for this question, I have carried out the simulation for this 10,000 times (i.e. 12 teams x 10,000 seasons = 120,000 playoff spots) and my results are:

Win/Loss    As Div. winner    As wildcard     DNQ    Chance
16/0               4               0           0      100%
15/1              86               0           0      100%
14/2             568               0           0      100%
13/3            2793              19           0      100%
12/4            8392             294           0      100%
11/5           18328            3009           6       99.97%
10/6           24678           13393         851       97.81%
9/7           18315           19822       18018       67.91%
8/8            6029            3447       53405       15.07%
7/9             778              16       55155        1.42%
6/10             29               0       39021        0.07%
5/11              0               0       21360        0%
4/12              0               0        8881        0%
3/13              0               0        2680        0%
2/14              0               0         545        0%
1/15              0               0          73        0%
0/16              0               0           5        0%
Total         80,000          40,000     200,000


Limitations

1. I ignored ties - there have been 19 ties under the current system introduced in 1974 out of approximately 10,096 games played ~ 0.19%.
2. I assumed each team had an equal chance in every game - this is a huge assumption but I have no idea how it impacts on the actual results. Edit I reran the simulation assigning each team a different skill value from a normal distribution (mean 500, std dev 150). The best team had about an 80% chance of winning against the worst team from the sample. This produced essentially the same distribution so this doesn't matter.

Model

For those who are interested, this is the visual basic code I used:

Public Enum Conference
AFC = 0
NFC
End Enum

Public Enum Division
East = 0
North
South
West
End Enum

Public Enum Ranking
One = 0
Two
Three
Four
End Enum

Public Enum Results
NotPlayed
Won
Tied
Lost
End Enum

Public Class Team
Public Property Skill As Integer = 50
Public Property Wins As Integer
Public Property Ties As Integer
Public Property Losses As Integer
Public Property Conference As Conference
Public Property Division As Division
Public Property Rank As Ranking
Public Overrides Function ToString() As String
Return String.Format("{0} - {1} - {2}", Conference.ToString(), Division.ToString, Rank.ToString)
End Function
End Class

Public Class Game
Private Shared rnd As New Random

Private _Team1 As Team
Public Property Team1() As Team
Get
Return _Team1
End Get
Set(ByVal value As Team)
If Not value.Equals(Team2) Then
_Team1 = value
End If
End Set
End Property

Private _Team2 As Team
Public Property Team2() As Team
Get
Return _Team2
End Get
Set(ByVal value As Team)
If Not value.Equals(Team1) Then
_Team2 = value
End If
End Set
End Property

Private _Result1 As Results
Public Property Result1() As Results
Get
Return _Result1
End Get
Set(ByVal value As Results)
_Result1 = value
Select Case value
Case Results.Lost
_Result2 = Results.Won
Case Results.NotPlayed, Results.Tied
_Result2 = value
Case Results.Won
_Result2 = Results.Lost
End Select
End Set
End Property

Private _Result2 As Results
Public Property Result2() As Results
Get
Return _Result2
End Get
Set(ByVal value As Results)
_Result2 = value
Select Case value
Case Results.Lost
_Result1 = Results.Won
Case Results.NotPlayed, Results.Tied
_Result1 = value
Case Results.Won
_Result1 = Results.Lost
End Select
End Set
End Property

Public ReadOnly Property Teams As IEnumerable(Of Team)
Get
Return Result.Keys
End Get
End Property

Public ReadOnly Property Result As IDictionary(Of Team, Results)
Get
Return New Dictionary(Of Team, Results) From {{Team1, Result1},
{Team2, Result2}}
End Get
End Property

Public Sub Reset()
Result1 = Results.NotPlayed
End Sub

Public Sub Play(Optional Tie As Single = 0)
Dim draw = rnd.NextDouble
If draw >= 1 - Tie Then
Result1 = Results.Tied
Else
Dim res = rnd.Next(Team1.Skill + Team2.Skill)
'Console.Write("{0}: ", res)
If res < Team1.Skill Then
Result1 = Results.Won
Else
Result1 = Results.Lost
End If
End If
'Console.WriteLine("{0}", Result1)
End Sub
End Class

Public Class Season
Private _Teams(Conference.NFC, Division.West, Ranking.Four) As Team
Public ReadOnly Property Teams As Team(,,)
Get
Return _Teams
End Get
End Property

Public ReadOnly Property ConferenceWinners As IEnumerable(Of Team)
Get
Dim retVal As New List(Of Team)
Dim winners = From t As Team In Teams
Order By t.Wins + t.Ties * 0.5 Descending
Group By Div = t.Conference * 10 + t.Division
Into Teams = Group
For Each c In winners
Next
Return retVal
End Get
End Property

Public ReadOnly Property WildCards As IEnumerable(Of Team)
Get
Dim retVal As New List(Of Team)
Dim runnersUp = From t As Team In Teams
Where Not ConferenceWinners.Contains(t)
Order By t.Wins + t.Ties * 0.5 Descending
Group By Conference = t.Conference
Into teams = Group

For Each c In runnersUp
Next
Return retVal
End Get
End Property

Public ReadOnly Property Results As Dictionary(Of Team, Tuple(Of Integer, Integer, Integer))
Get
Dim retval As New Dictionary(Of Team, Tuple(Of Integer, Integer, Integer))
For Each t In Teams
retval.Add(t, New Tuple(Of Integer, Integer, Integer)(t.Wins, t.Losses, t.Ties))
Next
Return retval
End Get
End Property

Private _Games As New List(Of Game)
Public ReadOnly Property Games() As IEnumerable(Of Game)
Get
Return _Games
End Get
End Property

Public Sub ClearResults()
For Each g In Games
g.Reset()
Next
For Each t In Teams
t.Wins = 0
t.Losses = 0
t.Ties = 0
Next
End Sub

Public Property TieChance As Single = 0

Public Sub Play()
For Each g In Games
g.Play(TieChance)
Next
For Each t In Teams
Dim teamGames = From g In Games
Where g.Teams.Contains(t)
Select g.Result(t)

t.Wins = teamGames.Where(Function(r) r = NFL.Results.Won).Count
t.Losses = teamGames.Where(Function(r) r = NFL.Results.Lost).Count
t.Ties = teamGames.Where(Function(r) r = NFL.Results.Tied).Count
Next
End Sub

Public Sub New()
For Each i In [Enum].GetValues(GetType(Conference))
For Each j In [Enum].GetValues(GetType(Division))
For Each k In [Enum].GetValues(GetType(Ranking))
If Teams(i, j, k) Is Nothing Then
Teams(i, j, k) = New Team With {.Conference = i, .Division = j, .Rank = k}
End If
Dim t1 = Teams(i, j, k)
For Each x In [Enum].GetValues(GetType(Conference))
For Each y In [Enum].GetValues(GetType(Division))
For Each z In [Enum].GetValues(GetType(Ranking))
If Teams(x, y, z) Is Nothing Then
Teams(x, y, z) = New Team With {.Conference = x, .Division = y, .Rank = z}
End If
Dim t2 = Teams(x, y, z)
If Not t1.Equals(t2) Then ' different teams
If Not Games.Where(Function(g) (g.Teams.Contains(t1) And g.Teams.Contains(t2))).Any Then 'games do not exist
If i = x Then 'Same conference
If j = y Then 'Same division (play twice)
_Games.add(New Game With {.Team1 = t1, .Team2 = t2})
_Games.add(New Game With {.Team1 = t1, .Team2 = t2})
ElseIf j \ 2 = y \ 2 Then 'paired division
_Games.add(New Game With {.Team1 = t1, .Team2 = t2})
ElseIf k = z Then
_Games.add(New Game With {.Team1 = t1, .Team2 = t2})
End If
Else 'different conference
If j = y Then 'same division
_Games.add(New Game With {.Team1 = t1, .Team2 = t2})
End If
End If
End If
End If
Next
Next
Next
Next
Next
Next
End Sub
End Class

Module Module1

Sub Main()
Dim res(16, 1) As Integer
Dim sameDiv As Integer
For i = 1 To 10000
Console.WriteLine(i)
Dim s As New Season
s.Play()
For Each j In s.ConferenceWinners
res(j.Wins, 0) += 1
Next
For Each k In s.WildCards
res(k.Wins, 1) += 1
Next
For Each l In [Enum].GetValues(GetType(Conference))
If s.WildCards.Where(Function(w) w.Conference = l)(0).Division = s.WildCards.Where(Function(w) w.Conference = l)(1).Division Then
sameDiv += 1
End If
Next
Next
For i = 16 To 0 Step -1
Console.WriteLine("Wins: {0}, Div Winner: {1}, Wildcard {2}", i, res(i, 0), res(i, 1))
Next
Console.WriteLine("Same Div: {0}", sameDiv)
End Sub

End Module

• How did the 14/2 record wind up with only a 99.9% chance of making the playoffs? In my answer I said it was impossible to miss the playoffs with that record. Did I miss something? Sep 18, 2014 at 10:45
• Yeah, I realized last night that this interpretation is wrong - I know what I did wrong; will fix when I have time Sep 18, 2014 at 22:27