Vols Data Lab
Opponent-adjusted ratings for every FBS team, and the math that produces them. Built for the people who want the number and the formula. 🍊
Before trusting any of it — how often is this model actually right?
Detected automatically
What the numbers say this week
Found by scanning the ratings, not written by hand. Every line shows the figures behind it.
Tennessee's offense is 66 places ahead of its defense
Offense ranks 8th and defense 74th of 136. Both are opponent-adjusted, so this is not a schedule artifact.
- Offense +13.2 (8th)
- Defense -1.3 (74th)
Texas A&M Aggies is the toughest opponent left on the schedule
Ranked 10th of 136, on the road in week 11.
- Texas A&M Aggies +13.3
- 11-2
- Week 11
Tennessee is 29th of 136 in opponent-adjusted rating
A +7.8 rating means about 7.8 points better than an average FBS team on a neutral field.
- Rating +7.8
- Record 8-5
- 13 games counted
The whole conference, in space
Every rated FBS team placed by offense, defense and the schedule that produced them. Tennessee is white; the teams on our schedule are orange.
Plotting 136 teams…
Tennessee · 2025 season
#29 of 136 FBS
Rating
+7.8
pts vs avg FBS
Record
8-5
13 games
Sched. strength
+0.4
#53 toughest
Raw margin
+10.9
unadjusted
The gap between the raw margin and the rating is the competition adjustment — what Tennessee's schedule was actually worth.
Team ratings
136 FBS teams · 933 games · solver converged in 21 iterations
| Team | |||||||
|---|---|---|---|---|---|---|---|
| 1 | 16-0 | +24.3 | +18.7 | +15.8 | +5.3 | +29.9 | |
| 2 | 12-2 | +21.0 | +9.9 | +17.8 | +4.2 | +24.1 | |
| 3 | 10-2 | +20.6 | +14.9 | +9.9 | +3.9 | +24.4 | |
| 4 | 12-2 | +19.2 | +12.7 | +14.1 | +0.3 | +27.6 | |
| 5 | 13-3 | +18.3 | +7.8 | +15.4 | +6.2 | +16.1 | |
| 6 | 13-2 | +18.3 | +14.2 | +10.9 | +5.3 | +19.1 | |
| 7 | 11-2 | +16.0 | +14.5 | +7.0 | -0.1 | +22.4 | |
| 8 | 12-2 | +13.8 | +6.6 | +11.0 | +2.4 | +14.5 | |
| 9 | 13-2 | +13.7 | +13.3 | +5.0 | +2.7 | +15.9 | |
| 10 | 11-2 | +13.3 | +9.9 | +7.7 | +3.8 | +12.8 | |
| 11 | 9-4 | +13.2 | +10.1 | +4.5 | +4.5 | +12.8 | |
| 12 | 10-3 | +12.6 | +13.3 | +4.0 | +1.2 | +15.6 | |
| 13 | 12-2 | +12.3 | +7.3 | +8.9 | +3.4 | +12.3 | |
| 14 | 9-4 | +12.0 | +4.5 | +12.0 | +2.5 | +13.2 | |
| 15 | 9-4 | +11.6 | +9.2 | +6.8 | +1.3 | +15.4 | |
| 16 | 11-4 | +11.6 | +8.1 | +9.0 | +5.3 | +10.3 | |
| 17 | 10-3 | +10.8 | +4.8 | +6.7 | +3.3 | +10.2 | |
| 18 | 10-3 | +10.3 | +2.2 | +12.5 | +3.1 | +10.8 | |
| 19 | 7-6 | +10.1 | +7.0 | +7.0 | +2.8 | +10.5 | |
| 20 | 9-4 | +10.1 | +11.2 | +2.2 | -2.4 | +17.1 | |
| 21 | 12-2 | +9.7 | +6.6 | +5.0 | -4.2 | +18.7 | |
| 22 | 9-4 | +9.3 | +4.3 | +5.5 | +4.6 | +7.2 | |
| 23 | 12-2 | +9.3 | +15.4 | -3.4 | -4.2 | +18.6 | |
| 24 | 9-4 | +9.3 | +5.5 | +5.1 | -0.4 | +11.7 | |
| 25 | 9-4 | +8.7 | +4.8 | +6.8 | -0.2 | +12.2 |
How the rating works (the math)
Raw margin lies. Beating an FCS team by 40 is not the same as beating Georgia by 3. To weight competition you need to know how good each opponent is — but that depends on how good their opponents were. The schedule graph is circular.
rating(i) = average over games of [ adjusted margin + rating(opponent) ]
We start every team at zero and iterate until nothing moves. That fixed point is the only set of ratings consistent with every result in the league — which is why this needs all 933 FBS games, not just Tennessee's.
- Home field: the home team's margin is reduced by 2.5 points before it counts.
- Blowout cap: margins pass through a smooth cap at 35 points, so a 50-point win counts meaningfully more than a 20-point win but nowhere near twice as much. Running up the score earns very little.
- Non-FBS opponents: pinned at -28, so scheduling three FCS teams never looks like playing three average FBS teams.
- Small samples: ratings regress toward zero by n/(n+1), so nobody is crowned off one September blowout.
Units are points per game against an average FBS team on a neutral field. A +14 team should beat a +3 team by about 11 on neutral turf.
Season résumé
Every game against an FBS opponent. Further right means a tougher opponent; above the line means Tennessee played better than its own rating expected.
FBS record
7-5
+1 vs FCS, not charted
Expected wins
7.4
from the ratings
Luck
-0.4
won what they earned
Volatility
±10.5
swing vs expectation
Best win · strongest team beaten
vs Arkansas Razorbacks
Rated +2.7 · #55 nationally · won by 3
Weakest team they lost to
vs Illinois Fighting Illini
Rated +8.5 · #26 nationally · lost by 2 — no bad losses all season
How to read this
The dashed line is what the rating expected: against an opponent rated -11.8 the margin should be about +19.6. Dots above it are games Tennessee played better than its own rating; dots below are worse.
Expected wins sums each game's win probability. Comparing it with the actual record separates “good” from “fortunate” — a team can win close games it had no business winning, and the gap shows up here.
Volatility is the spread of those gaps. A low number is a team that performs the same every week; a high number is one nobody can predict.
Games against FCS opponents are excluded — an unrated opponent has no expectation to measure against — so the record here can differ from the headline record. Both are shown rather than quietly reconciled.
Rating movement by week
Each point is the rating re-solved using only games played through that week — what the model would have said at the time, not the final rating drawn backwards.
Tennessee in orange; other teams shown as context and labeled at the line end. Arrows are rank change from week 4 to week 16.
Does it actually predict anything?
Ratings are fit on the early weeks, then used to predict games they have never seen. These are the results on those held-out games — including where we lose.
Winner called
69.9%
naive: 55.2%
Margin error
12.6pts
naive: 17.2
RMSE
15.7pts
big misses weighted
Games tested
869
3 train/test splits
| Trained through | Games | Our MAE | Raw MAE | Our win% | Raw win% |
|---|---|---|---|---|---|
| Week 8 | 396 | 12.53 | 12.93 | 68.2% | 68.9% |
| Week 10 | 291 | 12.53 | 13.04 | 71.8% | 68.4% |
| Week 12 | 182 | 12.79 | 12.94 | 69.8% | 66.5% |
What these numbers honestly say
Against the naive baseline — always take the home team — the rating is a clear improvement: 69.9% of winners called versus 55.2%, and 4.6 points less error per game.
Against a raw, unadjusted margin rating the picture is more mixed, and we are not going to dress that up. Opponent adjustment calls winners better (69.9% vs 67.9%) and produces lower margin error (12.62 vs 12.97).
A ~13-point average error is normal for college football margin models; the sport is high variance. Treat these ratings as a way to compare résumés, not as a betting tool.
Who did they do it against?
A season total tells you how much. It doesn't tell you against whom. These numbers do.
- DeSean BishopRB983 RUSH YDS
Schedule D
+1.8
Weighted D
+1.6
Gap
-0.3
vs above-avg D
52%
BalancedBest: 146 vs Arkansas Razorbacks (D -3.3) - Daune MorrisRB133 RUSH YDS
Schedule D
-2.1
Weighted D
-1.4
Gap
+0.6
vs above-avg D
53%
Tougher gamesBest: 48 vs East Tennessee State Buccaneers - Justin BakerRB43 RUSH YDS
Schedule D
-8.4
Weighted D
-5.7
Gap
+2.7
vs above-avg D
0%
Small sampleBest: 37 vs East Tennessee State Buccaneers - Mike MatthewsWR32 RUSH YDS
Schedule D
+1.8
Weighted D
+3.2
Gap
+1.4
vs above-avg D
63%
Small sampleBest: 20 vs Florida Gators (D +7.1) - Hunter BarnesRB2 RUSH YDS
Schedule D
-5.7
Weighted D
-5.7
Gap
0.0
vs above-avg D
0%
Small sampleBest: 2 vs New Mexico State Aggies (D -5.7)
Reading these numbers
Schedule D is the average defensive rating of the opponents faced — how hard the slate was. Higher is a better defense.
Weighted D is the same average, but weighted by production. It answers a different question: of the defenses this player actually gained yards against, how good were they?
weighted D = Σ(production × opponent D) / Σ(production)
The gap between them is the story. A positive gap means production skewed toward the tougher defenses. Negative means it was padded against the weaker ones.
We deliberately do not publish a synthetic “adjusted yards” figure. Converting a points-based team rating into an individual yardage projection would require a yards-per-point constant nobody can justify. Every number above is exact arithmetic on real per-game results — no modeling assumptions, nothing to take on faith.
Known limitation: opponent quality here is measured in points, not yards. A defense can prevent points while giving up yardage, so this is a proxy rather than a direct measure. A yards-based rating is wired up and switches on automatically once a CFBD_API_KEY is configured.
Ratings computed from 933 completed FBS games via ESPN's public scoreboard, refreshed every 6 hours. Showing the 2025 season — this rolls forward automatically once 2026 games are played.