Off The Rush
Subscribe

Methodology

How the model works

The math is in plain English here. The R code is private, but every concept that drives a number on this site is explained below.

The unit: SPAR

Standings Points Above Replacement. Goals are converted to standings points using a context-aware mapping that respects game state and score effects. SPAR is what every downstream tool — projections, contract value, simulator — actually consumes.

Player ratings

OVR is a 0–100 normalization of pSPAR with separate centering for forwards and defensemen. It's a quick-glance number, not the model's final word — for that, look at SPAR itself.

Projections

Eight years forward, with year-by-year SPAR and variance. Built on a survival model (probability a player is still in the league) plus position-specific aging curves. Variance widens with age and uncertainty — the projection for a 33-year-old fourth-liner has a very different confidence band than a 22-year-old top-six forward.

Contract value

Market value is replacement-level salary plus a slope per SPAR, fit on 5,638 historical contracts. Future-year cap growth scales prices forward. The probability a contract delivers positive value uses the residual variance from the fit, with year-to-year correlation set to 0.70 — independent years badly underestimate risk.

Lookback / projection audit

A second model run trained without the most recent season, used to grade pre-season projections against what actually happened. The projection audit page shows where the model has been right, where it's been wrong, and how confident those rights and wrongs have been.

More detail in the blog — methodology posts dig into the assumptions and trade-offs case by case.