Prospect Report runs two independent models on publicly available information — one rates team strength, one rates scoring difficulty (NHL-equivalency). Here is exactly how each is built, and from what.
The problem. Hockey talent is scattered across hundreds of leagues that mostly never play each other, so comparing them honestly is hard — and the conventional wisdom is often wrong. Putting every team on one comparable scale, built only from the games that actually cross over, is about transparency: playing up an age group, or chasing a "more prestigious" league, isn't always the step up it's assumed to be, and a strong program close to home may be far nearer a player's level — and their family — than they realize.
For the game-based leagues — juniors, college, and national/international programs — every team gets a Simple Rating System (SRS) rating: solved from goal margins against shared opponents, so a team's number reflects both its results and the strength of its schedule, not just its win-loss record.
For the youth tiers — midget, bantam, peewee, prep and high school — the within-league strength comes from MyHockey Rankings, the established ground-truth rating for North American youth hockey, rather than from individual game logs (most youth teams don't have complete, public results).
Real inter-league games — tournaments, showcases, exhibitions, cup play, national-team results — are the bridges. Each league is given an offset, fitted by least-squares over those cross-league margins, that slides its whole ladder up or down to the level its bridge games imply.
Offsets place leagues, not teams. A single cross-league blowout can't distort one team's rating; it only informs where its league sits. Anchors are for comparing levels across leagues, not for nudging individual teams.
The board is anchored to ground-truth ratings — MyHockey for the youth tiers, and NCAA / USHL / NAHL as a trusted backbone — then normalized from the top so the #1 team reads 100. Every team and league then sits on one continuous ladder, from the college/junior level down to peewee.
Because a league's absolute level depends on its bridge games, we score each league's confidence with a min-cut (max-flow): how many cross-league games would have to disappear to cut the league loose from the anchored core. Few games holding it up means a fragile offset — the whole league could shift up or down as a block. The order of teams within a league is always well-founded; stability only measures where that block sits. It's shown as the colored dot on the site (80+ solid → <40 fragile).
The US and Canada bracket youth ages differently, and the notation tells them apart: the US is number-first (13U, 14U) while Canada is letter-first (U13, M15). We parse each team's age tier from its name, not from a source's bucket, so a US "13U" (bantam) and a Canadian "M13" (peewee) land in the right place — and same-age teams across the border can be grouped together.
The problem. A point in one league isn't worth a point in another. NHL-equivalency (NHLe) measures how a player's scoring translates from one league to the next.
Players who suit up in two leagues reveal the ratio of those two scoring environments. Pool enough shared players and you can solve every league's difficulty at once — no assumptions about which league is "harder," just what the players who moved between them actually did.
A single joint Poisson model over every scoring line we have:
It's fit numerically (a three-way Poisson iterative-proportional solve), anchored so NHL = 1.000 and the aging curve is measured relative to age 19. Every other league lands as a fraction of NHL scoring — that fraction is its NHL-equivalency. The output is one coefficient per league plus a converter that translates any stat line from one league into any other.
This is the point most easily misread. A league's NHLe coefficient describes its scoring environment — how many points a player of a given talent tends to put up there — not how strong the league is. The two often move together, but they are not the same thing, and where they part ways it matters. Youth and lower-junior circuits inflate scoring: weaker defense, uneven goaltending, and a few dominant players running up huge totals against soft schedules. A league can therefore look high-scoring on paper while being a modest level of hockey, and a genuinely hard league can suppress everyone's point totals.
So a low coefficient doesn't mean a "bad" league, and a high one doesn't crown the "best" league — it only tells you how a point there translates. Caliber — who would actually beat whom — is what the Team Rankings (strength) model measures, from real cross-league results rather than from scoring. Read them together: NHL-equivalency converts a stat line; the strength ratings tell you how good the league really is.
Only players who appear in two or more leagues carry information; single-league players ride along without affecting the fit. Ages come from age-coded appearances — youth-league labels (a US "16U" ⇒ age 16, a Canadian "U16" ⇒ age 15) and age-locked tournaments — with official team-roster birth years overriding wherever we have them.
The board spans 157 leagues and roughly 126,000 players across 2010–2026, all anchored to NHL = 1. Every league-season is checked against EliteProspects' own published skater count, so the data is verified complete rather than silently truncated. The whole board is a single connected component — every league reaches the NHL through a chain of shared players, with no isolated islands.
Two independent checks, in the spirit of the reliability tests published on NHLe elsewhere:
Out-of-sample. We refit the model five times, each time hiding a fifth of the players entirely, then predict those unseen players' scoring from coefficients that never saw them. The held-out fit (R² 0.885) is within a hair of the in-sample fit (0.896) — a gap of about 0.01, meaning the model is capturing real league difficulty, not memorizing its own data.
Model vs. direct. For every pair of leagues, we compare the ratio the model derived through the whole board against what the players who moved directly between just those two leagues did. They agree closely, and the agreement tightens as bridges thicken — R² 0.94 for pairs with 20+ shared movers, 0.96 at 30+. Where the two disagree most, it's always a thin bridge (a handful of movers between two youth circuits), exactly where the direct estimate is itself least trustworthy.
Both models use only publicly available information, and they answer different questions on purpose. Strength is about winning games — who beats whom, adjusted for schedule. NHL-equivalency is about how scoring converts between levels. Keeping them separate is deliberate: a team can be strong without being a high-scoring environment, and vice-versa.
Where a choice affects the numbers — a capped result, an anchor game, a league whose level rests on thin evidence — we surface it (the stability dot, the bridge-game markers, the anchor flag) rather than hide it. The goal is the highest level of unbiased transparency.
These models build on the work and data of others. With gratitude to:
Prospect Report is free — no money is made from this site. It's built for the public and meant as a tool for anyone who might find it useful.
Claude (Anthropic) was used to help gather the data and run the computations. The ideas, models, and methodology here are original and human-made — designed by people, not by a computer.
Spot something off, want a league added, or just have a question about the numbers? Reach out on X — we'd love to hear from you.