How Accurate Has the Contract Predictor Been This Offseason?
Comparing contracts signed during 2026 NHL free agency to the ones predicted in the PuckTheory Contract Predictor tool.
Last updated:
The PuckTheory contract predictor was last trained on a PuckPedia export dated April 6, 2026. All contracts signed during free agency are deals that the model never saw during training. This is a look at how the model actually did against those signings, broken down by different categories: by term length, by salary tier, and separately for skaters and goalies. All contracts signed during June 30th and July 14th will be included, with some exceptions that will be defined shortly.
Contracts analyzed here were compiled by hand from public trackers (PuckPedia, ESPN, etc.) rather than pulled from a fresh export. It's a useful reminder that a hand-compiled dataset like this one may have some errors or inconsistencies, although the data has been validated multiple times. Predictions made are actually by percentage of cap, which is then applied to the salary cap of whatever season the contract begins. AAVs are given to be more easily interpreted (AAV = cap% * Salary Cap). Only contracts signed between June 30th and July 14th are included. Of 220 non-entry-level contracts gathered, 2 offer sheets and 5 bonus-heavy deals were set aside entirely (see methodology below) and 134 of the remaining belonged to players with predictions in the contract prediction tool (120 skaters, 14 goalies); the other 79 were league-minimum two-way tenders for depth/AHL players who didn't have enough NHL data to be included in the contract predictions. The full comparison table is at the bottom of this article, and every column is sortable.
- The model lands within $1M of actual AAV on 79.2% of skater contracts and 78.6% of goalie contracts.
- At the tighter $0.5M threshold, that drops to 66.7% of skaters and 50% of goalies.
- Overall, predicted AAV correlates with actual signed AAV at R² = 0.868 for skaters and R² = 0.829 for goalies across the full sample.
- It's most accurate on short deals (1-2 years) and league-minimum-adjacent depth pieces. It gets worse as term and dollar value climb.
- The length model's top pick matches the actual term signed 43.3% of the time for skaters, but lands within one year of the actual term 80.8% of the time.
- Offer sheets and bonus-heavy 35+ deals are excluded, and extensions are scored against the model's extension-specific prediction rather than its standard one.
How This Was Measured
Within the contract prediction tool, every player has a predicted cap hit for each different term length that they can sign. For every contract actually signed, I pulled that player's precomputed per-term prediction for the signed term and compared it to the actual AAV they signed for. "Within $0.5M" and "within $1M" are the two thresholds used throughout.
Three adjustments keep the comparison honest rather than flattering the model:
- Extensions are scored against the tool's extension-specific prediction, projected one season forward and priced against the $113.5M 2027-28 cap, not the $104M 2026-27 cap, since that's the season the deal actually kicks in.
- Offer sheets are excluded. Their price is set to be painful enough to force a decision, not indicative of the market.
- Bonus-heavy 35+ deals (5 contracts are excluded). The reported AAV is deliberately structured lower than the deal's total value, which the model has no way to anticipate.
Skaters: Accuracy by Term Length
% of contracts where the model's predicted AAV landed within $0.5M / $1M of the actual signed AAV, broken out by contract term. n shown per bar.
| Term | n | Within $0.5M | Within $1M | Mean abs. error | Mean % error |
|---|---|---|---|---|---|
| 1 yr | 55 | 74.5% | 83.6% | $0.46M | 29.6% |
| 2 yr | 34 | 76.5% | 88.2% | $0.48M | 22.3% |
| 3 yr | 11 | 54.5% | 81.8% | $0.75M | 22.5% |
| 4 yr | 6 | 50% | 50% | $0.92M | 17.6% |
| 5 yr | 6 | 50% | 50% | $0.83M | 15.7% |
| 6 yr | 3 | 33.3% | 66.7% | $1.36M | 15.3% |
| 7 yr | 2 | 0% | 50% | $1.25M | 12.1% |
| 8 yr | 3 | 0% | 33.3% | $1.07M | 15% |
Two things to note. First, the 1-2 year buckets carry most of the sample (89 of 120 contracts) because most of July 1 is depth and bridge signings, and that's where the model is sharpest. 88.2% of two-year deals land within $1M. This is likely because shorter term deals typically carry a smaller AAV (around $850K-$2M), and a $1M error could mean a ~50-100% margin of error, so it is expected that the model would be within $1M quite consistently within this term bucket. Second, the 4-8 year range is the roughest patch, and it's a small-sample problem as much as a model problem: none of those buckets clear a handful of contracts. The 6-year bucket is dragged down almost entirely by Bowen Byram's extension miss (see below). The other two 6-year deals in the sample both land within $1M. The 8-year bucket is a different story: all three are true extensions (Demidov, Foerster, Luostarinen), and each misses by a modest but consistent $0.7-1.4M, enough that only one of the three clears the $1M bar. Don't read much into any bucket this small either direction.
The takeaway on term length: The model has a better time predicting the AAV on shorter term deals. They're easier because they're dominated by depth/replacement-level players whose value is low and narrow-banded to begin with. The multi-year, true free-agent-market deals are where the market and the model disagree the most.
Skaters: Accuracy by Salary Tier
% of contracts within $0.5M / $1M of actual AAV, broken out by actual signed AAV tier.
| Tier | n | Within $0.5M | Within $1M | Mean abs. error | Mean % error |
|---|---|---|---|---|---|
| Under $2M | 65 | 90.8% | 95.4% | $0.27M | 26.2% |
| $2M-$5M | 35 | 40% | 68.6% | $0.82M | 25.6% |
| $5M-$8M | 13 | 38.5% | 46.2% | $1.11M | 19.3% |
| $8M+ | 7 | 28.6% | 42.9% | $1.39M | 13.7% |
This is the clearest pattern in the whole dataset. Under $2M, the model is excellent (95.4% within $1M), because there isn't much room for disagreement when replacement-level players are being paid replacement-level money. The $2M-$5M tier is where the model has a harder time: it's the salary range where free agency turns into a bidding war. A serviceable middle-six forward or middle-pairing defenseman with an okay contract year gets bid to $4-5M by three or four teams competing for the same depth, well above what their underlying production alone would justify. At the very top ($8M+), error is worse again, but the mean percent error is actually the lowest. Contracts in this range may be inflated due to post-trade signings where players have higher leverage (e.g. Bowen Byram).
Goalies
% within $0.5M / $1M of actual AAV, by term length. 14 goalie contracts matched to a precomputed prediction.
| Term | n | Within $0.5M | Within $1M | Mean abs. error | Mean % error |
|---|---|---|---|---|---|
| 1 yr | 7 | 57.1% | 85.7% | $0.56M | 39.7% |
| 2 yr | 4 | 50% | 75% | $0.58M | 35.1% |
| 3 yr | 2 | 50% | 100% | $0.61M | 10.3% |
| 5 yr | 1 | 0% | 0% | $1.30M | 23.6% |
Overall, 78.6% of goalie contracts land within $1M of their prediction, which is still a solid showing given the goalie model trains on a much smaller dataset (296 contracts) than the skater model (~2,990). By salary tier: under $2M, 66.7% within $1M; $2M-$5M, 100% within $1M (small sample); $5M-$8M, 66.7%.
The one 5-year deal in the sample is Dan Vladar's extension with Philadelphia, 5 years at $5.5M AAV against a model prediction of $6.8M, a $1.3M miss. Vladar signed his deal while still under contract through 2026-27, which makes it an extension rather than a UFA signing.
Accuracy by Player Age
Age buckets here use the player's age as of October 1 of the season the contract actually begins, 2026-27 for a standard signing, 2027-28 for a true extension, matching the age convention the model itself is trained on.
| Age | n | Within $0.5M | Within $1M | Mean abs. error | Mean % error |
|---|---|---|---|---|---|
| 24 and under | 14 | 71.4% | 78.6% | $0.45M | 11.8% |
| 25-27 | 32 | 71.9% | 84.4% | $0.60M | 24.3% |
| 28-32 | 52 | 65.4% | 80.8% | $0.55M | 21.3% |
| 33+ | 22 | 59.1% | 68.2% | $0.74M | 40.8% |
Skaters get steadily harder to predict with age. The dollar-error and hit-rate numbers drift down only gradually through age 32, and even more in the 33+ bucket. The within-$1M rate drops to 68.2%, and mean absolute error jumps to $0.74M. That tracks with the discount cases discussed throughout this article. Older players are exactly where personal decisions (discounts to keep playing, one-year "prove it" deals, teams betting on name recognition over projected production) stray furthest from what a stats-only model would predict.
| Age | n | Within $0.5M | Within $1M | Mean abs. error | Mean % error |
|---|---|---|---|---|---|
| 24 and under | 2 | 100% | 100% | $0.14M | 12.8% |
| 25-27 | 5 | 40% | 100% | $0.61M | 20.2% |
| 28-32 | 3 | 33.3% | 33.3% | $0.84M | 43.3% |
| 33+ | 4 | 50% | 75% | $0.73M | 51.6% |
Goalie age buckets are too thin to read much into individually. The 24-and-under bucket is just two contracts. The broad shape still aligns with the skater data: accuracy is best in the goalie's physical prime and gets noisier at the tail end of a career, but with 14 goalie contracts total split four ways, none of these buckets should be treated as a real verdict on its own.
The Length Model
Separately from AAV, the tool predicts a probability distribution over contract term (1-8 years) and highlights the highest-probability term. Checking that against actual signed term:
| Skaters (n=120) | Goalies (n=14) | |
|---|---|---|
| Top pick matches actual term | 43.3% | 50% |
| Actual term in model's top 2 | 73.3% | 78.6% |
| Actual term within 1 year of top pick | 80.8% | 78.6% |
| Mean rank of actual term | 2.22 | 1.71 |
A 43.3% top-1 hit rate sounds unimpressive on its own, but it needs context: with 8 possible terms, random guessing would land around 12.5%, so the model is roughly 3-4x better than random chance at picking the exact year. The "within 1 year" number is the more useful one in practice. The model's pick is either exactly right or off by a single year the vast majority of the time, which is close enough to be useful for estimating how long a player may sign. This lines up with the intent of the model's design: getting an idea of which range of terms a player may sign for, as a lot goes into negotiations that can affect term which are not visible within the data.
Where the Model Missed Worst, and Why
Ten largest skater prediction errors, in millions. Positive = model predicted more than actual; negative = model predicted less.
Sorting by absolute error and looking at each individual miss allows us to see circumstance that may cause the model to miss. Nearly every one of these large misses falls into one of three scenarios, none of which the model was built to handle:
1. Leverage situations: trades and arbitration. Bowen Byram's 6-year, $12.5M extension in Chicago is the largest miss left in the dataset (model said $9.31M). Byram was acquired by a team that needed to either lock him up or risk losing him for nothing, which is a strong negotiating position for Byram and his agent. It's a softer version of the offer-sheet dynamic that I excluded. Pavel Dorofeyev's 7-year, $11M deal with the Rangers is the same story from the other side: he was traded for a package including two first-round picks, and a team that just paid draft capital for a player is not going to then lowball him on term or dollars. Now let's take a look at Braden Schneider's 1-year, $5.5M settlement with the Rangers (model said $3.0M). He filed for arbitration, and once an independent arbitrator is about to set the number using recent deals as precedent, a team settling to avoid that hearing tends to land closer to what the market's higher comparables than what a model would predict.
2. Pure July 1 bidding wars. Colton Sissons, Jamie Oleksiak, Jacob Trouba, Andrei Kuzmenko, Oliver Bjorkstrand, and Trevor van Riemsdyk are all considered mid-tier UFAs who signed for noticeably more than their production profile implied. This is the same effect visible in the $2M-$5M salary-tier numbers above: open-market competition on the single day when every team needs the same handful of depth pieces inflates prices past what any single team would pay in isolation.
3. Below-market "prove it" deals. Jaden Schwartz's 3-year, $3.25M deal with Colorado (model said $5.5M) looks like a veteran discount where Schwartz wants to chase another Cup.
What This Says About the Model
Even with some shortcomings, the model still succeeds overall at its main goal, to price production. It was never going to see a player's private decision to take a discount to keep playing for a specific team, or a bidding war between four teams competing for the same free agent on the same afternoon. These are the limitations that we need to accept with models like these: team fit, personal negotiating dynamics, and trade/leverage situations are explicitly out of scope.
What the numbers do confirm: the model's accuracy is not uniform, but we do have a solid idea of where it's strong and where it can improve. It is excellent on replacement-level and short-term deals, solid on the length call within a year, and weakest where the signings are affected by outside circumstances.
The Full Data
Every matched contract behind the numbers above. Click any column header to sort by it (click again to flip direction). "Diff" is predicted minus actual. Positive means the model predicted more than the player actually got, negative means the model predicted less. Offer sheets and unmatched depth/two-way tenders are not included since they weren't scored.
Skaters (120)
| Player | Team | Term | Type | Actual AAV | Predicted AAV | Diff (Pred - Actual) |
|---|---|---|---|---|---|---|
| Bowen Byram | CHI | 6yr | Extension | $12.50M | $9.31M | -$3.19M |
| Braden Schneider | NYR | 1yr | RFA | $5.50M | $3.00M | -$2.50M |
| Colton Sissons | TOR | 2yr | UFA | $4.25M | $1.75M | -$2.50M |
| Jamie Oleksiak | VAN | 2yr | UFA | $5.00M | $2.58M | -$2.42M |
| Jaden Schwartz | COL | 3yr | UFA | $3.25M | $5.50M | +$2.25M |
| Jacob Trouba | SJS | 4yr | UFA | $8.25M | $6.03M | -$2.22M |
| Yegor Chinakhov | PIT | 3yr | UFA | $6.25M | $4.06M | -$2.19M |
| Andrei Kuzmenko | PIT | 1yr | UFA | $5.00M | $2.84M | -$2.16M |
| Oliver Bjorkstrand | NYR | 1yr | UFA | $4.50M | $2.40M | -$2.10M |
| Pavel Dorofeyev | NYR | 7yr | UFA | $11.00M | $9.04M | -$1.96M |
| Roman Schmidt | MIN | 1yr | RFA | $0.85M | $2.78M | +$1.93M |
| Trevor van Riemsdyk | PIT | 2yr | UFA | $4.00M | $2.21M | -$1.79M |
| Ryan Shea | EDM | 5yr | UFA | $4.00M | $5.52M | +$1.52M |
| Andrew Peeke | UTA | 1yr | UFA | $1.00M | $2.46M | +$1.46M |
| Ivan Demidov | MTL | 8yr | Extension | $9.13M | $10.56M | +$1.44M |
| Luke Schenn | VAN | 1yr | UFA | $2.25M | $0.85M | -$1.40M |
| Ilya Mikheyev | TBL | 4yr | UFA | $3.85M | $5.24M | +$1.39M |
| Ian Cole | CHI | 1yr | UFA | $4.00M | $2.63M | -$1.37M |
| Kasperi Kapanen | EDM | 1yr | UFA | $2.60M | $1.34M | -$1.26M |
| Pavel Mintyukov | ANA | 5yr | RFA | $7.20M | $5.95M | -$1.25M |
| Simon Nemec | CGY | 5yr | RFA | $7.25M | $6.00M | -$1.25M |
| Hunter Skinner | NSH | 1yr | UFA | $0.85M | $2.07M | +$1.22M |
| A.J. Greer | ANA | 4yr | UFA | $4.25M | $3.06M | -$1.19M |
| Brandon Duhaime | TOR | 2yr | UFA | $2.60M | $1.53M | -$1.07M |
| Tyson Foerster | PHI | 8yr | Extension | $7.10M | $8.14M | +$1.04M |
| Ross Johnston | STL | 3yr | UFA | $2.00M | $1.05M | -$0.95M |
| Kevin Stenlund | UTA | 1yr | UFA | $2.75M | $1.87M | -$0.88M |
| Matias Maccelli | NYI | 1yr | UFA | $2.25M | $3.13M | +$0.88M |
| Cole Smith | CHI | 3yr | UFA | $3.00M | $2.20M | -$0.80M |
| Noel Acciari | PHI | 2yr | UFA | $2.80M | $2.03M | -$0.77M |
| Maxim Shabanov | MIN | 1yr | UFA | $1.60M | $0.85M | -$0.75M |
| Eetu Luostarinen | FLA | 8yr | Extension | $5.00M | $5.72M | +$0.72M |
| Teddy Blueger | TOR | 2yr | UFA | $2.50M | $3.21M | +$0.71M |
| Joe Veleno | NYR | 1yr | UFA | $1.20M | $1.89M | +$0.69M |
| Nicholas Robertson | PIT | 2yr | RFA | $3.25M | $2.57M | -$0.68M |
| Jeremy Lauzon | VGK | 6yr | Extension | $4.00M | $4.64M | +$0.64M |
| Nick Foligno | MIN | 1yr | UFA | $0.90M | $1.52M | +$0.62M |
| Alexander Kerfoot | NSH | 2yr | UFA | $3.50M | $2.90M | -$0.60M |
| Rasmus Andersson | VGK | 7yr | Extension | $8.50M | $9.04M | +$0.54M |
| Olen Zellweger | BUF | 3yr | RFA | $3.00M | $3.51M | +$0.51M |
| Cole Schwindt | FLA | 2yr | RFA | $0.88M | $1.36M | +$0.49M |
| Marc Gatcomb | VGK | 2yr | UFA | $0.88M | $1.36M | +$0.48M |
| Zach Aston-Reese | PHI | 2yr | UFA | $0.88M | $1.35M | +$0.48M |
| John Beecher | FLA | 1yr | UFA | $0.85M | $1.30M | +$0.45M |
| Jordan Harris | BOS | 1yr | UFA | $0.85M | $1.29M | +$0.44M |
| Justin Holl | WSH | 1yr | UFA | $0.90M | $1.34M | +$0.44M |
| Declan Carlile | PIT | 2yr | UFA | $1.50M | $1.07M | -$0.43M |
| Mackie Samoskevich | SEA | 3yr | RFA | $3.85M | $3.42M | -$0.43M |
| Paul Cotter | VAN | 1yr | UFA | $2.15M | $1.73M | -$0.42M |
| Carl Grundstrom | PHI | 1yr | UFA | $1.00M | $1.41M | +$0.41M |
| Jagger Joshua | MIN | 2yr | UFA | $1.75M | $2.16M | +$0.41M |
| Spencer Stastney | EDM | 1yr | RFA | $1.52M | $1.12M | -$0.40M |
| Erik Gudbranson | CBJ | 1yr | UFA | $1.75M | $2.15M | +$0.40M |
| Zach Bogosian | MIN | 1yr | UFA | $1.25M | $0.85M | -$0.40M |
| Jeff Malott | ANA | 3yr | UFA | $1.85M | $1.46M | -$0.39M |
| Jack Roslovic | TOR | 2yr | UFA | $4.00M | $4.38M | +$0.38M |
| Jeffrey Viel | TBL | 5yr | UFA | $2.50M | $2.88M | +$0.38M |
| Mario Ferraro | WPG | 3yr | RFA | $4.00M | $4.37M | +$0.37M |
| Nico Hischier | NJD | 5yr | Extension | $11.70M | $12.06M | +$0.36M |
| Justin Barron | NSH | 1yr | RFA | $1.57M | $1.22M | -$0.35M |
| Ryan Lomberg | CBJ | 2yr | UFA | $1.30M | $1.62M | +$0.32M |
| Emil Andrae | TOR | 2yr | RFA | $1.55M | $1.87M | +$0.32M |
| Marc Del Gaizo | NYR | 2yr | UFA | $0.88M | $1.16M | +$0.29M |
| David Gustafsson | PIT | 1yr | UFA | $0.85M | $1.13M | +$0.28M |
| Mathieu Joseph | EDM | 1yr | UFA | $1.00M | $1.28M | +$0.28M |
| Boone Jenner | WSH | 4yr | UFA | $5.75M | $6.02M | +$0.27M |
| Nick Jensen | ANA | 2yr | UFA | $2.25M | $2.51M | +$0.26M |
| Victor Olofsson | VGK | 1yr | UFA | $1.64M | $1.39M | -$0.25M |
| Max Jones | EDM | 1yr | UFA | $0.85M | $1.10M | +$0.25M |
| Mavrik Bourque | NSH | 6yr | RFA | $5.50M | $5.75M | +$0.25M |
| Hendrix Lapierre | PIT | 2yr | RFA | $1.30M | $1.55M | +$0.25M |
| Nick Cousins | OTT | 2yr | UFA | $1.59M | $1.81M | +$0.22M |
| Peyton Krebs | BUF | 4yr | RFA | $4.50M | $4.28M | -$0.22M |
| Vincent Desharnais | WSH | 4yr | UFA | $4.20M | $3.98M | -$0.22M |
| Curtis Douglas | SEA | 2yr | UFA | $1.25M | $1.04M | -$0.21M |
| Mason Marchment | SJS | 5yr | UFA | $6.75M | $6.54M | -$0.21M |
| Erik Haula | LAK | 2yr | UFA | $3.60M | $3.41M | -$0.19M |
| Arseny Gritsyuk | NJD | 3yr | Extension | $3.25M | $3.07M | -$0.18M |
| Brett Leason | SJS | 1yr | UFA | $0.85M | $1.03M | +$0.18M |
| Viktor Arvidsson | DET | 2yr | UFA | $5.00M | $5.16M | +$0.16M |
| Scott Laughton | LAK | 3yr | UFA | $3.50M | $3.65M | +$0.15M |
| Scott Perunovich | LAK | 1yr | UFA | $0.85M | $0.99M | +$0.14M |
| Arttu Hyry | DAL | 2yr | UFA | $0.90M | $1.04M | +$0.14M |
| Colton Dach | EDM | 2yr | RFA | $1.20M | $1.07M | -$0.13M |
| Vinnie Hinostroza | COL | 2yr | UFA | $0.88M | $1.01M | +$0.13M |
| Conor Sheary | BUF | 1yr | UFA | $0.85M | $0.98M | +$0.13M |
| Jonas Rondbjerg | VGK | 1yr | UFA | $0.85M | $0.97M | +$0.12M |
| Alex Barre-Boulet | SJS | 2yr | UFA | $0.88M | $1.00M | +$0.12M |
| Connor Clifton | BOS | 2yr | UFA | $2.25M | $2.13M | -$0.12M |
| Brendan Gaunce | BOS | 2yr | UFA | $0.88M | $0.99M | +$0.11M |
| Alexander Petrovic | FLA | 2yr | UFA | $0.88M | $0.98M | +$0.11M |
| Jonatan Berggren | STL | 1yr | UFA | $2.00M | $1.90M | -$0.10M |
| Bobby Brink | MIN | 1yr | UFA | $2.75M | $2.85M | +$0.10M |
| Vladislav Kolyachonok | NJD | 1yr | UFA | $0.85M | $0.94M | +$0.09M |
| Mitchell Chaffee | NYI | 1yr | UFA | $0.85M | $0.94M | +$0.09M |
| Matthew Kessel | NYI | 1yr | UFA | $0.85M | $0.93M | +$0.08M |
| Andreas Englund | CGY | 1yr | UFA | $0.90M | $0.98M | +$0.08M |
| Jacob Bryson | DET | 1yr | UFA | $0.85M | $0.92M | +$0.07M |
| Joel Kiviranta | DAL | 1yr | UFA | $1.00M | $1.06M | +$0.06M |
| Henry Thrun | WPG | 1yr | RFA | $0.85M | $0.90M | +$0.05M |
| Dennis Gilbert | BUF | 1yr | UFA | $0.85M | $0.90M | +$0.05M |
| Daemon Hunt | MIN | 1yr | UFA | $0.90M | $0.85M | -$0.05M |
| Noah Juulsen | COL | 2yr | UFA | $1.10M | $1.14M | +$0.04M |
| Akil Thomas | VAN | 1yr | UFA | $0.85M | $0.89M | +$0.04M |
| Dennis Cholowski | NYR | 2yr | UFA | $0.88M | $0.91M | +$0.03M |
| Colton White | CBJ | 2yr | UFA | $0.88M | $0.91M | +$0.03M |
| Vinni Lettieri | TOR | 1yr | UFA | $0.85M | $0.88M | +$0.03M |
| Oskar Sundqvist | STL | 1yr | UFA | $0.85M | $0.88M | +$0.03M |
| Jacob Quillan | TOR | 1yr | RFA | $0.85M | $0.87M | +$0.02M |
| John Carlson | TBL | 2yr | UFA | $8.50M | $8.52M | +$0.02M |
| Jonny Brodzinski | WSH | 1yr | UFA | $0.85M | $0.87M | +$0.02M |
| Donovan Sebrango | FLA | 1yr | UFA | $0.85M | $0.86M | +$0.01M |
| Anders Lee | UTA | 3yr | UFA | $5.40M | $5.41M | +$0.01M |
| Josh Dunne | WSH | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Justin Kirkland | MIN | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Noah Gregor | WPG | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Ben Jones | CGY | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Jansen Harkins | TBL | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Kyle Burroughs | DAL | 1yr | UFA | $0.85M | $0.85M | +$0.00M |
| Brett Berard | MTL | 1yr | RFA | $0.85M | $0.85M | +$0.00M |
Goalies (14)
| Player | Team | Term | Type | Actual AAV | Predicted AAV | Diff (Pred - Actual) |
|---|---|---|---|---|---|---|
| David Rittich | NJD | 1yr | UFA | $1.00M | $2.59M | +$1.59M |
| Dan Vladar | PHI | 5yr | Extension | $5.50M | $6.80M | +$1.30M |
| Eric Comrie | SJS | 2yr | UFA | $1.15M | $2.37M | +$1.22M |
| Stuart Skinner | WPG | 2yr | UFA | $3.75M | $4.71M | +$0.96M |
| Daniil Tarasov | DET | 1yr | UFA | $2.00M | $2.91M | +$0.91M |
| Jakub Dobes | MTL | 3yr | Extension | $5.36M | $6.10M | +$0.74M |
| Frederik Andersen | EDM | 1yr | UFA | $2.80M | $2.08M | -$0.72M |
| Sergei Bobrovsky | TOR | 3yr | UFA | $7.00M | $6.53M | -$0.47M |
| Arturs Silovs | PIT | 1yr | UFA | $2.80M | $3.09M | +$0.29M |
| Leevi Merilainen | OTT | 1yr | RFA | $1.10M | $0.85M | -$0.25M |
| Calvin Pickard | MIN | 1yr | UFA | $1.00M | $0.85M | -$0.15M |
| Samuel Ersson | OTT | 2yr | UFA | $2.20M | $2.07M | -$0.13M |
| Joel Blomqvist | PIT | 2yr | UFA | $0.88M | $0.85M | -$0.03M |
| Vitek Vanecek | NYI | 1yr | UFA | $1.00M | $1.00M | -$0.00M |
Try the Contract Predictor
The same model behind this analysis is available as an interactive tool. Browse all active NHL skater and goaltender contracts and predict market-rate contract values.
Data sources: Model training data supplied by PuckPedia (through April 6, 2026). Post-cutoff signings compiled from PuckPedia, ESPN, and NHL.com. Analysis based on PuckTheory contract predictor v1.1.0.