Opponent adjustment and the Simple Rating System, so you can compare teams on a level field.
Published June 6, 2026 · NFL Analytics
Two teams finish 10-7. One ground out its record against a brutal slate of playoff contenders; the other feasted on a soft schedule. Their records are identical, but they are clearly not equally good - and raw season stats have the same blind spot. Yards, points, and even efficiency numbers all reward a team for the simple luck of who it happened to play. To compare teams fairly, you have to adjust for the quality of the competition.
Strength of schedule (SOS) is the headline version of that adjustment: a measure of how tough a team's opponents were, on average. But the more powerful idea is to fold opponent quality directly into a team's rating, so the rating itself already accounts for the schedule. The cleanest public example of that is Pro-Football-Reference's Simple Rating System (SRS).
At its most basic, strength of schedule is just the average quality of the opponents a team faced:
SOS = Average rating of all opponents faced
That instantly sharpens raw numbers. A defense that looked elite may have simply faced weak offenses; a struggling offense may have run into a gauntlet of top defenses. But plain SOS has a chicken-and-egg problem: to rate a team's opponents, you need ratings - and those opponents' ratings depend on their opponents, and so on. The elegant fix is to solve for everyone's rating at once, which is exactly what SRS does.
SRS defines a team's rating as its average scoring margin, plus an adjustment for the average strength of the teams it played:
$$ \text{Rating} = \text{Average Margin of Victory} + \text{Average Opponent Rating} $$Read that carefully: a team's rating depends on its opponents' ratings, which depend on their opponents' ratings. That circularity is a feature, not a bug. You solve the whole system iteratively until the numbers stop changing - at which point every rating is consistent with every other. By construction, the ratings average to about 0, so a positive SRS means above-average and the number reads as points above average on a neutral field.
Invented, simplified numbers to show the mechanic - not a real standings calculation.
Step 0 - Start naive. Begin by assuming every team's rating equals its raw average margin of victory, with zero opponent adjustment.
Suppose Team A averaged +6 per game, but did it against opponents who themselves average around −4 (weak schedule).
Suppose Team B averaged +6 per game too, but against opponents who average around +3 (tough schedule).
Step 1 - Add the opponent adjustment. Now each rating becomes margin + average opponent rating:
+6 margin + (−4 opponents) ≈ +2
+6 margin + (+3 opponents) ≈ +9
Step 2 - Repeat. Those new ratings change every team's "average opponent rating," so you recompute everyone again. Run the loop a few more times and the values settle.
SRS is the most transparent opponent adjustment, but it is far from the only one. The same underlying logic - reward results more when they come against tougher opponents - shows up across the analytics landscape:
| System | What it adjusts | How the adjustment works |
|---|---|---|
| SRS | Scoring margin | Iterative solve so ratings are self-consistent and average to ~0. |
| DVOA | Per-play efficiency | Bakes opponent quality into a % over average (see our DVOA explainer). |
| Elo | Win/loss (and margin variants) | Updates a rating after each game by more when you beat a higher-rated team. |
They differ in what they measure - margin, efficiency, or results - but they share the same instinct: a win or a stat line is worth more against a good team than a bad one.
Pure margin rewards blowouts, so some systems cap how much a single lopsided result can count. Without a cap, running up the score inflates a rating; with one, you lose some signal. There is no perfect choice.
Late, low-leverage scoring can distort margin in ways that do not reflect true team strength, feeding noise into any margin-based rating.
With few games played, both margins and opponent ratings are unstable, so early SRS and SOS figures can swing sharply week to week.
SRS knows about scoring margin and schedule, not injuries, weather, or a mid-season quarterback change. Use it as a strong baseline, then adjust for context.
Raw records and raw stats quietly reward an easy schedule, so fair comparison requires adjusting for opponent quality. Strength of schedule captures that as average opponent strength, and the Simple Rating System turns it into a clean power number: a team's rating equals its average margin of victory plus its average opponent's rating, solved iteratively so the ratings are self-consistent and average to about zero - a points-above-average figure on a neutral field. DVOA and Elo apply the same instinct to efficiency and results. Just respect the caveats: margin caps, garbage time, and early-season noise all mean SRS is a strong baseline rather than the final word.
Want the code behind these metrics? Work through the 45-chapter NFL analytics tutorial.
Browse tutorials Free tools