Skip to main content
Home

Methodology & track record

Every number below is out of sample. The model was tuned on the 2016, 2017, 2018, 2019, 2021, 2022 seasons and then run, frozen, over 2023–2025: each game was projected using only games played in earlier weeks, the way the site would have shown it before kickoff. We publish the misses with the hits, and we compare against the pregame market line so you can see where the model stands. Win probabilities are calibrated estimates, never certainties.

Held-out accuracy, 2023–2025

All Division I games with a final score, including FCS matchups. Margin MAE is the average miss on the final margin in points; Brier score and log loss grade the win probabilities (lower is better; always saying 50% scores 0.25 and 0.693).

SetGamesWinnerMargin MAEBrierLog lossTotal MAE
20231,60274.3%12.930.16920.503113.01
20241,66573.6%12.810.17290.512112.91
20251,68676.0%12.780.16150.485312.65
All 2023–20254,95374.6%12.840.16780.500112.85
Previous model (as deployed)4,95371.8%14.110.18070.536813.11
Previous model (best settings)4,95373.7%13.410.17090.508712.98

By part of the season

SetGamesWinnerMargin MAEBrierLog lossTotal MAE
weeks 1-31,33877.1%13.910.14710.440612.87
weeks 4-81,66773.7%12.750.17720.524812.92
weeks 9+1,94873.8%12.170.17400.519812.78
FBS v FBS2,39871.7%12.430.18140.535012.87
FBS v FCS36596.2%12.790.03640.141812.26
FCS v FCS2,19074.3%13.300.17490.521512.93
neutral23360.5%12.560.23100.652613.21

Are the probabilities honest?

Calibration groups every held-out game by how likely we said the favorite was to win, then checks how often it actually did. A well-calibrated model's 70% favorites win about 70% of the time.

Favorite's win probabilityGamesPredictedActually won
50–60%1,10155.0%55.3%
60–70%1,08165.0%66.5%
70–80%99474.9%74.8%
80–90%83384.9%85.7%
90–100%94495.2%96.5%

Against the market line

The pregame point spread and total (the last line recorded by the odds feed before kickoff, at or near the close) are the toughest benchmark in sports forecasting: they fold in injuries, weather and a whole market's information. On the 4,589 held-out games with a recorded line, our average margin miss was 12.50 points against 11.94 for the line, and we picked the winner 74.4% of the time against the line favorite's 75.5%. On totals we missed by 12.81 points against 12.60. In plain terms: the market line is more accurate than we are, as it is for almost every public model. Where our number and the line disagreed, the final margin landed on our side of the line in 51.7% of 4,074 games — close to a coin flip, so read nothing into those disagreements. The correlation between our margin and the line is 0.94. These numbers are here for transparency only.

Model, market and blended projection

The blended projection combines our margin with the market margin using weights fitted on the training seasons only (0.17 x ours + 0.83 x market). All three are scored on the same 4,580 held-out games that had a line.

SetGamesWinnerMargin MAEBrierLog lossTotal MAE
Our model only4,58074.3%12.510.16880.502512.81
Market only4,58075.3%11.950.16230.486012.60
Blended projection4,58075.5%11.960.16200.485212.60

This season

Graded results appear after the first game day.

How the model works

  1. Play-by-play efficiency. Every snap of every FBS game is reduced to expected points added (EPA), success rate, explosiveness, havoc, finishing drives, field position and pace, with garbage time removed (a lead over 38 points in the second quarter, 28 in the third or 22 in the fourth).
  2. Opponent adjustment. For points, EPA per play and success rate, every team gets an offense and a defense number from a ridge regression: what each unit produced once the quality of the opponent and home field are accounted for. Lower-division (FCS) teams sit on their own scale, measured from their games against FBS opponents.
  3. Preseason priors. Before a season starts, each team's numbers sit on a prior built from the last two seasons, returning production (the share of last year's offense and defense that is back), the roster talent composite, this year's recruiting class and whether the head coach changed. Each game played pulls the ratings away from the prior, so September leans on history and November on this season.
  4. Margin, total and win probability. A linear model fitted on the training seasons turns the rating gaps (plus home field, rest and division) into a projected margin and total. Win probability comes from a normal curve whose width was fitted for honest probabilities, and is wider early in the season when less is known.
  5. Matchup terms (added October 2026). Three terms sit on top of the rating gaps, each with a fixed, documented weight (points per standard deviation); the rest of the model is refitted around them. Pace x passing / explosiveness on the total: when both teams' combined pace and their combined passing efficiency (or explosive-play rate) point the same way, the total moves further out than the two would add up to: up for a fast game between leaky pass defenses, down for a slow game between stingy ones (weights 1.5 and 1.0). Trench mismatch on the margin: sack rate vs sacks allowed, run-defense stuff rate and rushing EPA vs the run game, combined into one line-of-scrimmage edge plus a signed square of it, so a lopsided mismatch moves the margin more than a small one (weights 1.5 and 1.0). Red zone: red-zone touchdown rate and points per scoring opportunity, offense against the defense it faces, on the margin (1.0) and the total (1.0). Their inputs are opponent-adjusted like everything else.
  6. What it does not know. Injuries, suspensions and opt-outs (a manual starting-quarterback toggle exists on matchup pages), and weather beyond a small wind adjustment on totals, which could not be backtested (historical weather needs a paid data tier). On matchup pages that wind term now reads the stored kickoff forecast for the stadium (zero under a dome); its weight is unchanged.

Matchup terms: backtest before and after

Same walk-forward test as above (every game projected only from earlier weeks). Held out: 2023-2025, model fitted on 2016-2022. 2026 to date: fitted on 2016-2025, as the live site is. Lines: DraftKings where recorded.

ChangeMargin MAETotal MAEWinnersBrier
Pace x passing/explosive (totals), held out 4,95312.84 -> 12.8412.84 -> 12.8374.6% -> 74.6%0.1679 -> 0.1679
Trench mismatch (margin), held out 4,95312.84 -> 12.8412.84 -> 12.8474.6% -> 74.7%0.1679 -> 0.1679
Red zone (margin + total), held out 4,95312.84 -> 12.8312.84 -> 12.8674.6% -> 74.6%0.1679 -> 0.1678
All three, held out 4,95312.84 -> 12.8412.84 -> 12.8574.6% -> 74.6%0.1679 -> 0.1678
All three, 2026 to date 93313.77 -> 13.7513.23 -> 13.2177.1% -> 76.6%0.1602 -> 0.1601

Against DraftKings, held-out 2023-2025: the side the model took against the spread covered 51.6% of 2,119 games before and 52.8% of 2,097 after; over/under 51.7% before, 51.1% after. 2026 to date: against the spread 48.3% before, 48.5% after (about 800 games); over/under 49.9% before, 49.7% after. Where the model and the consensus line disagreed by 3 points or more (held out, 2,200 games), the model's side covered 51.3% when it took the road team and 51.5% when it took the home team. Fitted home field stays at 2.1 points.

Stats on game pages. Once a game has kicked off, its page shows both teams' records and season stats exactly as they stood before kickoff (stored for every game, built only from earlier weeks), so a final never shows numbers that include the game itself. Team pages and upcoming games show season-to-date numbers. Per-play numbers for a team with a weak schedule are pulled toward its opponent-adjusted value: not at all for an average or tougher schedule, fully once the schedule is one standard deviation weaker than average.

What we tried earlier and dropped as straight additions: separate run and pass ratings, explosiveness, havoc, finishing drives and field-position ratings each added nothing measurable on top of points, EPA and success rate in cross-validation. Pace, passing, explosiveness, line play and red-zone numbers now enter only through the matchup terms above. Last season's SP+ and FPI ratings and transfer-portal balance also added nothing to the preseason prior once our own ratings were in it; a head-coaching change and the recruiting class did help and are kept.

Player outlook

Every game page has a Player outlook: a projection for each established quarterback, running back and receiver (3+ games, played last game, a real role), and badges for the few whose projection sits far from their own season average. It is analysis of the matchup, not advice.

Data. Player box scores and play-by-play from ESPN's public game summaries (targets, red-zone and third-down touches, sacks per passer come from the play text), collected a few games at a time by our scheduled job and stored, never on a page view. Game weather for the backtest is the recorded observation at the nearest airport station (Iowa Environmental Mesonet archive); on the site it is the kickoff forecast. No snap counts or injury reports are used: neither has a free college source. Availability is read from the logs instead (missed last game, a new starting quarterback, teammates out).

Projection. Volume (attempts, carries, targets per game: 30% last three games, 70% season) x efficiency (yards per attempt, carry or target, catch rate), each shrunk toward the position average so a hot three-game start doesn't look like a season. Then the factors below adjust it. A probability model turns the projection, the player's game-to-game spread and how often he tops his average into the chance he finishes above (or below) that average.

Testing. Everything was fitted on the 2025 season only and then graded on 2026 games it never saw. A badge type stays only if it hit at least 55% on those 2026 games and beat the typical player's rate. The site runs exactly that 2025 fit. Generated 2026-10-24.

Badge records

Badge2026 (unseen)Typical2025 (fit)Shown
🎯 High passing yards31-25 (55%)49%124-66 (65%)Yes
🧊 Low passing yards32-20 (62%)51%62-16 (79%)Yes
🏃 High rushing yards5-6 (45%)36%91-58 (61%)No, too few
🧱 Low rushing yards130-45 (74%)63%177-67 (73%)Yes
🙌 High receiving yards12-11 (52%)36%50-46 (52%)No, too few
🔒 Low receiving yards63-26 (71%)64%105-20 (84%)Yes
🧲 High receptions0-039%0-0No, too few
🪫 Low receptions82-48 (63%)57%110-55 (67%)Yes
📈 Receptions leader25-32 (44%)30%57-81 (41%)No, below 55%
🔥 TD threat57-31 (65%)39%144-67 (68%)Yes

High / Low badges are graded against the player's season average before the game; TD threat on scoring at least once; Receptions leader on leading the game in catches. Games the player sat out are left out. “Typical” is how often the same thing happened for any eligible player: yards are lopsided (a few big games lift the average), so most players finish below their average most weeks, which is why the Low badges start from a higher bar.

Projection error, 2026

StatPlayer-gamesSeason avgOur projection
Pass yds40466.364.3
Rush yds95333.231.7
Rec yds99829.127.4
Catches9981.81.7
TDs16560.60.5

Average miss per player-game (lower is better) on 2026 games: the plain season average vs our projection.

Every factor tested

Effect per unit of each factor measured on its own (2025), with its t-value; ✓ = kept by cross-validated forward selection (it had to cut the error by 0.25%+). Bold = in the model. Factors the site cannot supply at kickoff (humidity, gusts, travel, altitude, line movement) were measured but can't be used. Inputs that only exist for 2026 were measured on 2026 alone.

FactorPass ydsRush ydsRec ydsCatchesTDs
Opponent defense
Pass yards allowed per game+49% t4.1+42% t2.9+34% t2.8+21% t2.4+95% t3.1
Rush yards allowed per game+24% t3.1+90% t7.5 ✓+20% t2.4-3% t-0.5+216% t7.4 ✓
Pass attempts faced per game+25% t1.4+7% t0.4+14% t0.8+22% t1.5-18% t-0.6
Carries faced per game+32% t1.7+124% t4.0+34% t1.6+3% t0.2+406% t4.5
Yards per pass allowed+59% t3.8+63% t3.2+43% t2.7+17% t1.5+224% t4.4
Yards per carry allowed+28% t2.7+116% t6.8+21% t1.9-6% t-0.8+263% t6.4
Sacks per game (pressure)-3% t-0.5-26% t-4.7-5% t-0.9+0% t0.1-39% t-4.3
Explosive plays allowed (20+ pass, 15+ run)+47% t5.3 ✓+57% t5.1+32% t3.6+5% t0.7+137% t5.4
Red-zone plays allowed+22% t2.7+48% t4.4+19% t2.3+9% t1.5+93% t4.2
Points allowed per game+34% t4.5+63% t6.0+31% t3.8+7% t1.2+154% t6.5
Rushing + receiving TDs allowed+29% t4.5+53% t6.0+24% t3.5+6% t1.2+118% t6.1
Takeaways per game-8% t-1.7-12% t-2.3-8% t-1.6+1% t0.2-27% t-3.0
Receiving yards allowed to the player's position+0% t0.2+2% t0.7+32% t3.5 ✓+18% t2.8+51% t3.5
Catches allowed to the player's position+0% t0.1-2% t-0.6+19% t1.8+17% t2.1+24% t1.4
Rush yards allowed to RBs / QBs+6% t2.2+38% t5.2+20% t2.3+0% t0.1+208% t6.8
Schedule-adjusted yards allowed+29% t4.3+45% t7.6+19% t2.7+10% t1.9+76% t6.6
Strength of the defenses the player already faced-7% t-0.4-8% t-0.6-4% t-0.2-5% t-0.3+22% t0.9
Game context
Team pass rate-16% t-1.9-9% t-1.2-13% t-1.5-4% t-0.7+18% t1.0
Pace: plays per game, both teams+10% t0.4+65% t1.8+3% t0.1-4% t-0.2+75% t1.1
Opponent offense pace+13% t0.7-21% t-1.1+12% t0.6+4% t0.3-7% t-0.2
Time of possession-15% t-0.9-12% t-0.6-14% t-0.8-10% t-0.7-25% t-0.8
Turnover margin0% t-0.0-2% t-0.8+1% t0.3+4% t2.0-13% t-2.8
Game script
Projected margin (favored by)+4% t4.1+9% t6.3+5% t4.7+1% t0.9+13% t5.4 ✓
Favored: margin+5% t2.8+7% t3.7+6% t3.1+0% t0.2+15% t4.5
Underdog: margin+9% t4.2+22% t7.3+10% t4.7+2% t1.4+27% t4.6
Blowout risk: favored by 21+ (starters sit)+4% t0.8+10% t1.5+4% t0.6-1% t-0.1+31% t2.7
Underdog by 21+-18% t-2.6-41% t-4.4-20% t-3.1-7% t-1.3-32% t-2.0
Projected total+20% t1.8+12% t0.9+24% t1.9+14% t1.5+2% t0.1
Team's projected points+26% t4.8 ✓+47% t6.5+31% t5.5 ✓+8% t2.2+67% t4.7
Weather
Wind above 10 mph-18% t-2.9 ✓+7% t0.9-11% t-1.5-8% t-1.4-19% t-1.4
Gusts above 20 mph-11% t-2.6+4% t0.8-4% t-1.0-5% t-1.5-6% t-0.7
Rain at kickoff-16% t-3.1 ✓+12% t1.8-6% t-1.1-5% t-1.2-9% t-0.8
Below 45°F-11% t-2.4+6% t1.2+2% t0.3+1% t0.1-4% t-0.4
Above 85°F+5% t0.3-15% t-0.6-19% t-0.9-19% t-1.1-19% t-0.5
Humidity above 75%-19% t-3.5+6% t0.9-20% t-3.2-14% t-2.9-15% t-1.2
Setting
Dome+4% t0.6-4% t-0.6+5% t0.8+2% t0.5+12% t0.9
Artificial turf-1% t-0.6+8% t2.3-3% t-0.9-5% t-2.4+0% t0.0
Home / road+2% t1.2+6% t3.4 ✓0% t-0.00% t-0.1+5% t1.8
Neutral site-2% t-0.5-6% t-0.9+3% t0.5+8% t1.9-13% t-1.2
Visiting a stadium above 1,200 m-11% t-1.5+6% t0.7-10% t-1.3-12% t-2.3+9% t0.6
Travel distance+1% t0.3-6% t-2.0+1% t0.4+1% t0.40% t-0.1
Time zones crossed+1% t0.6-5% t-2.0+1% t0.3+1% t0.5+0% t0.0
Short week (5 days or fewer)n/an/an/an/an/a
Coming off a bye+1% t0.3-3% t-0.9+1% t0.4+3% t1.4-5% t-0.8
Rest days vs the opponent-1% t-0.3+1% t0.3-2% t-0.6+0% t0.1-4% t-0.8
Conference game+1% t0.3+6% t1.5+4% t1.1-1% t-0.3+12% t1.6
Bowl / postseason+1% t0.2-5% t-0.8+4% t0.8+10% t2.2-15% t-1.4
Market
Total line movement (open to close)+4% t1.40% t-0.0+3% t0.9+2% t0.8-2% t-0.4
Spread movement toward the team-3% t-1.2+5% t1.6+2% t0.8+2% t0.8-2% t-0.4
Usage and form
Last 3 games vs season+17% t2.0+4% t0.8+6% t1.4-8% t-1.5+5% t0.3
Target share-3% t-0.0+2% t0.1-11% t-0.5+1% t0.1+23% t0.7
Carry share+8% t0.5+14% t0.8-16% t-0.6-30% t-2.1-17% t-1.2
Red-zone share+14% t0.9+32% t1.8-15% t-0.7-19% t-1.1-49% t-2.8
Third-down usage+9% t1.2+16% t1.7-19% t-1.9-4% t-0.5-2% t-0.1
Yards per attempt / carry / target (air-yards proxy)-6% t-0.5-9% t-1.6-5% t-0.4-15% t-1.1-23% t-4.8
Quarterback
Completion %0% t-0.0+2% t1.4+0% t0.1+1% t1.4+2% t0.5
Sacks taken per dropback-2% t-0.5+10% t1.80% t-0.10% t-0.0-5% t-0.8
QB carries (scrambles and designed runs)+2% t0.8+6% t1.6n/an/an/a
Availability
Backup or new starter at QB+22% t3.4 ✓+7% t1.4-7% t-1.8-5% t-1.7+4% t0.5
Games played (sample size)-13% t-2.7 ✓+20% t2.8+8% t1.4+11% t2.3+14% t1.1
Share of team games missed+22% t1.9-15% t-1.1-23% t-2.2-21% t-2.6+2% t0.1
Teammates who sat out last game (usage shift)+4% t0.4+12% t1.0+3% t0.3+4% t0.5+28% t1.2
Existing signals (2026 only)
Our total minus the book's totaln/an/an/an/an/a
“Leans high scoring” chipn/an/an/an/an/a
“Leans low scoring” chipn/an/an/an/an/a
“Blowout brewing” chipn/an/an/an/an/a
Over minus under pattern / study / combo pillsn/an/an/an/an/a

In the model now: Pass yds: Explosive plays allowed (20+ pass, 15+ run), Backup or new starter at QB, Rain at kickoff, Team's projected points, Wind above 10 mph, Games played (sample size) · Rush yds: Rush yards allowed per game, Home / road · Rec yds: Team's projected points, Receiving yards allowed to the player's position · Catches: base only · TDs: Rush yards allowed per game, Projected margin (favored by). Not testable with free data: snap share, injury reports and depth charts (ESPN's college feeds return none), rivalry games (no maintained free list). Existing card tags, patterns and combos were frozen only from week 7 of 2026, too few games to fit.

Elite conditions: 🔥 💎 ⭐

A search over past seasons looks for pregame conditions (game and player) that kept hitting. Every candidate must clear a shuffled-results baseline (sample sizes where luck alone rarely produces such a record) and beat what the line or the stat's base rate already implies. Then it is checked on later games the search never saw.

The untouched 2026 record is shown on every pill. Records only, not advice.

Data sources

Full technical notes live with the code. See also the scorecard and the power ratings.

Projections are statistical estimates for entertainment and analysis only. They are not betting advice and nothing here guarantees any result.