← Dashboard

NHL cash DFS: research & validation

Research registered October 8, 2026 · NHL model v1.0 · separate from every football model

Experimental. There is no validated cash win rate or profitability claim. Historical as-of salary, goalie/role and opponent-field archives were not available at implementation. Current Showdown scoring could not be verified; that format is held from optimization.

Cash is not one contest format

FormatRelevant decisionEvidence and limit
Head-to-headBeat one opponent after fees and tie rules.Opponent skill/selection is unknown. A maximum-mean lineup is a surrogate, not an opponent-specific optimum.
50/50Top-half equal prizes, with actual fees and payouts.Not interchangeable with a 2× double-up; contest-specific ties may change the return.
Double-upNearly half of entrants receive twice the fee.A field-derived cutoff and fee/payout archive is needed to evaluate probability of cashing and expected net return.

Official references: H2H, 50/50, double-ups, ties and commission. Retrieved October 8, 2026. The app makes no entries or payments.

Strategy comparison

Claim to investigateImplementation decision
Reliable shots/blocks and playing opportunityModel the scoring events and their bonuses. Never call shot volume guaranteed points. Current lines, PP usage and injury-driven opportunity remain material missing inputs.
Pay up for favorites vs save on goalieNeither is a universal rule. Saves, goals allowed, wins, OT losses, complete-game shutouts and start uncertainty belong in one conditional goalie model.
Stack lines vs diversify cash exposureNo automatic cash stack or invented correlation penalty. Tournament evidence cannot establish cash benefit; field-relative variance is different from lineup variance.
Ownership/chalkNo fabricated ownership. Opponent-relative utility needs actual fields and their joint scoring relationship.
Cheap promoted playersHistorical rates will miss real role changes. Source verification is shown, but the initial model does not pretend to estimate a new role without data.

The recent DraftKings NHL guide corroborates Classic scoring and offers editorial lineup guidance, not a controlled cash-performance study. The 2020 shot-volume article uses a conflicting shot-point value: its coefficient was rejected. Other strategy viewpoints reviewed include DobberHockey, DFS Army and LineStar. Their differing advice is treated as testable expert opinion, not fitted model weights.

Why maximum mean is only a surrogate

Haugh & Singal (2019) formulate opponent-aware expected reward in double-up and top-heavy settings, with NFL empirical results. This motivates a future field-aware NHL model but does not validate this one. Hunter, Vielma & Zaman (2016) study top-heavy portfolios, including hockey. Their variance/correlation ideas are not blindly transplanted into a single cash lineup.

Current objective: sum of model means under salary/roster/eligibility constraints. No arbitrary “safety,” ownership, median or variance weight is added. The solver proves this defined optimum only if its full bounded search finishes; otherwise it reports best found with a valid relaxed upper bound. It does not claim to maximize cash probability. H2H/50/50/double-up selection currently changes the explanation, not the objective.

Projection candidates and selection status

CandidateMerit / riskStatus
Trailing points per played gameAuditable benchmark; ignores changes in opportunity.Retained in evaluation tooling.
Event/bonus empirical shrinkageTransparent means and nonlinear bonus frequencies; preserves observed goalie event dependence. Small samples/role changes remain risks.Experimental initial baseline, not an empirically proven winner.
Pregame ice-time / role opportunityCan separate expected minutes from rates. Realized test-game minutes would leak.Blocked from honest comparison without as-of role inputs.
Hierarchical Poisson / negative binomialPool small samples and account for overdispersion. Need count fit and joint bonus calibration.Research candidate; not silently deployed as calibrated probabilities.
Tree / boosted shot-event modelCan use skill/context, but future shot coordinates are not pregame features.Noel (2025) supports research, not direct pregame DFS superiority.
Market-assisted inputsPotential matchup/goalie context; as-of timing and permissions matter.A separate NHL Vegas integration is authorized if needed. This fallback release makes no odds calls and changes no football data, caches or budgets.

Baseline version nhl-empirical-shrink-1.0-experimental: up to 82 prior player games; shrinkage strength 10 is a registered starter parameter, not a tuned success factor. Priors use captured same-position game rows at the prediction cutoff. The event-based estimator never fills missing game stats with DraftKings FPPG. Mean points, historical median and history quantiles remain separate. History quantiles are uncalibrated and not forecast coverage claims. Rink recording-effects research motivates diagnostics; old rink coefficients are not reused.

Salary-average fallback (October 8 update)

The slate builder nhl-slate-baseline-1.0-experimental prefers the complete-stat estimator above. If a player has no usable game history, it uses the immutable salary CSV's AvgPointsPerGame unchanged and labels it DK avg baseline. This naive historical-average forecast is not a matchup-adjusted or validated cash projection. No sample size, event counts, bonus probabilities or forecast intervals are invented. Real zero and negative averages are preserved; blanks remain missing. Goalie confirmation requirements are unchanged. Classic salary imports now build a snapshot automatically. Rebuild after recording availability or importing more detailed stats. NHL Vegas lines were not needed for this fallback and no provider credits were spent.

One scoring contract, with explicit gates

Current Classic weights: goals 8.5, assists 5, shots 1.5, blocks 1.3, shorthanded points +2, shootout goals 1.5. Bonuses: 3 points for 3+ goals, 5+ shots, 3+ blocks and 3+ points. Goalies also receive offensive statistics, wins +6, saves 0.7, goals against −3.5, OT losses +2, sole-goalie complete-game shutouts +4 and 35+ saves +3. Nonlinear bonuses use historical event frequencies, not thresholds applied to average counts. Zero/negative valid results are not missing values.

Classic baseline roster: C,C,W,W,W,D,D,G,UTIL; utility excludes goalies; $50,000; skaters from three teams across multiple games. Conservative current-rule checks remain required. The dynamic official Classic and Showdown Captain rule bodies were inaccessible to the research reader. Showdown salaries can be retained, but scoring/optimization/export stay blocked. No old faceoff scoring or NFL Captain assumptions are used. Late swap also stays disabled until the specific contest contract is captured.

Data lineage and coverage

Salary inputs can come from manual CSV uploads or a connected, approved NHL salary feed. Admins can upload files without a per-file permission checkbox; source URLs and notes are optional. Manual uploads are recorded as user-supplied files without claiming a reuse attestation. No automated DraftKings or NHL collection is enabled. Public reachability is not permission: DraftKings terms and NHL terms restrict unauthorized automated collection. The optional SportsDataIO NHL salary adapter requires a licensed key and approved display/reuse rights. It checks today plus seven upcoming Eastern dates, and source delivery may lag DraftKings. It does not prove coverage beyond that window. Without a connected feed, the admin pull button only archives expired listings and reports the missing connection. Each salary import covers that file only, never all published slates. Positive NHL salaries, dated game times and provider IDs are required. Player matching uses exact normalized full name, team and position; ambiguous matches remain missing.

Raw historical exports are immutable and admin-only. Projection snapshots retain each input import ID and content hash. Public final-point revisions contain derived points, not raw historical event rows. Salary/model pointers publish atomically, and stale responses cannot replace a newer snapshot. Availability sources carry observation times; these are manual checks, not an automatic news feed. Confirmations expire after 12 hours. Provisional mode permits unknown goalies, not known nonstarters. Stats-based projections are conditional on playing/starting. Salary-average baselines have unknown averaging periods and starting-goalie usage. Unverified skater availability remains a material limitation.

The model reads at most the newest eight imports, 20,000 rows and 10 MB per run; any skipped history is disclosed. Completed games must precede the forecast cutoff, and captured imports must also precede it. Stat revisions create new snapshots, never rewrite previous forecasts. Reconstructed points are not DraftKings payout-time verification. Saved records are advised decisions, not entries, cash wins or profits.

Historical-stat import field guide

Download the blank CSV header. A qualified data export can be mapped into this template; the app does not fetch a restricted source for you. Use one row per player per completed game. CSV or a JSON array with the same keys is accepted; JSON may nest event fields under stats. Maximum 3 MB and 10,000 rows per import.

Frozen validation protocol

Proposed development 2023–24, tuning 2024–25 and untouched test 2025–26; rolling chronological origins and priors rebuilt at each origin. Only final games before the cutoff are allowed, with a conservative 12-hour buffer where no finalization timestamp exists. No future salaries, observed starter information, realized minutes or later line changes may enter predictors. Date-block bootstrap, MAE/RMSE/bias, within-slate ranking/top-k regret and calibrated distribution metrics are required when the respective data exists.

Actual NHL historical holdout MAE, ranking accuracy, distribution coverage, cash rate and ROI: BLOCKED / NOT MEASURED. Synthetic scoring and exhaustive solver fixtures validate software, not a real-world projection edge. Passing a build is not proof that live salary coverage, authenticated workflows or physical-device usability passed.

Backend permissions reuse existing Supabase auth/RLS/admin checks. NHL saves are private with the football-compatible three-per-slate limit. Model/data assets load on demand. No new schedule or paid source was created. Release and device acceptance evidence lives in the source-backed implementation report; unresolved live-source or browser gates must remain disclosed.