Trust starts with
showing the work.
Forecasts are estimates. Every number below describes this published data edition, generated Sep 12, 2026. We report unavailable coverage alongside the results.
Does weekly updating improve the model? Inspect the historical experiment →
What the model learns.
Two ridge regressions predict home scoring margin and combined points from team identities and home field. Team coefficients are penalized to reduce overfitting; recent seasons receive more weight (0.65 per year). Games on neutral fields have no home-field feature.
Training uses 3,227 completed FBS-vs-FBS games across 2022, 2023, 2024, 2025, 2026 whose kickoff precedes the cutoff. Final scores missing from the source are excluded. Known teams receive forecasts; unfamiliar or non-FBS opponents do not.
Cutoff: 2026-09-12T13:29:53.576737Z
Model ID: ridge-team-calibrated-v2-b4a3a7280415
Home win estimates use a logistic curve fitted to 2024 game outcomes. A separate model trained on 2022, 2023 produced those calibration forecasts. The symmetric 80% margin range uses the 80th percentile of their absolute errors: ±23.77 points. Both the probability mapping and range width were frozen before the 2025 test.
The independent test.
For the 2025 test, coefficients were fitted only on 2022, 2023, 2024. The test uses a fixed preseason model for the whole season, with no test-year results fed back into team ratings.
The baseline always predicts the training set’s average home margin. This comparison measures improvement over a simple baseline; it does not demonstrate an advantage over sportsbooks. Probability picks select the home team at 50% or higher; margin picks select it above zero points. Calibration can change the winner pick near an even matchup. Binary metrics exclude tied finals (784 games scored); range coverage uses all 784 test games and the displayed, rounded interval endpoints.
Learn. Calibrate. Test.
2022–2023
Learn score coefficients from completed games before the calibration season.
2024
787 forecasts set the probability curve and range width. 11 unseen-team games excluded.
2025
Refit scores on 2022, 2023, 2024; keep calibration frozen. Evaluate 784 later games.
The production score fit includes eligible completed games through its current cutoff. These results describe a retrospective preseason test, using source data that may contain later corrections. They do not measure the performance of forecasts published before those games.
Download calibration and test evidence ↗ includes every scored game, excluded game IDs, training IDs, fitted coefficients, source receipts and the model implementation hash.
Earlier v1 forecasts remain in the research ledger. Publishing v2 does not replace a game’s earliest eligible registration.
Does the efficiency correction travel?
This independent experiment adds lagged EPA per play and yards per play to the published score-only margin. Each test season is scored by a correction fitted only on earlier transition seasons. It remains a research comparison: the primary forecast, probability, interval and ledger are unchanged.
| Test season | Training transitions | Games | Primary MAE | Challenger MAE | Improvement |
|---|---|---|---|---|---|
| 2023 | 2022 | 770 | 14.10 | 13.94 | +0.16 pts |
| 2024 | 2022, 2023 | 787 | 14.48 | 14.59 | -0.12 pts |
| 2025 | 2022, 2023, 2024 | 784 | 14.29 | 14.35 | -0.06 pts |
The current production scenario uses all eligible historical transition rows through 2025. Sparse or unknown teams shrink toward the league prior; no injuries, roster moves, weather or market prices enter this challenger.
Does 70% behave like 70%?
Each point groups home win estimates into a ten-percentage-point band. The diagonal marks agreement between average forecasts and observed home wins. Small groups offer limited evidence; counts appear alongside every band. Empty bands remain unavailable.
Brier score averages squared probability error; log loss penalizes confident misses more heavily. Both measure overall probabilistic performance, not calibration alone. Prior-season calibration does not guarantee future accuracy.
The numbers behind the curve
| Home win band | Games | Predicted | Observed |
|---|---|---|---|
| 0–10% | 0 | — | — |
| 10–20% | 2 | 14.8% | 0.0% |
| 20–30% | 25 | 26.0% | 16.0% |
| 30–40% | 78 | 35.7% | 29.5% |
| 40–50% | 104 | 45.7% | 51.9% |
| 50–60% | 190 | 55.0% | 52.1% |
| 60–70% | 193 | 64.8% | 71.0% |
| 70–80% | 137 | 74.4% | 72.3% |
| 80–90% | 49 | 84.4% | 89.8% |
| 90–100% | 6 | 91.0% | 100.0% |
Collected. Missing. Uncertain.
The data we have
Box-score coverage is not a complete roster census. Some source columns remain generically named; those fields are preserved without guessed labels. Defensive and specialist records without stable player IDs are retained separately and are not joined by name alone.
What is not in the model
No injuries, depth charts, recruiting or transfers in model features.
Team identity, home field and historical scores only; preseason roster changes can be material.
Unseen teams and non-FBS opponents receive no prediction.
A prior-season 80th-percentile absolute error sets the symmetric margin range; its nominal level is not a future guarantee.
Calibration and fixed preseason evaluation are retrospective; production may include completed current-season games.
Historical results may include source corrections published after games.
The independent 2026–27 basketball efficiency model is available in the basketball model notebook. Dated school recruiting announcements and historical program changes are available as separate evidence; they are not football model inputs.
Markets need a clock.
Imported lines are archival references. The archive does not provide a verified bookmaker timestamp or distinguish a closing quote. An observation made after kickoff never enters a pregame comparison. Historical forecasts and line observations are retained in D1 so future evaluation can use what was actually available before each game.
Home spread uses sportsbook convention: a negative number means the home team is favored. The model’s home margin uses the opposite convention: positive means a home win. Their difference is model home margin + market home spread. This is a disagreement in points, not a recommendation.
Follow every number back.
Bulk datasets: SportsDataverse, whose README labels data CC BY 4.0. Original providers include ESPN and CollegeFootballData. We normalize rows, derive rankings and train our own score model. No direct NCAA or ESPN crawling is enabled in the football pipeline. NCAA robots.txt disallows crawling; ESPN terms restrict automated extraction. Publisher licenses do not independently establish every upstream right.
| Dataset | Season | Retrieved | SHA-256 prefix | Receipt |
|---|---|---|---|---|
| box | 2010 | Sep 11, 2026 | a035f903a263 | Source download ↗ |
| defense | 2010 | Sep 11, 2026 | 1e52b1fccc03 | Source download ↗ |
| passing | 2010 | Sep 11, 2026 | 8b3f5e10456b | Source download ↗ |
| receiving | 2010 | Sep 11, 2026 | 3a963155dcaa | Source download ↗ |
| rushing | 2010 | Sep 11, 2026 | 0feababb7c64 | Source download ↗ |
| schedule | 2010 | Sep 11, 2026 | ce53646347ed | Source download ↗ |
| specialists | 2010 | Sep 11, 2026 | 11b29e9cbd08 | Source download ↗ |
| teams | 2010 | Sep 11, 2026 | ae8b84ed459f | Source download ↗ |
| box | 2011 | Sep 11, 2026 | c11993749ea7 | Source download ↗ |
| defense | 2011 | Sep 11, 2026 | bf1d5fb258fe | Source download ↗ |
| passing | 2011 | Sep 11, 2026 | 10a0df8dfa0f | Source download ↗ |
| receiving | 2011 | Sep 11, 2026 | 2c6268de4400 | Source download ↗ |
| rushing | 2011 | Sep 11, 2026 | 69e9a56a7789 | Source download ↗ |
| schedule | 2011 | Sep 11, 2026 | 681588195bd0 | Source download ↗ |
| specialists | 2011 | Sep 11, 2026 | e5590e14378a | Source download ↗ |
| teams | 2011 | Sep 11, 2026 | acb2e1bb27a8 | Source download ↗ |
| box | 2012 | Sep 11, 2026 | ca3f504d6c39 | Source download ↗ |
| defense | 2012 | Sep 11, 2026 | efa681c8332d | Source download ↗ |
| passing | 2012 | Sep 11, 2026 | 151075293821 | Source download ↗ |
| receiving | 2012 | Sep 11, 2026 | e49d364e63bb | Source download ↗ |
| rushing | 2012 | Sep 11, 2026 | e21811066fee | Source download ↗ |
| schedule | 2012 | Sep 11, 2026 | 6dfe898e93e4 | Source download ↗ |
| specialists | 2012 | Sep 11, 2026 | 582dfe0313bb | Source download ↗ |
| teams | 2012 | Sep 11, 2026 | ae5f12227b99 | Source download ↗ |
| box | 2013 | Sep 11, 2026 | f760689626a6 | Source download ↗ |
| defense | 2013 | Sep 11, 2026 | 73f6982f958e | Source download ↗ |
| ncaa_player_stats | 2013 | Sep 11, 2026 | f795f5440d72 | Source download ↗ |
| passing | 2013 | Sep 11, 2026 | d1ec27f4a76a | Source download ↗ |
| receiving | 2013 | Sep 11, 2026 | b11c01084153 | Source download ↗ |
| rushing | 2013 | Sep 11, 2026 | da86b9edbbed | Source download ↗ |
| schedule | 2013 | Sep 11, 2026 | 1a82742b3495 | Source download ↗ |
| specialists | 2013 | Sep 11, 2026 | 8251d37fe82c | Source download ↗ |
| teams | 2013 | Sep 11, 2026 | 1f0ab563418a | Source download ↗ |
| box | 2014 | Sep 11, 2026 | c044a9c1710a | Source download ↗ |
| defense | 2014 | Sep 11, 2026 | 6020fa056de2 | Source download ↗ |
| ncaa_player_stats | 2014 | Sep 11, 2026 | 2dfc4f7114b2 | Source download ↗ |
| passing | 2014 | Sep 11, 2026 | ecdfeba01634 | Source download ↗ |
| receiving | 2014 | Sep 11, 2026 | 6bf942e23e04 | Source download ↗ |
| rushing | 2014 | Sep 11, 2026 | 8f50d4f3b9c8 | Source download ↗ |
| schedule | 2014 | Sep 11, 2026 | 9ca2a1347643 | Source download ↗ |
| specialists | 2014 | Sep 11, 2026 | 3014a01d9c3e | Source download ↗ |
| teams | 2014 | Sep 11, 2026 | 3912df0dc4fb | Source download ↗ |
| box | 2015 | Sep 11, 2026 | 2df2ff2233b9 | Source download ↗ |
| defense | 2015 | Sep 11, 2026 | f6bbeeb5fd5d | Source download ↗ |
| ncaa_player_stats | 2015 | Sep 11, 2026 | ec3b380df63f | Source download ↗ |
| passing | 2015 | Sep 11, 2026 | 4ef4c596289e | Source download ↗ |
| receiving | 2015 | Sep 11, 2026 | cfa1a99ee26b | Source download ↗ |
| rushing | 2015 | Sep 11, 2026 | 8531d44fca6f | Source download ↗ |
| schedule | 2015 | Sep 11, 2026 | f516f74cab8a | Source download ↗ |
| specialists | 2015 | Sep 11, 2026 | 826b0b8b2ff6 | Source download ↗ |
| teams | 2015 | Sep 11, 2026 | e59d56292f7a | Source download ↗ |
| box | 2016 | Sep 11, 2026 | 665294cc95f8 | Source download ↗ |
| defense | 2016 | Sep 11, 2026 | c1ef7b895f93 | Source download ↗ |
| ncaa_player_stats | 2016 | Sep 11, 2026 | c0965f5ee223 | Source download ↗ |
| passing | 2016 | Sep 11, 2026 | cdc22a99d92c | Source download ↗ |
| receiving | 2016 | Sep 11, 2026 | fc338dfc2232 | Source download ↗ |
| rushing | 2016 | Sep 11, 2026 | 208b2da7de87 | Source download ↗ |
| schedule | 2016 | Sep 11, 2026 | bb9b0e6524ef | Source download ↗ |
| specialists | 2016 | Sep 11, 2026 | e9d75ca8dac5 | Source download ↗ |
| teams | 2016 | Sep 11, 2026 | 4f44f639eff2 | Source download ↗ |
| box | 2017 | Sep 11, 2026 | 56119ada8d60 | Source download ↗ |
| defense | 2017 | Sep 11, 2026 | a2619bcc0a36 | Source download ↗ |
| ncaa_player_stats | 2017 | Sep 11, 2026 | a79741b62f3d | Source download ↗ |
| passing | 2017 | Sep 11, 2026 | d7e879423c0b | Source download ↗ |
| receiving | 2017 | Sep 11, 2026 | 89538e922fb3 | Source download ↗ |
| rushing | 2017 | Sep 11, 2026 | 7c517e433ad1 | Source download ↗ |
| schedule | 2017 | Sep 11, 2026 | ca3bb8dfac84 | Source download ↗ |
| specialists | 2017 | Sep 11, 2026 | faab1c4b9e5f | Source download ↗ |
| teams | 2017 | Sep 11, 2026 | d5ef58f0cf1e | Source download ↗ |
| box | 2018 | Sep 8, 2026 | 0383f977b113 | Source download ↗ |
| defense | 2018 | Sep 8, 2026 | 41e125d92777 | Source download ↗ |
| ncaa_player_stats | 2018 | Sep 11, 2026 | 842a4c69fa6b | Source download ↗ |
| passing | 2018 | Sep 8, 2026 | 0fe66bf632e0 | Source download ↗ |
| receiving | 2018 | Sep 8, 2026 | e94b1049c828 | Source download ↗ |
| rushing | 2018 | Sep 8, 2026 | 616751892307 | Source download ↗ |
| schedule | 2018 | Sep 8, 2026 | c9e846f9314e | Source download ↗ |
| specialists | 2018 | Sep 8, 2026 | 6b95ae4f0ba2 | Source download ↗ |
| teams | 2018 | Sep 8, 2026 | 4fc168c0dda8 | Source download ↗ |
| box | 2019 | Sep 8, 2026 | f63eb5c582c8 | Source download ↗ |
| defense | 2019 | Sep 8, 2026 | eab61b4c0c1c | Source download ↗ |
| ncaa_player_stats | 2019 | Sep 11, 2026 | 8b407b9b70ef | Source download ↗ |
| passing | 2019 | Sep 8, 2026 | ae8fd7615b35 | Source download ↗ |
| receiving | 2019 | Sep 8, 2026 | 4c02590d9702 | Source download ↗ |
| rushing | 2019 | Sep 8, 2026 | 194591af1680 | Source download ↗ |
| schedule | 2019 | Sep 8, 2026 | bcc2c21cdf89 | Source download ↗ |
| specialists | 2019 | Sep 8, 2026 | ff357d83db83 | Source download ↗ |
| teams | 2019 | Sep 8, 2026 | 2cdcd8b790b3 | Source download ↗ |
| box | 2020 | Sep 8, 2026 | 9c98b685804e | Source download ↗ |
| defense | 2020 | Sep 8, 2026 | ccee98179024 | Source download ↗ |
| ncaa_player_stats | 2020 | Sep 11, 2026 | 768646c01690 | Source download ↗ |
| passing | 2020 | Sep 8, 2026 | 00eb365e0230 | Source download ↗ |
| receiving | 2020 | Sep 8, 2026 | 68984f6075c9 | Source download ↗ |
| rushing | 2020 | Sep 8, 2026 | 8d77218fe666 | Source download ↗ |
| schedule | 2020 | Sep 8, 2026 | 2e53612e441d | Source download ↗ |
| specialists | 2020 | Sep 8, 2026 | 7df571fd3f83 | Source download ↗ |
| team_advanced | 2020 | Sep 10, 2026 | 648e49f99b12 | Source download ↗ |
| teams | 2020 | Sep 8, 2026 | 245f0668a577 | Source download ↗ |
| box | 2021 | Sep 8, 2026 | 694ce16d5985 | Source download ↗ |
| defense | 2021 | Sep 8, 2026 | 09a870709879 | Source download ↗ |
| ncaa_player_stats | 2021 | Sep 11, 2026 | 7acd5bb75d3a | Source download ↗ |
| passing | 2021 | Sep 8, 2026 | 6a073ded3977 | Source download ↗ |
| receiving | 2021 | Sep 8, 2026 | 99ca5b91f02e | Source download ↗ |
| rushing | 2021 | Sep 8, 2026 | de72f9dc70a4 | Source download ↗ |
| schedule | 2021 | Sep 8, 2026 | 31479d0cf026 | Source download ↗ |
| specialists | 2021 | Sep 8, 2026 | 1f18e9a20a01 | Source download ↗ |
| team_advanced | 2021 | Sep 10, 2026 | fad3dbf29c32 | Source download ↗ |
| teams | 2021 | Sep 8, 2026 | 2a84aeab110a | Source download ↗ |
| box | 2022 | Sep 5, 2026 | 030753a3384f | Source download ↗ |
| defense | 2022 | Sep 5, 2026 | cc2386720f80 | Source download ↗ |
| ncaa_player_stats | 2022 | Sep 11, 2026 | 1388e153702e | Source download ↗ |
| passing | 2022 | Sep 5, 2026 | b54cc58cbdcf | Source download ↗ |
| receiving | 2022 | Sep 5, 2026 | f5c4a7875d0c | Source download ↗ |
| rushing | 2022 | Sep 5, 2026 | f848da1c2865 | Source download ↗ |
| schedule | 2022 | Sep 9, 2026 | 876f432b4e5f | Source download ↗ |
| specialists | 2022 | Sep 5, 2026 | faa1b7c6044f | Source download ↗ |
| team_advanced | 2022 | Sep 9, 2026 | 9c17e442ba3f | Source download ↗ |
| teams | 2022 | Sep 5, 2026 | f2df16ad081c | Source download ↗ |
| box | 2023 | Sep 5, 2026 | 5c3a68ddeb3e | Source download ↗ |
| defense | 2023 | Sep 5, 2026 | 0071a29fdbb7 | Source download ↗ |
| ncaa_player_stats | 2023 | Sep 11, 2026 | a757a040aa7d | Source download ↗ |
| passing | 2023 | Sep 5, 2026 | 24cb9d07fdf1 | Source download ↗ |
| receiving | 2023 | Sep 5, 2026 | 8a4c0afccba4 | Source download ↗ |
| rushing | 2023 | Sep 5, 2026 | 5bf792570aa6 | Source download ↗ |
| schedule | 2023 | Sep 9, 2026 | 9ca9c60866b0 | Source download ↗ |
| specialists | 2023 | Sep 5, 2026 | ff4721bbd61e | Source download ↗ |
| team_advanced | 2023 | Sep 9, 2026 | 7b97a24ba7f4 | Source download ↗ |
| teams | 2023 | Sep 5, 2026 | dfd6f69fd5f3 | Source download ↗ |
| box | 2024 | Sep 5, 2026 | cf60c00377c7 | Source download ↗ |
| defense | 2024 | Sep 5, 2026 | a81d66ae63f6 | Source download ↗ |
| ncaa_player_stats | 2024 | Sep 11, 2026 | a938556d7eb1 | Source download ↗ |
| passing | 2024 | Sep 5, 2026 | 643a1b1a3289 | Source download ↗ |
| receiving | 2024 | Sep 5, 2026 | 04e447228bba | Source download ↗ |
| rushing | 2024 | Sep 5, 2026 | b8d67d32720c | Source download ↗ |
| schedule | 2024 | Sep 9, 2026 | 73a60382c1dc | Source download ↗ |
| specialists | 2024 | Sep 5, 2026 | 75f52b1ea4a5 | Source download ↗ |
| team_advanced | 2024 | Sep 9, 2026 | 26728558bf04 | Source download ↗ |
| teams | 2024 | Sep 5, 2026 | e7a355a6201d | Source download ↗ |
| betting | 2025 | Sep 9, 2026 | e9cc18f93957 | Source download ↗ |
| box | 2025 | Sep 9, 2026 | 0f41a1ce9cb7 | Source download ↗ |
| defense | 2025 | Sep 9, 2026 | efe717a8d4c0 | Source download ↗ |
| ncaa_player_stats | 2025 | Sep 11, 2026 | a8c702182175 | Source download ↗ |
| passing | 2025 | Sep 9, 2026 | b8dab38e8485 | Source download ↗ |
| receiving | 2025 | Sep 9, 2026 | 302c53ac4c23 | Source download ↗ |
| recruits | 2025 | Sep 11, 2026 | 908a79237a7c | Source download ↗ |
| returning_production | 2025 | Sep 11, 2026 | 2fbc4491c91e | Source download ↗ |
| rosters | 2025 | Sep 11, 2026 | e3253fafc7a0 | Source download ↗ |
| rushing | 2025 | Sep 9, 2026 | c4ed1fb90a29 | Source download ↗ |
| schedule | 2025 | Sep 9, 2026 | bc8fb0df43bf | Source download ↗ |
| specialists | 2025 | Sep 9, 2026 | 24fdf274add7 | Source download ↗ |
| team_advanced | 2025 | Sep 9, 2026 | 63d100ace111 | Source download ↗ |
| team_talent | 2025 | Sep 11, 2026 | 10cc3151e030 | Source download ↗ |
| teams | 2025 | Sep 5, 2026 | 5446f91a8a0d | Source download ↗ |
| betting | 2026 | Sep 12, 2026 | 7bf0c41f6d8c | Source download ↗ |
| box | 2026 | Sep 12, 2026 | 7aed1bf266be | Source download ↗ |
| defense | 2026 | Sep 12, 2026 | 6115ba861c40 | Source download ↗ |
| passing | 2026 | Sep 12, 2026 | 6b2c6724e708 | Source download ↗ |
| receiving | 2026 | Sep 12, 2026 | 9982e1474b81 | Source download ↗ |
| recruits | 2026 | Sep 11, 2026 | e0e7f3eb5482 | Source download ↗ |
| returning_production | 2026 | Sep 12, 2026 | 101df245b9d7 | Source download ↗ |
| rosters | 2026 | Sep 12, 2026 | e95b631c5805 | Source download ↗ |
| rushing | 2026 | Sep 12, 2026 | b8fd6f878461 | Source download ↗ |
| schedule | 2026 | Sep 12, 2026 | 5b6f62a42001 | Source download ↗ |
| specialists | 2026 | Sep 12, 2026 | 2082cf96972c | Source download ↗ |
| team_advanced | 2026 | Sep 12, 2026 | debe1ef4fbb0 | Source download ↗ |
| team_talent | 2026 | Sep 11, 2026 | 215c688eb881 | Source download ↗ |
| teams | 2026 | Sep 5, 2026 | 6d3ec4bd2629 | Source download ↗ |