If you want a rough answer to "how likely is a 17-0 NFL season?", you do not need a heavy model. You need per-game win probabilities and a bit of multiplication.
The basic idea
Treat each of the 17 games as an independent event with its own win probability. The chance of winning all of them is the product of those probabilities. If a team were an 85% favorite in every game:
p = 0.85
print(p ** 17) # ~0.063
That is about 6%. At 90% per game it is roughly 17%, and at 75% it falls to under 1%. Small per-game edges matter a lot because the exponent is 17.
Different probabilities per game
Real schedules are not uniform. Home games, rest, opponent strength and weather all change the number. Use a list instead:
import math
probs = [0.9, 0.85, 0.8, 0.88, 0.7, 0.92, 0.85, 0.75, 0.8, 0.9, 0.82, 0.78, 0.86, 0.7, 0.88, 0.8, 0.84]
print(math.prod(probs))
Monte Carlo simulation
Multiplying gives the exact answer under independence, but simulation is useful once you want more than one number, such as the distribution of win totals or the odds of at least 16 wins. Simulate many seasons, drawing each game as a Bernoulli trial:
import random
def season(probs):
return sum(random.random() < p for p in probs)
N = 100_000
perfect = sum(season(probs) == 17 for _ in range(N)) / N
With enough runs, the simulated frequency converges to the product. Simulation also lets you add correlation, for example a star injury lowering several later probabilities at once.
Caveats
Independence is a simplification, and your inputs are estimates, so the output is only as good as they are. Still, it shows why perfect seasons are rare. If you want to try scenarios without writing code, 17-0 Game is a free NFL perfect-season simulator where you can experiment with these ideas.
Top comments (0)