BEHIND THE DATA · REST ADVANTAGE

Rest advantage

Every number on the Games and Model Results pages comes out of one function. This states what it does, what each piece of it is worth, and what it cannot see.

THE SCOREONE FUNCTION, EIGHT TERMS

Each team carries a fatigue score for each game. It is not a rating of the team — it is a reading of what the schedule did to them before tip-off. Higher is more tired. The difference between the two teams’ scores is the rest advantage, and that single number drives every claim on the site.

baseLoad   = recentWorkload + travel + roadSegment
score      = max(0, baseLoad × backToBack × altitude × density + freshness + overtime)
restEdge   = awayScore − homeScore     (positive ⇒ the home side is fresher)

A difference under 0.5 is treated as no gap at all — 8,195 games, about one in six, that carry no rest claim in either direction.

HOME COURT AND RESTWHY THE TWO ARE COUNTED SEPARATELY

Rest and home court are entangled, and the entanglement is structural. A visiting team has travelled by definition, so the fresher side is the home side in 27,400 of the 38,948 games with a measurable gap. Two of the eight terms above — body clock and altitude — can only ever charge the visitor, and the schedule pushes the same way on its own: the visiting side is playing a second night in a row roughly twice as often as the home side, and nothing in that term knows which team is at home.

The obvious objection is that this only holds when the home team slept in its own bed. It does not. In about half the schedule the home team had travelled in too, and there the average rest edge falls by three quarters — while the home team still won 59.7% of those games, 60.0% of the ones where it had flown farther than its opponent, and 58.0% of the ones where it ended a road trip on a back-to-back. Playing at home is worth about the same whatever the home team did to get there.

So a rest advantage cannot be read on its own. It has to be read against the venue it arrived with. Home teams win 59.9% of all 47,143 games and road teams 40.1%. Against those, a rest advantage is worth +1.3 points to a rested home team and +2.3 to a rested road team. It is a small effect on both sides, and on neither does it come near the twenty points between the two baselines.

RESTED TEAMWHERE IT PLAYEDGAMESCOUNTIT WONWIN RATEBASELINESAME SIDE, ALL GAMESVS BASELINEPCT POINTS
Rested team at home · published27,40061.2%59.9%+1.3
Rested team on the road · counted separately11,54842.4%40.1%+2.3
No measurable gap · |RA| < 0.58,195
Every completed game since 1985-8647,14359.9% HOME · 40.1% ROAD

The published rate is the home row. Not because the road row gains less — measured against its own baseline it gains slightly more — but because every game in the home row is also a home game, so one number carries both facts at once, and because a rested road team at 42.4% is still losing more often than it wins. A gain over a baseline is a measurement; a pick has to clear 50%.

REST GAPAT LEASTGAMESCOUNTRESTED ROAD TEAM WONWIN RATEVS 40.1% BASELINEPCT POINTS
any11,54842.4%+2.3
≥ 24,35143.4%+3.3
≥ 32,05643.6%+3.5
≥ 494946.7%+6.6
≥ 534246.2%+6.1
≥ 610850%+9.9
≥ 72661.5%+21.4

The last two rungs are 108 and 26 games in 41 seasons. Read them as the schedule running out of examples, not as a signal turning on. The gaps that large happen a few dozen times a decade.

That ladder pools forty-one seasons, and home court has not held still across them — so it is worth asking whether the road row looks the same now as it did in 1987. It does not, and the reason matters more than the movement.

ERASEASONSGAMESCOUNTRESTED ROAD TEAM WONWIN RATEROAD BASELINETHAT ERAVS BASELINEPCT POINTSBEST RUNGGAP · WIN RATE
All seasons · 4111,54842.4%40.1%+2.3≥ 4 · 46.7%
Last 10 seasons · 103,08547.6%43.8%+3.8≥ 4 · 51.3%
Last 5 seasons · 51,63849.3%44.7%+4.6≥ 3 · 52.9%

The rested road team has climbed from 42.4% to 49.3%, which looks like rest coming to matter more. Most of it is not: the road baseline rose from 40.1% to 44.7% over the same span, because home-court advantage has weakened league-wide. What is left after subtracting that is the last column, and it has moved much less — +2.3 to +4.6 points.

This is also why two sentences that used to sit on this page are gone. One said rest never outweighs home court at any magnitude the schedule produces; the other said no threshold rescues a rested road team. Both were absolutes drawn from the pooled rate, and in the last ten seasons a gap of 4 or more puts the road row above even — 51.3% across 228 games. That is a real sample, not a tail. It does not make a rested road team a pick, because it still needs a gap the schedule produces rarely and it is measured after the fact — but the absolutes were not true as written, so they are not published.

Folding home court into the score itself and letting the combined number pick was measured too: with a 3-point home bar it covers 96.5% of games at 59.7%, which is below simply picking the home team in every one of the 47,143. It also makes 1,385 road picks and loses 752 of them. Adding a constant to both sides does not create information.

THE TERMSWITH THE CONSTANTS THE CODE USES

Recent workload. Every game in the last 30-day window adds load that decays exponentially, so last night matters far more than last week. Each game’s cost is scaled down when it was a blowout — a 30-point rout rests the starters, and overtime used to be the only way the model knew a game was hard.

cost      = 2.65 × e^(−0.52 × daysAgo) × blowoutFactor
blowout   = 1 − 0.25 × clamp((|margin| − 15) / 20, 0, 1)

Travel. Great-circle miles between consecutive venues over a 7-day window, log-scaled so the tenth thousand miles hurts less than the first. A team only flies home when its next game is at home — no phantom round trips between two road games.

travel = 1.75 × ln(1 + miles / 1000)

Body clock. A charge for playing at least a 2-hour clock shift from home, resolved from each venue’s real UTC offset rather than from raw longitude. Travelling east advances the body clock, which is harder than delaying it, so east and west are not charged equally. The charge then decays as the team re-entrains, at roughly a day per zone crossed — night six of an east-coast trip is not night one.

displacement = 0.88 × direction × max(0, 1 − nightsInZone / zonesCrossed)
direction    = 1.25 eastward, 0.85 westward

Back-to-back. Playing last night multiplies the load. The size of that multiplier depends on the real gap between tip-offs, because a 10:30pm game into a 7pm game is roughly 21 hours of recovery and the reverse ordering is 27.

b2b = clamp(1.38 + 0.02 × (24 − turnaroundHours), 1.3, 1.46)

The rest. Consecutive road games add 0.34 each after the first 2 are free. Visiting altitude (Denver, Utah, and Mexico City at 7,350 ft) multiplies by 1.29, and the following night at normal elevation by 1.06. Schedule density compares games played across five windows against a normal pace. Extended rest earns a discount that begins at 3 days and approaches −2.0. A prior game that went to overtime adds 0.5, or 1.0 for double overtime or more.

WHAT EACH TERM IS WORTHMEASURED 2026-08-02

Removing a term no longer changes which team gets picked — a called game is always a pick of the home side. What it changes is which games get called at all. So each term was neutralised in turn, the call re-derived, and the published win rate re-measured against a baseline of 61.17% across 27,400 games.

Every term finds winners. They differ in how they do it. Back-to-backs and recent workload are the sharpest — the games only they flag win at over 63%. Travel is the widest: it alone accounts for 5,994 of the model’s calls, more than twice any other term, at 59.14%.

TERMGAMES ONLY IT FINDSCOUNTTHOSE GAMESWIN RATEHEADLINE IF REMOVEDPCT POINTS
Travel5,99459.14%+0.32pp
Recent workload (decay)3,43763.37%−0.68pp
Back-to-back1,74363.57%−0.31pp
Road segment2,78458.94%+0.24pp
Altitude61662.34%−0.03pp
Schedule density70760.54%−0.08pp
Overtime14864.86%−0.07pp
Freshness14860.14%+0.02pp

The last column is a trap, and it is shown because hiding it would be worse. Travel and road segment are the two terms whose removal raises the published rate, which reads like an argument for deleting them. It is not. Both find winners at a rate below the model’s own 61.17% average, so including them pulls the average down while pushing the number of games won up. Travel gives the model 404 more correct calls than a coin flip — the largest contribution of any single term — and deleting it would buy a prettier headline by giving up 5,994 winning predictions. A batting average rises when you stop taking the harder at-bats.

The whole model sits at 3,061 correct calls above a coin flip across 27,400 games. Freshness is the only term that gives back more than it brings, and it does so by ten calls. The others are kept because they are physically real, correctly computed and additive. Terms interact multiplicatively, so these figures do not sum to the total.

The counts in this section are stated against a coin flip rather than against the 59.9% home baseline used everywhere else on the site. That is deliberate: this table compares the terms with each other, and a common reference that both share cancels out of that comparison. It is not the model’s edge over home court — that figure is +1.3 points, and it is the one the Model Results page publishes.

A separate out-of-sample fit found travel adds little independent information once the other schedule terms are known, which is unsurprising — a team deep in a road trip already scores high on workload and road segment, so the terms partly restate one another. That is a narrower claim than it sounds, and it is not in tension with the table above: travel is the tie-breaker that pushes those genuinely worn-down teams over the line, and the games it pushes over do win.

WHERE THE DATA COMES FROM1985-86 TO PRESENT

Schedules, scores and results come from the NBA’s own feeds. Overtime periods, tip-off times and neutral-site venues come from ESPN, because the NBA endpoint that serves them is not reachable from outside the United States — a failure that went unnoticed long enough that the overtime term sat dormant across every game in the dataset before it was found and fixed on 2026-07-30.

Arena coordinates are era-correct: Sonics games resolve to Seattle, not Oklahoma City, and the 2005-06 Hornets to their Katrina-season home. Distances are great-circle, not routed.

ESPN coverage begins around 2002, and its neutral-site flag only from 2013. Earlier seasons are scored by the same formula with those three inputs absent, which means a pre-2002 overtime count of zero denotes unknown, not “no overtime”. The trade was taken deliberately rather than restricting the model to a shorter span, and the cost is that a 1994 score and a 2024 score are not built from quite the same information.

WHAT THIS CANNOT SEETHE HONEST LIMITS

The model reads schedules. It knows nothing about the teams playing.

  • No injuries, rotations or minutes played. A rested team missing two starters scores the same as a healthy one.
  • No team quality. Rest advantage is not a prediction of who is better, and a rested visitor is often a good team midway through a road trip — which is why these win rates are associational, not causal.
  • No actual itineraries. Teams are assumed to fly venue to venue and only home when the next game is home. No public source records what they really did.
  • No load management. A star sitting a back-to-back is exactly the effect this model would want to capture, and it is invisible here.
  • Playoffs are excluded entirely. A fixed two-team series breaks the travel assumptions.
  • The 2019-20 Orlando bubble is excluded — one site, no travel, no crowd. The roughly 970 games that season played before the March 2020 suspension are ordinary and are included. 2020-21 is included too, but it is a condensed 72-game season, so its schedule density runs hotter than the anchors were set against.
HOW THE MODEL IS SCOREDNO TUNING AGAINST THE BACKTEST

Every constant above was set by reasoning about the physical effect and reviewed before the backtest was run — none was fitted to maximise a win rate. That is the only reason the historical numbers mean anything: a model tuned against its own test set would report whatever accuracy it was asked for. One constant has since moved on measured evidence: the altitude multiplier was raised from 1.15 to 1.29 on 2026-08-02 to match altitude’s measured size against a back-to-back on final margin. That is a different target from the win rates on this page, and the change is recorded in ADR 0006 rather than folded in quietly.

The most recent overhaul is a fair illustration of why that discipline matters. Nine fixes landed together and the published hit rates rose about a point — but on games both the old and new model called, accuracy moved 0.15pp and the two picked the same team 98.8% of the time. The gain was almost entirely the new model declining 2,661 games the old one had called at below a coin flip. Better selectivity, not better prediction. The distinction is easy to lose and worth keeping.