Home Advantage: A Century and a Half of It, and a Season Without Crowds

Teams win more often at home. Using the IRW’s competition tables, we estimate home advantage net of team strength in every season of baseball, basketball, hockey, American football and English and Italian football back to the nineteenth century, ask how it has changed, and then use the 2020-21 seasons played in empty stadiums to ask how much of it the crowd supplies.

Published

October 23, 2026

Note

This vignette — including the dataset search, the compute script, the analysis design, and the writing below — was produced largely by Claude (Anthropic), working from a task specification and with human review. Treat the methodological choices and interpretations accordingly, and check the compute script (home_advantage_compute.R) directly if you’re relying on the numbers here.

Motivation

Home teams win more often than away teams. This is among the oldest and best documented regularities in sport: Pollard (1986) documented it for English football, Pollard and Pollard (2005) traced it across professional team sports in North America and England back to 1876, and Jamieson (2010)’s meta-analysis found it across every sport and era studied. Two questions about it remain live.

  1. Is it shrinking? It is widely believed to have declined, but a raw home-win percentage mixes home advantage with who happened to host whom. A strong team that plays more home games, or a season with lopsided schedules, moves the raw number without any change in what playing at home is worth.
  2. Where does it come from? The usual suspects are the crowd, travel, familiarity with the venue, and referees responding to the crowd. In 2020 and 2021 most professional leagues played without spectators, which separated the crowd from the rest for the first time on a large scale. Studies of German (Fischer and Haucap 2021), European (McCarrick et al. 2021) and North American (Higgs and Stavness 2021) leagues have used that natural experiment.

The IRW’s competition tables are well suited to both. They store one row per game between two agents, with a common coding of which side was at home, across sports and back as far as 1871. Home advantage is then a single parameter in a paired-comparison model, estimated net of the strength of the two sides. In IRW terms it is something like an item parameter that every game shares, estimated across hundreds of tables, and the question is whether it is stable.

Data and methods

Dataset selection

Code
library(irw)
# every comp table with a real home side and a long run of seasons
tables <- c(
  "retrosheet_mlb_1871_2025", "fivethirtyeight_nba_1946_2023",
  "fivethirtyeight_nhl_1917_2023", "fivethirtyeight_nfl_1920_2023",
  "nflverse_nfl_1999_2025", "footbayes_england", "footbayes_italy",
  "fivethirtyeight_soccer_2016_2023", "rugby_union_tier1_1871_2026",
  "intlfootball_men_1872-2026", "intlfootball_women_1956-2026"
)
games <- lapply(tables, irw_fetch, source = "comp")

The IRW’s competition collection has over a hundred tables, from professional leagues and esports to animal dominance encounters and pairwise judgments. Most have no home side. We used the 11 tables that have one and that run over many seasons. Each table codes the home side the same way: homefield is "agent_a" when agent_a is at home and missing at a neutral venue. Tables left out, and why:

Table 1
Table(s) Why left out
mlb_through2023 superseded by retrosheet_mlb_1871_2025 (same games, plus 2024-25 and attendance)
eufootball_2010-2020 same leagues and seasons as footbayes and the 538 soccer table
openfootball_* (9 tables) the leagues duplicate the 538 soccer table; the club cups are too small per season
collegefb_2021and2022 two seasons, too short for a trend and no 2020
cricsheet_* (5 tables) the ‘home’ side is ambiguous (toss, venue, host board)
lichess_2013_*, tcec_engines_2010_2026 white’s first-move edge is not a home advantage
UEFA cups in fivethirtyeight_soccer_2016_2023 group stages and two-legged ties, not leagues; many sides win or lose every game

The model

The analysis unit is a league-season (for rugby and internationals, which have too few games per year, a decade). Within each unit we fit a Bradley-Terry model (Bradley and Terry 1952) with a home term:

\[ \text{logit}\, P(a \text{ beats } b) = h \cdot \text{home}_{ab} + \theta_a - \theta_b, \]

where \(\text{home}_{ab}\) is 1 if \(a\) is at home, \(-1\) if \(b\) is, and 0 at a neutral venue. The \(\theta\)s are team strengths, so \(h\) is the home advantage in logits, net of who played whom. For a sense of scale, \(h = 0.4\) means two evenly matched teams would see the home side win about 60% of decided games. Where a sport has draws, we fit the ordinal version of the model (Agresti 1992), in which a draw sits between a win and a loss on the same latent scale, so \(h\) keeps the same meaning.

Code
# Every second game is written from the away side's point of view, so that the
# home column is not constant (and so not absorbed by the ordinal cutpoints).
fit_h <- function(a, b, y, home, nocrowd = NULL) {
  flip <- seq_along(a) %% 2 == 0
  a2 <- ifelse(flip, b, a); b2 <- ifelse(flip, a, b)
  y <- ifelse(flip, 1 - y, y); home <- ifelse(flip, -home, home)
  # team-strength design, one reference team per connected component
  cmp <- components(a2, b2)
  keep <- setdiff(sort(unique(c(a2, b2))), tapply(names(cmp), cmp, `[`, 1))
  X <- matrix(0, length(a2), length(keep))
  ia <- match(a2, keep); ib <- match(b2, keep)
  X[cbind(which(!is.na(ia)), ia[!is.na(ia)])] <- 1
  X[cbind(which(!is.na(ib)), ib[!is.na(ib)])] <- -1
  H <- cbind(home = home)
  if (!is.null(nocrowd)) H <- cbind(H, home_nocrowd = home * nocrowd)
  Z <- cbind(H, X)
  if (any(y == 0.5)) {   # draws: ordinal Bradley-Terry
    m <- MASS::polr(factor(y, levels = c(0, 0.5, 1)) ~ Z, Hess = TRUE)
  } else {
    m <- glm(y ~ Z - 1, family = binomial)
  }
  # ... returns h, its SE, and delta (below) when nocrowd is given
}

A few details matter for what follows:

  • Regular season only. Playoff games are left out of the season fits: there are few of them, and home order in a playoff series is earned by the better record, not scheduled.
  • Divisions. In English football a season has up to four divisions that never meet. They go in one fit, each with its own reference team, and share a single \(h\).
  • Sparse or one-sided agents. Teams with fewer than five games in a unit, and teams that won or lost every game, are dropped before fitting; their strength cannot be estimated (it is infinite for a perfect record). This matters mostly for the internationals.
  • NFL sources. 538’s table supplies seasons to 1998 and nflverse’s from 1999, where the two overlap.
  • Units with fewer than 50 games are skipped.

The no-crowd test. For each league we pool the 2016-2023 seasons into one fit, with a strength for every team-season and a second home term for games played in the no-crowd window, 13 March 2020 to 31 May 2021:

\[ \text{logit}\, P(a \text{ beats } b) = (h + \delta \cdot \text{nocrowd}) \cdot \text{home}_{ab} + \theta_{a,s} - \theta_{b,s}. \]

\(\delta\) is the change in home advantage when the stands were empty. One window is used for every league; for MLB, whose Retrosheet table records attendance, we also define “no crowd” directly as a 2020 game with no recorded attendance.

Of the units built, 887 produced estimates; the season fits used the ordinal model in 608 and the binary model in 279.

Note

To reproduce with current IRW holdings, re-run home_advantage_compute.R and commit the updated home_advantage_data/home_advantage_results.rds.

Results

How big is home advantage?

A logit is not a natural unit, so it helps to ask what \(h\) means for a single game between two equally strong teams, \(\theta_a = \theta_b\). Then the strengths cancel and the model’s prediction depends on \(h\) alone.

  • In a sport without draws, the home side wins with probability \(P(\text{home win}) = \text{logit}^{-1}(h) = 1 / (1 + e^{-h})\). \(h = 0\) is a coin flip; \(h = 0.4\) is about 60%; and \(e^{h}\) is the factor by which playing at home multiplies the odds of winning.
  • In a sport with draws, the ordinal model has two cutpoints, \(c_1 < c_2\), which set how often games are drawn. For equal teams, the away side wins with probability \(\text{logit}^{-1}(c_1 - h)\), the home side with \(1 - \text{logit}^{-1}(c_2 - h)\), and the rest are draws. Home advantage moves probability from away wins to draws and from draws to home wins.

To put every sport on one scale, we use the home side’s expected score for equal teams, scoring a win as 1, a draw as ½ and a loss as 0, as in chess: \(P(\text{home win}) + \tfrac{1}{2} P(\text{draw})\). This is a scoring of the outcome only; the margin of victory and the goals, runs or points scored in the game play no part in it or in the model. It is 50% when there is no home advantage, and in a sport without draws it is just the home win probability. The figure shows it by era; hover over a point for \(h\) and the win, draw and loss probabilities behind it.

Code
era_cols <- c("before 1950" = "grey75", "1950-1989" = "grey45", "1990-2019" = "black")
pd <- era_size |>
  left_join(distinct(summary_df, league, sport), by = "league") |>
  mutate(group = sport_group(sport),
         league = factor(league, levels = rev(recent$league)),
         text = paste0(league, ", ", era, "<br>h = ", fmt(h), " (SE ", fmt(h_se), ")",
                       "<br>equal teams: home win ", pct(p_win),
                       if_else(p_draw > 0.005, paste0(", draw ", pct(p_draw)), ""),
                       ", away win ", pct(p_loss),
                       "<br>expected score ", pct(share), " (SE ", fmt(100 * share_se, 1), " pts)",
                       "<br>", n_units, if_else(grepl("intern|Rugby", league), " decades, ", " seasons, "),
                       format(n_games, big.mark = ","), " games"))
# one row per league: the three eras sit on the same line, joined by a grey
# segment, with the most recent era darkest; the SEs are in the hover text
pd <- arrange(pd, league, era)
p <- ggplot(pd, aes(share, league, text = text)) +
  geom_vline(xintercept = 0.5, colour = irw_grey) +
  geom_path(aes(group = league), colour = "grey70", linewidth = 0.8) +
  geom_point(aes(colour = era), size = 2.6) +
  scale_colour_manual(values = era_cols) +
  scale_x_continuous(labels = function(x) paste0(round(100 * x), "%")) +
  labs(x = "home side's expected score, equal teams", y = NULL, colour = NULL)
lab_groups <- distinct(pd, league, group) |> arrange(league)
ggplotly(p, tooltip = "text") |>
  layout(legend = list(orientation = "h", y = -0.15)) |>
  colour_y_labels(as.character(lab_groups$league), lab_groups$group)
Figure 1: Home side’s expected score against an equally strong opponent (win = 1, draw = ½, loss = 0), by era. 50% means no home advantage. Precision-weighted over the seasons (or decades) in each era; 2020 and 2021 are left out. The three eras of a league are joined by a grey segment, darkest point most recent, so a dark point at the left end means home advantage has fallen; hover for the SE. League names are coloured by sport type: red for the North American leagues, blue for club football, green for internationals and rugby.
Table 2: 1990-2019: home advantage h (SE), the odds ratio e^h, and what they imply for a game between two equally strong teams. A dash means the sport has (almost) no draws in this era.
Series h Odds ratio Home win Draw Away win Expected score
Rugby union (tier-1 tests) 0.64 (0.08) 1.90 64% 3% 33% 67%
Men’s internationals 0.67 (0.02) 1.95 49% 31% 20% 64%
Basketball (NBA) 0.52 (0.01) 1.69 63% — 37% 63%
Italy (Serie A) 0.57 (0.02) 1.78 45% 34% 21% 62%
American football (NFL) 0.44 (0.03) 1.55 61% — 39% 61%
England (all divisions) 0.41 (0.01) 1.51 44% 30% 26% 59%
Women’s internationals 0.36 (0.05) 1.44 44% 29% 27% 59%
Ice hockey (NHL) 0.23 (0.01) 1.26 52% 7% 40% 56%
Baseball (MLB) 0.16 (0.01) 1.17 54% — 46% 54%

Every series has a home advantage, and they differ a great deal. In 1990-2019, two equally strong NBA teams would see the home side win 63% of the time; in the NFL, 61%. Hockey, which still had ties for much of this era, comes out at a home expected score of 56%. Baseball’s is the smallest: 54%, barely more than a coin flip. The largest are in international matches, rugby tests and men’s football, where the home side’s expected score against an equal opponent is about two-thirds.

The football numbers read differently because about a quarter to a third of games are drawn. Between two equal English sides, the home team wins 44%, the game is drawn 30% and the away team wins 26%. That is a home expected score of 59%, about the same edge as in the NFL, even though the home side wins less than half its games. Serie A and men’s international football are larger still: an equal visiting side wins only about one game in five.

Two cautions in reading the table. First, \(h\) itself is comparable only within a model family. In the ordinal model a given \(h\) shifts a latent scale with a draw band in the middle, so the same \(h\) implies a smaller home win probability than it would in a sport without draws; the expected score is the comparable number. Second, “equally strong” is a model statement. In a real league most games are not between equal teams, and the home side’s actual win rate depends on the schedule. The point of \(h\) is that it does not.

Code
pd <- league_538 |>
  mutate(league = factor(league, levels = league),
         text = paste0(league, "<br>h = ", fmt(h), " (SE ", fmt(h_se), ")",
                       "<br>equal teams: home win ", pct(p_win), ", draw ", pct(p_draw),
                       ", away win ", pct(p_loss), "<br>", n_units, " seasons, ",
                       format(n_games, big.mark = ","), " games"))
p <- ggplot(pd, aes(share, league, text = text)) +
  geom_vline(xintercept = 0.5, colour = irw_grey) +
  geom_vline(xintercept = median(pd$share), colour = irw_blue, linetype = "dashed", linewidth = 0.3) +
  geom_linerange(aes(xmin = share - 2 * share_se, xmax = share + 2 * share_se), colour = irw_blue, alpha = 0.6) +
  geom_point(colour = irw_blue, size = 1.6) +
  scale_x_continuous(labels = function(x) paste0(round(100 * x), "%")) +
  labs(x = "home side's expected score, equal teams", y = NULL)
ggplotly(p, tooltip = "text") |>
  colour_y_labels(levels(pd$league), rep("Club football", nlevels(pd$league)))
Figure 2: Home side’s expected score against an equal opponent, for the leagues in 538’s club-football table (seasons 2016-2023 except 2020 and 2021), ±2 SE. All are club football, so the names take that colour.

The same measure across 36 club leagues in the late 2010s and early 2020s ranges from 52% in Austrian T-Mobile Bundesliga to 65% in Major League Soccer (median 59%). Some of that spread is noise, since a league contributes only a few seasons here; the error bars show how much.

Has it declined?

Code
trend_df <- summary_df |>
  filter(sport != "Football (538 leagues)") |>
  mutate(covid = period %in% covid & league %in% season_series,
         year = if_else(league %in% season_series, period, period + 5),
         text = paste0(league, " ", period, if_else(league %in% season_series, "", "s"),
                       "<br>h = ", fmt(h), " (SE ", fmt(h_se), ")<br>", n_games, " games, ",
                       n_agents, " teams<br>", table))
p <- ggplot(trend_df, aes(year, h, text = text)) +
  geom_hline(yintercept = 0, colour = irw_grey, linewidth = 0.3) +
  geom_linerange(aes(ymin = h - 2 * h_se, ymax = h + 2 * h_se, colour = covid), alpha = 0.4) +
  geom_point(aes(colour = covid), size = 0.9) +
  geom_smooth(data = filter(trend_df, !covid), mapping = aes(year, h, weight = 1 / h_se^2),
              method = "loess", span = 0.5, se = FALSE, colour = irw_blue, linewidth = 0.6,
              inherit.aes = FALSE) +
  scale_colour_manual(values = c(`FALSE` = "grey30", `TRUE` = irw_red), guide = "none") +
  facet_wrap(~ league, ncol = 3) +
  labs(x = NULL, y = "home advantage h (logits)")
ggplotly(p, tooltip = "text")
Figure 3: Home advantage h by season, with ±2 SE bars. 2020 and 2021, the seasons played largely without crowds, are in red. Rugby and internationals are estimated by decade.
Table 3: Change in h per decade (SE), from a precision-weighted regression of season estimates on year. 2020 and 2021 are left out of both.
Series From Whole series 1990-2019
American football (NFL) 1922 -0.005 (0.009) -0.062 (0.033)
Baseball (MLB) 1871 -0.011 (0.001) -0.001 (0.009)
Basketball (NBA) 1947 -0.046 (0.009) -0.086 (0.017)
England (all divisions) 1888 -0.054 (0.003) -0.087 (0.012)
Ice hockey (NHL) 1925 -0.044 (0.005) -0.043 (0.016)
Italy (Serie A) 1929 -0.067 (0.006) -0.172 (0.023)

Over the whole of each series, home advantage has fallen in 5 of the 6 leagues measured season by season, by more than twice its standard error. The steepest declines are in European football: in English football \(h\) has roughly halved since before 1950, and in Serie A it has fallen by about 40%. Among the North American sports the decline is clearest in hockey and in basketball, where \(h\) rose to a peak in the middle of the century before falling. Baseball’s small advantage has drifted down slowly, and has been essentially flat since 1990. American football shows no long-run trend. Since 1990 the decline is significant in 4 series (basketball, hockey and both football leagues); the NFL’s estimate points the same way but is too noisy to say.

This is the familiar result, and it is worth seeing that it survives conditioning on team strength: the decline is not an artefact of who hosted whom. What the model cannot say is why. Better travel, standardised stadiums, and changes in officiating are all candidates, and all of them moved over the same decades.

Rugby and international football, estimated by decade, show no such decline. The estimates are noisy, but they are also a different kind of home advantage: a national side playing at home has often travelled less far, in a stadium it chose, in front of a crowd that is almost entirely its own.

Did empty stadiums shrink it?

Code
nc <- nocrowd_df |>
  mutate(label = if_else(definition == "attendance column", paste(league, "(attendance)"), league),
         group = sport_group(sport),
         text = paste0(label, "<br>δ = ", fmt(delta), " (SE ", fmt(delta_se), ")<br>h with crowds = ",
                       fmt(h), "<br>", n_nocrowd, " home games without a crowd")) |>
  arrange(delta) |>
  mutate(label = factor(label, levels = label))
p <- ggplot(nc, aes(delta, label, text = text, colour = group)) +
  geom_vline(xintercept = 0, colour = irw_grey) +
  geom_linerange(aes(xmin = delta - 2 * delta_se, xmax = delta + 2 * delta_se), alpha = 0.6) +
  geom_point(size = 1.5) +
  scale_colour_manual(values = group_cols) +
  labs(x = "change in home advantage without crowds (δ, logits)", y = NULL, colour = NULL)
ggplotly(p, tooltip = "text") |>
  layout(legend = list(orientation = "h", y = -0.08)) |>
  colour_y_labels(levels(nc$label), nc$group[order(nc$label)])
Figure 4: Change in home advantage (δ, logits) in games played without crowds, by league, ±2 SE. Negative means home advantage shrank. Each estimate is net of team-season strength, from the 2016-2023 seasons. League names and points are coloured by sport type.

In club football the answer is yes. Home advantage fell in 25 of the 32 leagues, and the precision-weighted average change is -0.13 logits (SE 0.02), against a typical advantage with crowds of about 0.39: about 34% of it went with the crowd. The leagues differ by more than chance would explain (heterogeneity \(Q\) = 43.8 on 31 df). Several of the largest drops were in top divisions (the Premier League, Ligue 1, the Bundesliga), while two second divisions, Ligue 2 and the 2. Bundesliga, show none (England’s lower divisions did lose some). Fischer and Haucap (2021) found exactly this pattern for Germany and traced it to occupancy: a stadium that is usually half empty loses less when it is fully empty.

The North American leagues split. Basketball lost home advantage (\(\delta\) = -0.16, SE 0.07), as did American football, more noisily. Hockey barely moved. Baseball did not lose any: the estimate is positive whether “no crowd” is read from the calendar (\(\delta\) = 0.06) or from the attendance column (\(\delta\) = 0.11, SE 0.07). Higgs and Stavness (2021), with a different model, found home advantage fell in the NBA’s and NHL’s 2020 playoffs, played in bubbles, and changed little in MLB and the NFL. We agree on basketball and baseball. Our hockey and American football estimates come from the regular season, not the bubble playoffs, which may be why they differ. Baseball’s advantage was small to begin with, and the sport has a structural home edge (the home side bats last) that does not depend on anyone watching.

Crowd or travel? The NBA bubble

Table 4: NBA home advantage, 2016-2023 seasons with playoffs; the 2021 playoffs, when crowds were partly back, are left out. The SE is for h in the first row and for the change in the others.
Setting Home games h Change from normal SE
Normal seasons (crowd and travel) NA 0.37 NA 0.02
2020 bubble (no crowd, no travel) 172 0.07 -0.30 0.16
2020-21 season (travel, no crowd) 1080 0.20 -0.17 0.07

The NBA gives one more contrast. Its 2020 restart was played in a bubble at Walt Disney World: no crowd, and no travel either, since every team lived on site. The season that followed was played in home arenas, with travel but with few or no fans. 538 flags the bubble games as neutral, but its agent_a is still the designated home team (in the 2020 Finals, the Lakers in games 1, 2 and 5 and the Heat in 3, 4 and 6, as scheduled), so we can estimate a nominal home advantage for them. It nearly vanished in the bubble and about halved in 2020-21. With only 172 bubble games the first estimate is imprecise, and the two do not differ significantly, but the ordering is what you would expect if both the crowd and travel contribute.

Limitations

  • One no-crowd window for every league. Leagues closed and reopened at different times: some readmitted limited crowds in autumn 2020, MLB from April 2021, while Brazil stayed closed into late 2021. Misclassified games pull \(\delta\) toward zero, so the estimates understate any effect rather than invent one. The MLB attendance check, which needs no window, gives the same answer as the window does.
  • Neither design isolates the crowd. The no-crowd seasons also changed schedules, travel restrictions, quarantines and, in some leagues, venues. The bubble comparison separates crowd from travel only for the NBA and only on 172 games.
  • Strengths are fixed within a unit. Teams improve and decline within a season, and much more within the decade used for rugby and the internationals. That matters little for \(h\) in a balanced league schedule, more for the internationals, where who hosts is not balanced.
  • Dropped teams. Teams with fewer than five games, or a perfect record, are dropped before fitting. For the internationals this removes the weakest sides, and in the 2000s the remaining women’s schedule still separates, so that decade has no estimate.
  • The trend is descriptive. A straight line per series summarises a decline; it does not say when or why it happened, and the per-season estimates are correlated within a series, so the slope SEs are optimistic.
  • Home advantage is averaged over teams. Some venues (altitude, artificial pitches, long travel) carry more than others; one \(h\) per league ignores that.

Reproducibility

Source code for this page: home_advantage.qmd · home_advantage_compute.R

These results were computed against approximately IRW v512 (the corpus as of October 2, 2026).

The version was inferred from when the results were computed, not recorded during the run, so it may be off by a version or more. 2 IRW versions were released that day, so the exact one is ambiguous. To pin data to an exact version, use irw_use_version().

Results were computed on October 02, 2026. To regenerate:

# 1. Re-run the compute script (from the project root)
source("vignettes/home_advantage_compute.R")

# 2. Re-render this page
quarto::quarto_render("vignettes/home_advantage.qmd")
Tip

To cite the datasets used, run:

irw_save_bibtex(unique(summary_df$table), output_file = "home_advantage_data/references.bib",
                source = "comp")

References

Agresti, Alan. 1992. “Analysis of Ordinal Paired Comparison Data.” Applied Statistics 41 (2): 287–97. https://doi.org/10.2307/2347562.
Bradley, Ralph Allan, and Milton E. Terry. 1952. “Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons.” Biometrika 39 (3/4): 324–45. https://doi.org/10.2307/2334029.
Egidi, Leonardo, Roberto Macrì Demartino, and Vasilis Palaskas. 2022. “footBayes: Fitting Bayesian and MLE Football Models.” In CRAN: Contributed Packages. The R Foundation. https://doi.org/10.32614/cran.package.footbayes.
Fischer, Kai, and Justus Haucap. 2021. “Does Crowd Support Drive the Home Advantage in Professional Football? Evidence from German Ghost Games During the COVID-19 Pandemic.” Journal of Sports Economics 22 (8): 982–1008. https://doi.org/10.1177/15270025211026552.
FiveThirtyEight. 2025a. “Club Soccer Predictions Match File (Spi_matches.csv).” Internet Archive. https://github.com/fivethirtyeight/data/tree/master/soccer-spi.
FiveThirtyEight. 2025b. “NBA Elo Game File (Nba_elo.csv).” https://github.com/fivethirtyeight/data/tree/master/nba-forecasts.
FiveThirtyEight. 2025c. “NFL Elo Game File.” https://github.com/fivethirtyeight/data/tree/master/nfl-elo.
FiveThirtyEight. 2025d. “NHL Elo Game File (Nhl_elo.csv).” https://github.com/fivethirtyeight/data/tree/master/nhl-forecasts.
Higgs, Nico, and Ian Stavness. 2021. “Bayesian Analysis of Home Advantage in North American Professional Sports Before and During COVID-19.” Scientific Reports 11: 14521. https://doi.org/10.1038/s41598-021-93533-w.
Jamieson, Jeremy P. 2010. “The Home Field Advantage in Athletics: A Meta-Analysis.” Journal of Applied Social Psychology 40 (7): 1819–48. https://doi.org/10.1111/j.1559-1816.2010.00641.x.
J"urisoo, Mart. 2026. “International Football Results from 1872 to 2026.” Kaggle; GitHub. https://github.com/martj42/international_results.
Jürisoo, M. 2024. “Women’s International Football Results.” https://github.com/martj42/womens-international-results.
McCarrick, Dane, Merim Bilalic, Nick Neave, and Sandy Wolfson. 2021. “Home Advantage During the COVID-19 Pandemic: Analyses of European Football Leagues.” Psychology of Sport and Exercise 56: 102013. https://doi.org/10.1016/j.psychsport.2021.102013.
nflverse. 2026. Nflverse-Data: Schedules/Games.csv. Https://github.com/nflverse/nflverse-data. https://github.com/nflverse/nflverse-data.
Pollard, Richard. 1986. “Home Advantage in Soccer: A Retrospective Analysis.” Journal of Sports Sciences 4 (3): 237–48. https://doi.org/10.1080/02640418608732122.
Pollard, Richard, and Gerald Pollard. 2005. “Long-Term Trends in Home Advantage in Professional Team Sports in North America and England (1876–2003).” Journal of Sports Sciences 23 (4): 337–50. https://doi.org/10.1080/02640410400021559.
Retrosheet. 2026. Game Logs, 1871-2025. Https://www.retrosheet.org.
Wikipedia contributors. n.d. History of Rugby Union Matches Between Nations. Https://en.wikipedia.org/wiki/Template:History_of_Tier_1_nations.