The Model
Backtest: 2024 and 2025 seasons, 5A/4A games from week 4 on (508 games), ratings refit each week using only earlier games. Always-home baseline MAE 25.0; last season's final ratings with no updates 15.1. By the higher class in the game: 5A 11.85 MAE / 80% SU / SD 14.9 (251) · 4A 12.33 MAE / 83% SU / SD 15.4 (257) · 3A 13.29 MAE / 82% SU / SD 17.2 (230) · 2A 13.30 MAE / 85% SU / SD 16.3 (304) · 1A 13.46 MAE / 85% SU / SD 16.7 (310) · A 13.47 MAE / 88% SU / SD 16.5 (337). Win probability uses the SD for the game's class.
2026 so far
| Week | Games | SU | Fav ATS | O/U | MAE | BC MAE | Closer (us–BC) |
|---|---|---|---|---|---|---|---|
| 1 | 42 | 69% | 23-18-1 | 10-31-1 | 17.8 | — | — |
| 2 | 39 | 72% | 19-18-2 | 16-22-1 | 15.4 | — | — |
Lines are what the model published before each week (walk-forward). Brent's lines are captured from his report Thursday and Friday mornings; weeks before the capture started have no comparison.
Head to head vs BCMoore · backtest
Brent Moore publishes a line for every game each week and the archives keep them. Same games, scored the same way. His line is never an input to ours.
| Season | Games | MAE ours | MAE BCMoore | SU ours | SU BCMoore |
|---|---|---|---|---|---|
| 2024 | 251 | 12.17 | 13.22 | 78% | 80% |
| 2025 | 253 | 12.10 | 13.38 | 84% | 85% |
| Combined | 504 | 12.14 | 13.30 | 81% | 83% |
Class strength
Every class is rated in one pool, so the gap between class averages is in points: what an average team in one class would be favored by over an average team in another on a neutral field.
Spread
One power rating per team, every Iowa team in one pool, solved by weighted least squares on margin = HFA + Rhome − Raway. Every 4A and 5A team plays 3A opponents, and those opponents' other games are what pin the ratings down.
| Margin transform | uncapped |
| Home field | flat 1.0 |
| Recency weight | 1.00 |
| Prior regression a | 0.76 |
| Prior weight W₀ | 3 games |
| Neutral sites | 6 |
Totals
One tempo rating per team fitted on game totals: total = c + thome + taway. Offense and defense are derived from rating and tempo — O = (R + t)/2, D = (R − t)/2 — so the line, the total and the split can never disagree.
| League-average total | 53.3 |
| Winsorize scores at | 56 |
| Recency weight | 0.90 |
| Tempo prior a | 0.26 |
| Tempo prior W₀ | 8 games |
| Total residual SD | 15.3 |
Data: every Iowa result 2022–2026 from Brent Moore's Iowa Scores Project (IHSAA). Forfeits, cancellations and out-of-state opponents are dropped; shared venues are detected from the data. Knobs are re-tuned each offseason; the MAE trail for each is in lib/model/config.ts.