A college football betting line moves for rest, travel, altitude and weather, and across 3,616 games from 2021-2025 the market priced almost all of it correctly: the baseline ledger reads +2.52 charged, +2.58 delivered, +0.06 left over. Wind is the textbook case - it genuinely suppresses scoring by about three points, and knowing that earns nothing because it is in the total before you look. For bettors and analysts the default is to assume a factor is already in the number; the one live candidate is eastern teams travelling west across two or more time zones, at +3.42.
A factor can be completely real and still be worthless, because the line already moved. This is the ledger of what the market charged, what games delivered, and what was left.
Baseline home-field ledger, points per game · price plus residual equals result
3,616 spread games · 3,512 totals · all figures oriented toward the home team
The market correctly prices almost everything we tested. Assume a factor is already in the number until evidence says otherwise.
Wind is the textbook example: it cuts scoring, moves totals during the week, and leaves no reliable edge at the close.
The live candidate is eastern teams travelling west across 2+ time zones. Even there, publish a forecast — not a betting command — and never double-count overlapping factors.
A betting line is not a prediction pulled from the air. It is built, roughly, like this:
How good are these two teams → plus home field → plus adjustments for this particular game → the number you see.
Our other pieces established the first two steps: team strength comes from ratings, and home field is worth about 2.5 points. This piece is about step three — the adjustments. Which situations actually move a line, by how much, and, crucially, whether there's anything left over once the market has made its adjustment.
That last part is what separates useful knowledge from expensive knowledge. A factor can be completely real and still worthless to you, because the price already contains it.
For every factor we show three numbers:
| Column | Question it answers |
|---|---|
| Market charged | How much did the line move for this? |
| Result delivered | How much did the games actually move? |
| Left over | Result minus the price. What the market missed. |
The baseline for a normal game is: market charged +2.52, result delivered +2.58, left over +0.06.
Three outcomes are possible:
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| Normal game | 2,711 | +2.57 | +2.38 | −0.19 ±0.29 |
| Home off a bye, away not | 296 | +3.37 | +4.75 | +1.38 ±0.91 |
| Away off a bye, home not | 257 | +1.59 | +2.49 | +0.90 ±0.95 |
| Both off a bye | 137 | +2.28 | +2.47 | +0.19 ±1.19 |
The market moves about 0.85 points toward whoever had the week off, and roughly 1.8 points across the two situations. This is real, deliberate pricing.
Most of it appears between the opening and closing line, not at the open — the number drifts toward the rested team through the week as the market digests the schedule.
Both "left over" figures are positive, which is a faint hint the adjustment could go further. But the difference between them is only 0.48 points, which is the honest measure of a rested-side edge, and it's swamped by the error bars. Priced.
Ordinary rest differences do nothing. A team with two or three extra days shows no reliable effect, and short weeks (≤5 days) are too rare to measure — 60 and 53 games, with both sides pointing the same direction, which is logically impossible for a real rest effect.
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| Visitor under 250 km | 476 | +2.50 | +1.75 | −0.75 ±0.67 |
| Visitor 250–999 km | 1,839 | +2.47 | +2.43 | −0.04 ±0.36 |
| Visitor 1,000–1,999 km | 934 | +2.39 | +2.40 | +0.01 ±0.50 |
| Visitor 2,000–2,999 km | 193 | +2.92 | +4.96 | +2.04 ±1.12 |
| Visitor 3,000 km+ | 165 | +3.30 | +4.75 | +1.46 ±1.15 |
Distance alone does almost nothing until 2,000km. The market charges the same ~2.45 for a 90-minute bus ride and a 1,900km flight, and the results agree with it. That's a genuinely useful thing to know: the "long road trip" narrative has no support at ordinary distances.
Direction is a different matter.
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| Visitor crosses 2+ zones WEST | 166 | +3.55 | +6.98 | +3.42 ±1.09 |
| Visitor crosses 1 zone west | 578 | +2.00 | +1.74 | −0.27 ±0.65 |
| No timezone change | 2,133 | +2.47 | +2.50 | +0.03 ±0.33 |
| Visitor crosses 1 zone east | 559 | +2.87 | +2.31 | −0.56 ±0.65 |
| Visitor crosses 2+ zones EAST | 171 | +2.71 | +2.89 | +0.18 ±1.22 |
The one genuine candidate for an underpriced factor. An eastern team flying west across two or more time zones — an East Coast side playing a 10pm body-clock kickoff in California — has underperformed the closing line by 3.42 points ±1.09 over 166 games.
The market does charge extra (+3.55 against a +2.52 baseline). It just hasn't charged enough.
What makes it more than a random split: the mirror image shows nothing. Teams flying the same distance east produce +0.18. And it isn't a disguised "West Coast teams are underrated" effect — those same host teams are flat (−0.04) in their other home games.
What keeps it unproven: it's concentrated in a handful of hosts, it was negative in 2022, and it was found by examining many splits of one dataset. Watch, don't bet.
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| Visitor climbs 1,200 m+ | 105 | +3.73 | +5.96 | +2.23 ±1.62 |
| Visitor climbs 700–1,199 m | 140 | +2.45 | +3.53 | +1.08 ±1.26 |
| Venue 1,000–1,499 m | 150 | +2.19 | +3.80 | +1.62 ±1.28 |
| Venue 1,500 m+ | 131 | +3.67 | +2.99 | −0.68 ±1.32 |
| Venue under 100 m | 1,057 | +2.57 | +2.62 | +0.05 ±0.48 |
The market prices altitude — but prices the wrong thing. It charges most at the very highest venues (+3.67 at 1,500m+), and those are precisely the games where home teams underperform.
What actually matters is how far the visitor climbed. A sea-level team going to Laramie is in a different situation from Colorado State going to Wyoming, even though the venue is identical.
Sample sizes are small (105 games at the top) and the error bars are wide. Don't stack this with the travel adjustment — big climbs and long flights are usually the same games, and adding both counts one effect twice.
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| 85°F+ | 284 | +2.59 | +4.02 | +1.43 ±0.92 |
| Under 32°F | 66 | +1.47 | +1.47 | +0.00 ±1.77 |
| Wind 15 mph+ | 124 | +2.88 | +3.67 | +0.79 ±1.36 |
| Rain at kickoff | 425 | +2.87 | +3.36 | +0.49 ±0.73 |
| Humidity 85%+ | 292 | +2.73 | +1.89 | −0.84 ±0.89 |
Heat is the only weather condition with a spread signal. Games at 85°F+ delivered +4.02 against a charge of +2.59 — and note the market charged nothing extra, treating a scorching afternoon in Texas like any other game. It's concentrated in a few southern venues, so it may be about specific hosts as much as temperature.
Cold does nothing — and interestingly the market already knows, reducing the home charge to +1.47 in freezing games, which results match exactly.
Wind, rain and humidity have no spread effect at all. Wind matters enormously, but to the total. Which brings us to the other half of the ledger.
Totals are where weather genuinely lives. Baseline: closing total 53.52, actual 53.83, residual +0.30.
| Condition | Games | Closing total | Open→close move | Actual total | Left over |
|---|---|---|---|---|---|
| ALL GAMES | 3,512 | 53.52 | −0.27 | 53.83 | +0.30 ±0.27 |
| Wind under 5 mph | 1,171 | 54.01 | −0.04 | 54.54 | +0.54 ±0.47 |
| Wind 5–9 mph | 1,571 | 53.62 | −0.14 | 53.63 | +0.00 ±0.40 |
| Wind 10–14 mph | 564 | 52.57 | −0.71 | 53.05 | +0.49 ±0.63 |
| Wind 15 mph+ | 120 | 50.36 | −1.86 | 51.55 | +1.19 ±1.34 |
| Gusts 20–29 mph | 782 | 52.87 | −0.61 | 53.04 | +0.16 ±0.54 |
| Gusts 30 mph+ | 133 | 50.62 | −1.82 | 51.08 | +0.47 ±1.32 |
| Under 32°F | 62 | 48.56 | −1.09 | 47.69 | −0.86 ±1.95 |
| 70–84°F | 1,299 | 54.04 | −0.21 | 54.81 | +0.77 ±0.44 |
| 85°F+ | 285 | 54.60 | −0.38 | 54.24 | −0.36 ±0.91 |
| Rain at kickoff | 414 | 52.95 | −0.52 | 53.27 | +0.32 ±0.77 |
| Dome | 77 | 56.45 | +0.13 | 56.73 | +0.28 ±1.67 |
Wind is the single clearest priced factor in this entire study. Watch the whole chain:
That's a textbook example of a market working. A real physical effect, correctly identified, correctly priced, in real time.
Cold suppresses scoring and is also priced (48.56 close, 47.69 actual). Domes score more (56.45) and that too is in the number.
An important limitation
Our weather data is what actually happened at kickoff, not the forecast bookmakers saw when setting the line. So we can't claim these are the exact adjustments the market made — only that realised conditions and the closing number line up closely. Forecasts are usually good enough at 24 hours that this is a fair approximation, but it isn't the same thing.
| Situation | Games | Market charged | Result delivered | Left over |
|---|---|---|---|---|
| Line moved 2+ toward home | 536 | +4.11 | +4.37 | +0.26 ±0.65 |
| Line did not move | 786 | +2.49 | +2.64 | +0.15 ±0.53 |
| Line moved 2+ toward away | 559 | +1.25 | +1.74 | +0.49 ±0.63 |
When the number moves toward the home team, the market ends up charging +4.11 — well above the standard 2.52 — and the home team delivers +4.37. The move was correct.
It was also worth nothing to you. The leftover is +0.26, no different from any other game, because by the time the move is visible the price has moved with it.
This is the single most misunderstood idea in betting content. "Sharp money moved this line" can be entirely true and entirely useless in the same breath. Being right about direction and being paid for it are different things.
Everything, ranked by how much it moves the number.
| Factor | What the market charges | Is it real? | Anything left? |
|---|---|---|---|
| Home field (baseline) | +2.52 | ✅ Yes | No — +0.06 |
| Wind 15mph+ (totals) | −1.9 on the total | ✅ Yes | No — +1.19 ±1.34 |
| One team off a bye | ±0.85 to the rested side | ✅ Yes | Barely — 0.48 contrast |
| Extreme altitude venue | +1.15 | ⚠️ Mispriced target | Negative — −0.68 |
| Visitor climbs 1,200m+ | +1.21 | ⚠️ Probably | Maybe +2.23 ±1.62 |
| Westward 2+ zones | +1.03 | ✅ Yes | +3.42 ±1.09 ← the live one |
| Cold (totals) | −5.0 on the total | ✅ Yes | No |
| Heat 85°F+ (spread) | +0.07 — nothing | ⚠️ Possibly | +1.43 ±0.92 |
| Travel under 2,000km | Nothing | ❌ No | No |
| Ordinary rest days | Nothing | ❌ No | No |
| Eastward travel | +0.19 | ❌ No | No |
| Grass / turf / dome (spread) | Small | ❌ No | No |
| Rain, humidity (spread) | Nothing | ❌ No | No |
| Short weeks | Small | ❓ Unmeasurable | Sample too small |
Assume it's priced. Of everything we tested, the market handled almost all of it correctly. That is the default, and the burden of proof sits with anyone claiming otherwise.
Never add the same thing twice. A visitor flying 3,000km west to a stadium 1,500m up has one situation, not three. Long travel, westward direction and altitude describe the same games. Adding a point for each turns a defensible +1.5 into an indefensible +4.
Separate "real" from "useful". Wind genuinely suppresses scoring by three points, and knowing that earns you nothing, because it's in the total before you look. The only facts worth money are the ones nobody has priced — and after five seasons and fifty tests, our best candidate is a +3.42 on eastern teams flying west, which we're publishing as a prediction for 2026 rather than a recommendation for today.
hfa.db, SP+ tables rebuilt 2026-07-21, every rating joined at exact week.Methods & reproducibility.
Almost always. The market moves about 0.85 points toward whichever side had the week off, and most of that drift appears between the opening and closing line rather than at the open. The effect is real and deliberately priced.
Wind does - it suppresses scoring by roughly three points, and the total moves during the week as the forecast firms up. That is precisely why it is not an edge: the adjustment is in the closing number before you look.
No, and this is the most common way a defensible adjustment becomes an indefensible one. A visitor flying 3,000km west to a stadium 1,500m up is one situation, not three - long travel, westward direction and altitude describe the same games. Adding a point for each turns a fair +1.5 into +4.
One candidate: eastern teams travelling west across two or more time zones, worth +3.42 points beyond what the market charged. It is published as a prediction for 2026 to be judged out of sample, not as a recommendation for today.
Assume a factor is already in the number: after five seasons and fifty tests the only facts worth money are the ones nobody has priced, and the best remaining candidate is +3.42 on eastern teams flying west.