From projected ice time to a de-vigged fair line, an edge, and a stake โ in plain English, end to end.
Every number on this site is built the same way: we project how a player will actually perform tonight, turn that into a full range of outcomes, compare it to a fair (vig-removed) market price, and only call a prop a play when our edge is real and our confidence is earned. Here is the whole chain.
Production starts with opportunity, and opportunity is minutes. We project each skater's even-strength, power-play and short-handed time on ice for tonight from their recent role, how their coach has deployed them, and how the game is likely to flow (pace, expected score state, rest and back-to-backs). For goalies we project whether they start and how many shots they'll face. A player who has quietly moved up a line or onto the top power-play unit gets credited for it before the box score does.
For each skater we hold their underlying rates per 60 minutes โ goals, assists, points, shots on goal, blocked shots and power-play points per 60 โ rather than raw per-game totals. Rates are stabilized: recent form is weighted toward the present, but we regress small samples back toward what the player and their role have historically supported, so a three-game hot streak doesn't masquerade as a new true talent. Multiplying a rate by the projected minutes from Step 1 gives a baseline expectation for tonight.
The same player is a different bet against different opponents. We adjust the baseline for how much the opponent suppresses each stat โ the shots, scoring chances and points they allow to the position the player fills, and how well they defend the situations that player lives in (rush chances, the cycle, the power play). A heavy shot-volume winger into a team that bleeds shots gets nudged up; the same winger into a stingy, shot-throttling defense gets nudged down.
Not all shots are equal, so we don't treat them equally. We weight a player's chances by where and how they're generated โ slot and high-danger looks finish far more often than point shots and perimeter attempts. This separates a player whose volume comes from dangerous ice (more likely to convert to goals and points) from one padding shot totals from low-value spots, and it sharpens the goals and points projections beyond what raw shot counts would suggest.
Saves are a volume stat first: a save needs a shot to stop. We pair the opponent's projected shot generation with the starter's expected minutes and save rate to project saves faced and saves made. A merely-average goalie behind a leaky team into a high-event opponent can be a strong saves-over even when nobody's calling them elite โ the workload, not the name, drives the number.
Real outcomes are random, so a single projected number isn't enough โ we model the full distribution of what a player could do tonight (count outcomes like goals and points behave differently from continuous ones like shots, and we treat each accordingly). From that distribution we read the probability of clearing any given line, plus the range you'll see on player cards. This is what lets us price a 1.5-points line and a 3.5-shots line on the same honest footing.
A sportsbook's posted odds are not a clean probability โ they include the book's margin (the vig). Before we ever compare, we strip that margin out across both sides of the market to recover the no-vig fair probability: what the price implies once the house's cut is removed. Our edge is measured against that fair line, not the raw price โ so the "edge" you see is genuine disagreement with a vig-free market, not an artifact of which side the juice sits on.
Edge is the gap between our probability of an outcome and the no-vig fair probability for the same outcome. EV (expected value) then takes that edge to the best available price across the books โ because the same pick is worth more at +115 than at โ105. We show the edge on both sides of every prop, so it's clear the pick is simply the better side, never a free win.
Kelly sizing answers "how much should I stake given an edge of X?" โ so it is only as trustworthy as the edge you feed it. This site does not have one it can defend: the ledger holds 912 rows, 661 of them seed rows, leaving 139 graded non-seed picks that all fall on a single slate date, and clv_public.json reports status insufficient_sample. With one date cluster no confidence interval can even be computed. So on 2026-07-27 we stopped publishing a stake, an edge, an EV and a letter grade, and left the projections, the lines, the de-vigged market prices and the hit rates. Cap anything you do bet at 1โ2% of your bankroll.
A model is only as good as it is honest, so we grade ourselves two ways. Accuracy asks whether things we call 60% actually happen about 60% of the time โ we bucket predictions and compare predicted to actual hit rate. Closing-line value (CLV) asks whether the price we logged beat the market's closing number; over a large sample, consistently beating the close is the surest sign an edge is real rather than lucky. We grade ourselves on both, win or lose, with nothing hand-picked after the fact.
Player: a middle-six winger, "J. Sample," over 2.5 shots on goal tonight.
Illustrative numbers for a made-up player โ but every real pick walks this exact path.