THE spread
WK 03 · 2026 · 47 games in

Massey Least Squares Ratings: The Simple Version

One regression equation, solved across an entire season of games at once, turns final scores into a single rating per team.

Updated 6 min read

Kenneth Massey’s least-squares method rates football teams by solving a regression: choose one number per team so that the gap between any two numbers best predicts, in the least-squares sense, the actual margin of victory between them.

The one assumption the whole method rests on

Massey wrote the method up as an honors thesis at Bluefield College in 1997, titled Statistical Models Applied to the Rating of Sports Teams. Before deriving anything, the thesis draws a distinction worth repeating: a ranking is only an ordering (first, second, third), while a rating sits on a continuous scale, so the gap between two teams’ numbers means something. Massey’s method produces a rating first; the ranking is simply what falls out of sorting those ratings.

The entire model rests on one assumption. If Y is the margin of victory in a game between teams A and B, and r_a and r_b are their ratings, the expected outcome is

A game’s actual margin will not match that expectation exactly — upsets happen, blowouts happen — but the model treats those deviations as random error, e_i = y_i - (r_a - r_b), and finds the rating vector that makes the sum of squared errors as small as possible across every game in the sample.

Setting it up as a regression

Every team gets an indicator variable, and every game becomes one observation. The winner’s variable is set to 1, the loser’s to -1, and everyone else’s to 0 for that row, so a single game’s equation reduces to

Stacked across every game played that season, this becomes a standard linear regression in matrix form, y = X r + e, where y holds every game’s margin of victory and X is the win/loss indicator matrix described above. Ordinary least-squares theory says the best-fitting rating vector r solves the normal equations:

Why the system needs one more constraint

Here is the part of Massey’s derivation that trips up a naive implementation: the normal equations as stated do not have a unique solution. Every row of X has exactly one +1, one -1, and zeros elsewhere, which means every row sums to zero — so the columns of X are linearly dependent, and X does not have full column rank. Concretely, if v is the all-ones vector, X v = 0, meaning any rating vector can be shifted by a constant amount in every team’s rating without changing a single predicted margin of victory.

That is intuitive once stated plainly: if every team’s rating goes up by 10 points, every predicted margin between two teams stays exactly the same, since the model only ever uses the difference r_a - r_b. The regression can determine relative ratings perfectly well; it simply has no information about where to anchor the absolute scale.

Massey’s thesis resolves this the standard way such rank-deficiencies are handled: by adding one more constraint to the system, most simply that the ratings sum to zero. That single added equation removes the extra degree of freedom without changing anything about the relative ratings — and therefore the ranking — that the regression already determined. With the constraint in place, the system becomes solvable by ordinary linear-algebra methods (Gauss-Seidel iteration is one option Massey’s thesis discusses for larger systems, since the normal-equations matrix for a full season can be large but is highly structured).

A worked example, by hand

Take three hypothetical teams — Arbor, Cliffside, and Dune — who play a short schedule: Arbor beats Cliffside by 10, Cliffside beats Dune by 3, and Dune beats Arbor by 7. Each game gives one row of the system: r_Arbor - r_Cliffside = 10, r_Cliffside - r_Dune = 3, r_Dune - r_Arbor = -7 (a loss by 7 is a margin of -7 for the losing side’s equation, or equivalently +7 favoring Dune).

Adding the constraint that the three ratings sum to zero pins the system down. Solving the resulting least-squares problem (three game equations plus the sum-to-zero constraint, for three unknowns) gives Arbor +5.67, Cliffside -2.33, Dune -3.33. Notice these do not perfectly reproduce the three input margins: with three games and only three teams, the schedule described above is not internally consistent (it forms a 3-team cycle — Arbor beats Cliffside, Cliffside beats Dune, Dune beats Arbor — the exact scenario Massey’s thesis calls out as a case with no rating vector that can perfectly explain every result). Least squares does not require a perfect fit; it finds the rating vector that minimizes total squared error across the inconsistency, which is the entire point of framing the problem as a regression rather than demanding an exact solution.

What the regression framing buys, and what it costs

Because margin of victory is the response variable in the regression, a Massey rating rewards a team for winning convincingly and penalizes it for losing badly, in a way a margin-blind method like the Colley matrix deliberately does not. That is a real strength when the goal is predicting future point spreads — a model built to explain margins is naturally suited to estimating them — but it is also the method’s most obvious weak point in practice: a team with nothing left to play for that runs up the score in a decided game, or a team that empties its bench once a result is safe, can distort a rating built purely from final margins, since the model has no way to distinguish a competitive 21-point win from a mostly-garbage-time one.

This is also where the method’s regression identity is most useful for understanding disagreement between rating systems. When a Massey rating and a margin-blind rating (Colley, or the base version of a continuous-time Markov chain rating) rank two teams differently, the disagreement is rarely arbitrary — it is almost always traceable to one team having a much better average margin of victory than its win-loss record alone would suggest, or the reverse: a team that wins narrowly and often but has a modest average margin. Neither reading is “wrong”; they are answers to two different questions — how much better was this team on average, versus how often did this team simply get the job done.

Building it from real season data

The practical version of this method needs the same raw ingredient every rating system in this series needs: a list of completed games with participants and final scores. nflverse-data’s games.csv release supplies this for every NFL game back to 1999.

import numpy as np
import pandas as pd

games = pd.read_csv(
    "https://github.com/nflverse/nflverse-data/releases/download/schedules/games.csv"
)
season = games[(games.season == 2026) & games.result.notna()]
teams = sorted(set(season.home_team) | set(season.away_team))
idx = {t: i for i, t in enumerate(teams)}
n = len(teams)

X = np.zeros((len(season) + 1, n))
y = np.zeros(len(season) + 1)
for row, (_, g) in enumerate(season.iterrows()):
    X[row, idx[g.home_team]] = 1
    X[row, idx[g.away_team]] = -1
    y[row] = g.result  # home margin of victory
X[-1, :] = 1  # sum-to-zero constraint row
y[-1] = 0

ratings, *_ = np.linalg.lstsq(X, y, rcond=None)

That last constraint row is doing exactly what the hand-derivation above described: forcing a unique solution out of an otherwise rank-deficient system, without changing which team ends up rated ahead of which. The output is a Massey rating for every team in the season-to-date schedule, directly comparable to Colley- and Markov-chain-style ratings built from the same underlying games, and to the power ratings discussed separately, which take a different linear-algebra route to a similar goal. The win-probability calculator can turn a Massey rating gap into an estimated probability the same way it does for other rating systems in this series.

Frequently asked questions

What is a Massey least squares rating?

It is a team rating chosen so that the difference between any two teams' ratings best predicts, in the least-squares sense, the margin of victory between them. Kenneth Massey introduced the method in his 1997 honors thesis, building it directly on linear regression rather than on a network or incremental update rule.

What formula does the Massey method start from?

E[Y] = r_a - r_b, where Y is the margin of victory in a game between teams A and B, and r_a and r_b are their ratings. The model assumes the expected point differential equals the rating gap; actual results deviate from that expectation game to game, and least squares picks the ratings that make those deviations as small as possible overall.

Why can't the Massey system be solved directly without an extra step?

Because the normal equations X^T X r = X^T y are rank-deficient — every row of the design matrix sums to zero, since a game's winner gets +1 and the loser -1 with everyone else 0, so the columns of X are linearly dependent. Without an added constraint, the system has infinitely many solutions that all predict the same margins while disagreeing on the absolute rating scale.

How is the rank-deficiency problem in Massey ratings normally fixed?

By adding one constraint to pin down the otherwise-free additive constant, commonly that the ratings sum to zero, or by replacing one row of the normal equations with that constraint directly. Either approach leaves the *relative* ratings (and therefore the ranking) unchanged while making the system solvable for a unique set of numbers.

Does the Massey method use only wins and losses, or does margin matter?

Margin of victory is central to the model — it is literally the response variable in the regression. This is a deliberate design choice, not an oversight, and it is the main thing that separates Massey ratings from margin-blind methods like the Colley matrix, which use only wins and losses.

Is a Massey rating the same thing as a Massey ranking?

No. The rating is the numeric output of the regression — a value like 14.3 that can be compared to any other team's value to estimate an expected margin. The ranking is only the resulting sort order. Massey's own 1997 thesis draws this distinction explicitly before deriving the method, since a rating carries more information than the ranking derived from it.

Sources

  1. Massey — Statistical Models Applied to the Rating of Sports Teams (1997 honors thesis)
  2. nflverse-data releases (schedules, play-by-play)