Loading contract data...
Select a player to view contract comparables
| Player | Pos | Age | Predicted AAV | Actual AAV | Predicted % | Actual % | Error | Abs Error | % Error | Term | Team | Signed |
|---|
| Player | Pos | Age | Est. AAV | Est. % | Est. Term | Career GP | Career Pts |
|---|
Model
Comparables are generated by a K-Nearest Neighbors model that finds the 5 most statistically similar players from the prior 3 free-agent classes. Four separate models are run — UFA Forwards, UFA Defensemen, RFA Forwards, RFA Defensemen — to normalize within peer groups.
UFA models emphasize age and career-to-date production, with platform-year stats (L3 averages) factored in at a lower weight. RFA models focus purely on career-to-date metrics since platform years are less predictive for restricted free agents.
Edge cases to be aware of: superstar-level players, players in their mid-30s, and RFAs with very few career games may produce unconventional comparables.
Cap Hit % Estimate
Estimates use inverse-distance weighting (IDW) rather than fixed weights. Each comp's influence is proportional to 1/distance — so a comp that is twice as close gets twice the weight. This means near-identical comps properly dominate the estimate while distant comps contribute minimally.
The ±1σ confidence interval uses the weighted standard deviation of the comps' cap hit percentages. A tight interval (e.g. ±0.5%) means the comps agree closely — the estimate is reliable. A wide interval (e.g. ±3%) means the comps varied significantly — treat the estimate with more caution.
Estimated AAV is calculated as Cap Hit % × current salary cap ceiling. The AAV range reflects the confidence interval translated to dollars.
Backtest Accuracy
Each model is backtested using leave-one-season-out validation: every historical FA class is held out, predicted using only prior years, and the error is measured against actual signings. The MAE (mean absolute error) shown in the header tells you how far off the model typically is in percentage points of cap hit.
Term Sensitivity
The contract-length slider re-prices the estimate based on two distinct economic regimes for RFAs. Bridge deals — contracts that expire before a player reaches UFA eligibility — carry a discount, as the player retains the right to re-hit the open market in their prime. Once a deal crosses into UFA years, a premium is applied for each UFA year the team is purchasing, reflecting the cost of locking up those prime earning years. The crossover point is calculated from each player's UFA eligibility year. Both the bridge discount and UFA premium are fitted from historical signings. For UFAs, a simpler linear adjustment applies — longer term typically means a modest AAV reduction as the player trades earning potential for security.
Tracking Signings
The Pending / Signed filter shows who's still on the open market versus who has already signed this offseason, with the Signed view listing every player in that FA-status/position group along with how their actual deal compared to the model's prediction. Entry-level contracts (the standard rookie deal every drafted player signs before reaching free agency) are intentionally excluded from this tracker — they're capped by league rules at a flat rate regardless of talent, so they aren't representative open-market signings and would only add noise to the comparison.
Players who haven't appeared in an NHL game in recent seasons won't show up in the tool even if they're technically eligible for free agency — the model needs actual NHL stats to generate meaningful comparable estimates, so players with no recent league activity are excluded rather than shown with unreliable projections.
To account for data integrity, players who have already signed in this FA cycle are excluded from comparables until next year's model run.
Data Sources
Stats and biographical data from the NHL's public API (nhle.com). Contract data from PuckPedia.com. Data refreshed daily via GitHub Actions.
Future Cap Projections
Future-season cap hit percentages use projected cap ceilings to show how a player's AAV will decrease as a percentage of the cap over time.