Week 1 of the 2026 NFL season is done. Sixteen teams are 1-0, sixteen are 0-1, and every sports show is already telling you who is "for real."
I build a Monte Carlo simulator that estimates NFL playoff odds for all 32 teams, so I wanted to know how much one week should move those numbers. The model's answer is "not much," and the reasons are more interesting than the numbers themselves.
The problem with one game of data
A common way to estimate team strength is the Pythagorean expectation. You take points scored and points allowed and turn them into an expected win percentage. Across a full season it predicts future wins better than the win-loss record does.
After one game it gives you nonsense. Here is what it says after Week 1, next to what my model actually uses:
| Team | Week 1 | Point diff | Pythagorean (1 game) | Model's strength estimate | Playoff odds |
|---|---|---|---|---|---|
| Jacksonville Jaguars | W 34-10 | +24 | .948 | .679 | 92.6% |
| Kansas City Chiefs | W 31-10 | +21 | .936 | .559 | 69.1% |
| New York Jets | W 23-10 | +13 | .878 | .411 | 23.6% |
| Las Vegas Raiders | W 27-13 | +14 | .850 | .399 | 21.4% |
| New England Patriots | L 10-13 | -3 | .349 | .597 | 55.8% |
| Denver Broncos | L 10-31 | -21 | .064 | .542 | 39.9% |
| Los Angeles Rams | L 7-27 | -20 | .039 | .544 | 33.3% |
Model run on September 15, 2026, after Week 1, with 20,000 simulated seasons. These numbers will change after Week 2.
Two things stand out:
- Winning big barely helps if you weren't good before. The Jets and Raiders both won by double digits and are still below 25%.
- Losing big barely hurts if you were. The Patriots lost their opener and still have better playoff odds than the 1-0 Giants (39.9%). The Broncos lost by 21 and are still near 40%.
That's by design. Here is how it works.
Step 1: shrink the current season hard
The simulator estimates each team's true strength by blending three things:
- The actual win percentage
- The Pythagorean expectation from point differential (weighted at 0.65 by default, because point differential is the better predictor)
- A baseline the estimate is pulled toward
The pull is controlled by regressionGames. Think of it as adding a number of imaginary games played at the baseline. The NFL default is 6.
After Week 1, each team has one real game against six imaginary ones. So the current season is only about a seventh of the estimate. That's why a .936 Pythagorean number turns into something much closer to average.
Six is much smaller than you'd use in baseball. A 17-game season means every game carries real information, and by midseason I want the real record to dominate. It just shouldn't dominate after one Sunday.
Step 2: don't regress everyone to .500
If every team were pulled toward .500, all 32 would start the season with identical odds. That's useless, and it's obviously wrong.
So the baseline comes from last season. The model takes last year's point differential, shrinks it toward .500 and uses that as each team's starting point. The priorCarryover parameter sets how much survives. The default of 0.6 keeps 60% of last season's separation between teams.
That's why Jacksonville's strength estimate is .679 even though most of the weight is still on the prior. It's also why a 21-point loss doesn't sink Denver.
It also leads to this model's biggest weakness, and I'd rather say it upfront: it knows nothing about the offseason. It doesn't know about a new quarterback, a new head coach or a key injury. The prior comes only from last season's scoreboard. Early in the season that's the main way the model can be wrong. The regression settings are there so real results take over quickly as the weeks pass.
Step 3: simulate the season 20,000 times
With a strength estimate for each team, the simulator plays out every remaining game on the real schedule:
-
Strength uncertainty. Each simulated season redraws every team's strength from a distribution (
strengthUncertainty, default 0.16). With a 17-game sample you can't be sure how good anyone is. If you set this to zero, the output becomes far too confident. - Game results. A logistic model decides each game from the strength gap. Home teams get +0.2 in log-odds, which works out to about a 55% win rate between evenly matched teams.
- Ties. Each game has a 0.4% chance of ending in a tie, roughly one per season across 272 games. As in the NFL, a tie counts as half a win.
- Seeding. Each simulated season is run through the NFL seeding rules: division winners, three wild cards per conference, and the No. 1 seed.
After 20,000 seasons, the playoff odds are just how often each team made it. The same run returns division odds, wild-card odds, No. 1 seed odds and a projected final record. For example, the Chiefs project to about 9.7 wins right now and the Jaguars to about 11.8.
Running it yourself
The simulator is published as an API on Apify: NFL Playoff Odds API - Monte Carlo Simulator. Standings and the remaining schedule are loaded automatically. Every parameter above is an input, so you can test your own assumptions.
curl -X POST \
"https://api.apify.com/v2/acts/commodus67~nfl-playoff-odds-api-monte-carlo-simulator/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"iterations": 20000,
"regressionGames": 6,
"pythagoreanWeight": 0.65,
"priorCarryover": 0.6,
"strengthUncertainty": 0.16,
"homeFieldAdvantage": 0.2
}'
You get one row per team. Some settings worth playing with:
-
priorCarryover: 0starts every team level and shows how little one week tells you on its own. -
regressionGameslower means you trust the 2026 results more, higher means you trust them less. -
seasonruns a past season from where it stood, which is useful for backtesting. -
archiveToNamedDatasetsaves every run to a named dataset. Run it weekly and you get a history of how the odds moved, which you can't rebuild later.
You can also pass your own market probabilities in marketProbabilities, and the output will show where the model and the market disagree.
What to watch next
Week 4 is the next checkpoint worth looking at. By then a team has played four real games against six imaginary ones, and the current season starts to matter. If the model is still far from reality for a team that changed a lot in the offseason, that's a sign priorCarryover should be lower in September.
This is a statistical model, not a set of picks. Its job is to put a number on uncertainty, not to tell you who to back.
If you like this kind of thing, I wrote about the same problem for hockey: NHL playoff odds for 2026-27 and why I don't trust my own model in September.
Top comments (0)