How the ratings work
One number per team: the goal margin we'd expect against an average rated team on a neutral field. A +1.50 team would beat a 0.00 team by a goal and a half on average.
The model
We use a Massey-style least-squares model on goal margin. For every game, home rating − away rating + home advantage should equal the final margin. We find the ratings that make that true as nearly as possible across every game at once.
- Margins are capped at ±4 goals, so a 9–0 counts the same as a 4–0. Games decided on penalties count as draws.
- Home advantage is estimated from the data: currently 0.27 goals. Neutral-site games get none.
- Recent games count more. A game's weight halves every 274 days (about nine months).
- League prior. Each team is pulled a little toward its league's average, as if it had also played two games against an average team in its own league. This matters for amateur teams that play 10–20 games, nearly all within their own league. Without it, a team that goes unbeaten against weak opposition would be rated like a pro side.
Comparing leagues
A league's average is set almost entirely by the games its teams play against other leagues: the U.S. Open Cup and its qualifying rounds, the USL Cup, the USASA National Amateur Cup, and state cups. The few teams that play those games carry information for their whole league. Where those links are thin, the uncertainty is wide, and we show it.
| League | Average | Uncertainty vs UPSL |
|---|---|---|
| Major League Soccer | +4.54 | ±0.6 |
| USL Championship | +3.14 | ±0.46 |
| MLS Next Pro | +2.28 | ±0.72 |
| USL League One | +2.18 | ±0.48 |
| National Premier Soccer League | +0.52 | ±0.42 |
| USL League Two | +0.37 | ±0.41 |
| United Premier Soccer League | -0.37 | – |
| Cosmopolitan Soccer League · D1 | -0.41 | ±1.91 |
| Cosmopolitan Soccer League · D4 | -0.41 | ±1.91 |
| Cosmopolitan Soccer League · D3 | -0.41 | ±1.91 |
| Cosmopolitan Soccer League · D2 | -0.41 | ±1.91 |
| American Premier Soccer League | -0.75 | ±0.36 |
Data rules
- Forfeits: a game is left out only when the league itself marks it as a forfeit (the UPSL match pages do). We never guess, so a real 3–0 stays a 3–0.
- Clubs that change leagues are rated as separate teams for each league spell, joined by a weak link worth about half a game. Clubs that field sides in two leagues at the same time are kept fully separate.
- Minimum games: teams need 8 games to appear in the headline rankings. Everyone is still rated and has a team page.
- Team identity: names are matched across sources automatically, and uncertain matches are reviewed by hand every week.
Predictions
A prediction starts from the expected margin, which is the rating difference plus home advantage. Win, draw and loss chances come from the model's typical error of 1.71 goals around that margin. The draw band is tuned so that the predicted draw rate matches the real one (17%). The expected score comes from separate attack and defense ratings, rescaled to agree with the margin. Every published prediction is tracked on the accuracy page.
In a backtest, the model was fit on games before 1 July 2026 and asked to predict the 1,597 games that followed. It picked the winner of decisive games 66% of the time, and its typical error was 1.95 goals.
Sources
ESPN (MLS, USL Championship, USL League One, U.S. Open Cup, USL Cup) · American Soccer Analysis (MLS Next Pro) · Modular11 (USL League Two) · premier.upsl.com (UPSL) · TeamPass (APSL, Cosmopolitan Soccer League) · Wikipedia (Open Cup qualifying, NPSL playoffs) · TheCup.us (National Amateur Cup) · Eastern Pennsylvania and Maryland state associations.
Known gaps
NPSL regular season, CASA, the New Jersey, New York, Connecticut and Massachusetts state cups, and USL Pro Academy aren't in the data yet. Missing data mostly makes the league comparisons less certain. If you can point us to results, get in touch.