Research note · v1.38
Fair AAV from open data
2025-26 window · last calibrated Oct 1, 2026, 8:16 PM
Thesis
Open production (MoneyPuck) plus curated contract AAVs can produce a transparent fair-AAV estimate whose market-cohort residuals are measurable and improvable — useful for judging mid-contract NHL deals without licensed WAR or full CBA tooling.
This site is the lab demo. The career asset is the method, the calibration numbers, and the public misses — not a cap encyclopedia and not a takes factory.
Problem
Fans and media argue overpays from vibes. Teams price contracts with private models. Between those poles there is little public, auditable fair-value work that separates (a) bad salary data, (b) ELC structure, and (c) real production–price gaps.
We answer one question per player: given same-season impact and the paycheck, is the deal rich, fair, or a bargain — and how wrong is the model on a held-out-style market cohort?
Data & window
- Production: MoneyPuck official CSVs (2025-26), credited.
- Rosters: NHL season roster API for 2025-26 — not
/currentFA mix. - Contracts: curated / import AAV only. No Spotrac scrape. No LTIR / burial / retention math.
Stars Lab 2026-27 desk on gold AAV; Worth production stays on 2025-26.
Method (summary)
Transparent TypeScript heuristics (v1.38) — not a trained ML model. Skater fair AAV blends impact-style rates (adj/HD xG, primary points, 5v5 rel xG%, special teams, two-way proxies) with an open xWAR proxy (~⅓ weight) and a light market-comps blend. Goalies prefer MoneyPuck GSAX, tempered. Aging curves differ by F / D / G. Labels: overpay if surplus ≤ −$2M, underpay if ≥ +$2M.
Full dial list: methodology.
Calibration
We do not judge the model on ELC bargains. Market cohort = curated AAV ≥ $2M, age ≥ 24, 40+ GP, not ELC/bridge.
Live residuals: /research/misses. CLI twin: npm run calibrate.
Known failures
- Stale AAV still drives many loud residuals — fix data before dialing.
- xWAR is a proxy, not Evolving-Hockey GAR/WAR. Do not cite it as licensed WAR.
- Same-season only — this is not yet an ex-ante “will this deal look bad in year 3?” model. That is the 90-day research stretch goal.
- Goalie variance and small samples stay loud; confidence flags exist for a reason.
90-day focus
- Publish and watch market MAE / bias in pp %cap every model change.
- Clear AAV errors in the top misses list.
- One forward test: do large |surplus| names mean-revert in production or next contract? Write it up.
Lab charter (repo): RESEARCH.md