How the ranking is calculated

Every number below is read live from the ranking engine, so this page always matches what the site actually ran.

Step 1 · Team quality

Before any game can be scored, we need a measure of how good a team is — because beating a good team should be worth more than beating a bad one. Quality is built from three levels of win ratio: yours, your opponents', and your opponents' opponents'.

// each ratio is wins ÷ games played WR = your wins ÷ your games OppWR = all opponents' wins ÷ all opponents' games OppOppWR = all opponents' opponents' wins ÷ their games quality = round( min( cap, WR × min(OppWR, WR) × min(OppOppWR, min(OppWR, WR)) ), precision ) × multiplier
Each level is capped by the one above it. A team never receives credit for opponents rated higher than itself — if you are a .500 team, your schedule strength counts as at most .500 no matter who you played. This keeps a weak team with a brutal schedule from climbing on strength of schedule alone.

Wherever quality is used afterwards it is clamped to the range 0–1.

Step 2 · What each game contributes

Every completed game adds a number to the team’s account, built from two things: how far ahead it finished on the scoreboard, and how far ahead on yards.

PieceHow it is measuredWeight
Point term
the scoreline
points scored − points allowed, capped at 35, divided by 70 0.20
Yard term
who moved the ball
yards gained − yards allowed, divided by 300 0.20
game contribution = wP × (capped point margin ÷ 70) + wY × (yard margin ÷ 300)

Step 3 · The rating

The record chain and the game contributions are combined. Contributions are averaged, not totalled, so a team that has played more games gains nothing from it.

Pts / Game = wR × R + average of the game contributions

Teams are sorted by that number, highest first. Ties break on win ratio, then alphabetically. Only completed regular-season games count.

Why these three. Tested walk-forward — rebuilding the rating from games played before each week, then predicting that week — over about 1,700 games in 2024 and 2025. Record, points and yards together pick the winner around 69% of the time against 67% for the previous formula. Each part earns its place: dropping the yard term costs roughly a point of accuracy, and the record chain on its own manages only 62%, so it needs the margin terms beside it.
The weights are a judgement, not just a fit. Pure accuracy prefers 0.4 / 0.3 / 0.3, but leaning that hard on margin and yards lets a team that plays well and loses close games climb past teams that actually beat it. Record is given the larger share to keep results in front of style.
Nothing predicted goes into this number. It is built from games that have actually been played, and it is what the ranking, the seeding and the bracket all rest on. The season forecast in step 6 sits in its own column and changes no team’s position.

Step 4 · The playoff field

The top of the ranking is turned into a bracket.

Step 5 · Projected spread

The gap between two teams' averages, converted back to points on the scoreboard.

spread = (your average − their average) × 70 × 1 + home advantage (4), except at neutral sites rounded to the nearest 0.5

Quoted from a team's own perspective, betting-style: negative means favoured. In the expanded schedule the bracketed number beside it is the sportsbook line for an upcoming game, or the actual result for one already played — both on the same scale, so they read against each other directly.

The same 70 that scales margin in step 2 is what converts a ratings gap back into points here. A projection on a game already played is retrodictive — the ratings it uses already contain that result.

Step 6 · Projected scores and records

An unplayed game gets a projected score, and a team gets the record it would finish with if every remaining game went to the projected favourite.

total = (our points-for + their points-against) ÷ 2 + (their points-for + our points-against) ÷ 2 score = (total ± projected margin) ÷ 2

Two models, each doing what it is better at: scoring averages set the total, the ratings spread sets the margin. Projected scores appear in italics in the schedule so they never read as results.

How accurate is this? Tested by rebuilding the ratings week by week across 2023–25 — using only games played before each week — over 1,972 games: the total lands within 12.9 points on average, which is effectively level with the betting market’s over/under (11.83 against 11.77 on the games that had one). Game totals are simply hard to call. The margin is the weaker half, at 13.9 points, and it picks the winner about 66% of the time — so a projected record is a reasonable expectation, not a forecast.

A non-FBS opponent has no ranking of its own, so one is stood in for it — back-solved from that team’s games against ranked opposition, and pulled toward a typical FCS rating in proportion to how little is known. Most FCS teams play a single FBS game a year, and one result is mostly noise: leaning on it alone predicts those games worse (13.8 points of error) than ignoring it and using the typical rating (13.0). Blending the two does best, at 12.8.

Where the forecast appears — and where it does not

Every remaining game is also scored the same way a real one is, giving a season-long Proj. Pts / Game: the average a team would finish on if the rest of the schedule went to form. It has its own column, in italics, beside the real one.

The forecast never affects the ranking. It is derived from the very ratings it would be reordering, so letting it set positions would rest a team’s standing on guesses about itself — and those guesses pick the right winner about two thirds of the time. Early in a season most of a team’s schedule is still unplayed, so a blended number would be mostly forecast while looking like a result. Ranking stays on Pts / Game; the forecast is there to read, not to rank.

A worked example

Loading a real game from the current season…

Current settings

These are the live values the engine is using right now.

SettingValue
Loading…