← Notebook

Research Notes · Open

Does home court matter less when the visitor is clearly better?

Across the full backtest, mostly no. Road favorites ended close to their forecast margin at every size of gap. The one exception was 2022-23.

Question

The model applies one home advantage to every game. A common argument is that a much better visiting team neutralizes the crowd, so home court should count for less when the road team is clearly stronger. If that were true, road favorites would beat their forecast margin, and by more as the gap grows.

First look

The first two seasons checked pointed in opposite directions. In 2022-23, road favorites won by less than predicted. In early 2023-24, they won by more. Two seasons were not enough to tell, so the question was rerun on the full walk-forward backtest.

Full backtest

The analysis takes every regular-season backtest game where the forecast favored the road team and compares the forecast road margin with the actual one:

web/scripts/notebook_figures.pylines 107–123
def home_court(q):
    """Backtest games with a road favorite: forecast margin against the actual margin."""
    d = q("""SELECT g.season, p.home_score_predicted::float - p.away_score_predicted::float pred,
                    (g.home_score - g.away_score)::float actual
             FROM predictions p JOIN games g USING (game_id)
             WHERE p.model_version = 'wf-v2' AND g.is_final AND g.season_type = 'Regular Season'
               AND g.home_team_id <> g.away_team_id""")
    road = d[d.pred < 0].copy()
    road["road_pred"], road["road_actual"] = -road.pred, -road.actual
    road["gap"] = pd.cut(road.road_pred, [0, 4, 8, 99], labels=["0 to 4", "4 to 8", "8 or more"])

    def summ(g):
        err = g.road_actual - g.road_pred
        return dict(n=len(g), pred=r1(g.road_pred.mean()), actual=r1(g.road_actual.mean()),
                    diff=r1(err.mean()), se=r1(err.std() / np.sqrt(len(g))))
    return dict(by_season=[dict(label=s, **summ(g)) for s, g in road.groupby("season")],
                by_gap=[dict(label=str(k), **summ(g)) for k, g in road.groupby("gap", observed=True)])

Road favorites: forecast vs actual margin, by season

Average road-team margin in games the model expected the visitor to win.

Road favorites: forecast vs actual margin, by season Forecast Actual 0246810 difference 2022-23: forecast 4.8, actual 1.6 pts (491 games) 2022-23 −3.2 2023-24: forecast 4.3, actual 4.4 pts (435 games) 2023-24 +0.1 2024-25: forecast 5, actual 5.9 pts (462 games) 2024-25 +0.9 2025-26: forecast 5.2, actual 5.9 pts (500 games) 2025-26 +0.7 2026-27: forecast 5.2, actual 8 pts (44 games) 2026-27 +2.8
Positive difference: road favorites did better than forecast. 2026-27 is in progress and has few games.
Data table
ForecastActualDifferenceStd. errorGames
2022-234.81.6-3.2±0.6491
2023-244.34.40.1±0.7435
2024-2555.90.9±0.7462
2025-265.25.90.7±0.7500
2026-275.282.8±2.244

Road favorites: by size of the forecast edge

All backtest seasons pooled.

Road favorites: by size of the forecast edge Forecast Actual 02468101214 difference 0 to 4 pts: forecast 2.2, actual 1.8 pts (1,039 games) 0 to 4 pts −0.4 4 to 8 pts: forecast 6.3, actual 6 pts (596 games) 4 to 8 pts −0.3 8 or more pts: forecast 11.1, actual 11.1 pts (297 games) 8 or more pts +0.0
Data table
ForecastActualDifferenceStd. errorGames
0 to 4 pts2.21.8-0.4±0.41,039
4 to 8 pts6.36-0.3±0.6596
8 or more pts11.111.10.0±0.8297

What it shows

  • By size of gap there is no pattern. Small, medium and large road edges all finished within half a point of the forecast. That is the opposite of what the hypothesis predicts: the gap should widen as the visitor’s edge grows.
  • 2022-23 stands out. Road favorites fell 3.2 points short of their forecast (±0.6 standard error). It was the first backtest season, and its model was trained on only one earlier season (2021-22). That is the more likely explanation than anything about home court.
  • From 2023-24 on, road favorites beat their forecast by 0.1 to 0.9 points, each within about 1.3 standard errors of zero.

Next

The evidence is against a strength-dependent home advantage. The question stays open for one narrower check: whether the effect differs in the playoffs, where crowds and stakes are different. The backtest has only about 80 to 90 playoff games per season, so it may need several more seasons to answer.