Skaters
Even strength uses MoneyPuck 5on5, power play uses 5on4, shorthanded uses 4on5, and all-situation totals use all. Overlapping rows are never added together.
EVProduction = 1.5 × EVGoals + EVAssists PPProduction = 1.5 × PPGoals + PPAssists EVWaste = EVTOI − EVProduction / position_EV_rate PPWaste = PPTOI − PPProduction / league_PP_rate GAX = Goals − xG GD5 = 5v5 GoalsFor − 5v5 GoalsAgainst
SkaterSadnessPoints = 1.575 × GP + 0.252 × EVWaste + 0.756 × PPWaste − 3.150 × SHPoints − 12.600 × GAX − 3.150 × GD5 + 0.630 × MissWaste + 1.260 × BlockWaste + 2.100 × NetPenaltiesTaken
Negative GAX and negative 5v5 goal differential increase sadness points.
Goalies
GSAx = xGA − GA ReboundExcess = Rebounds − ExpectedRebounds GoalieSadnessPoints = 0.1071 × TOI − 8.925 × GSAx + 0.5355 × ReboundExcess + 7.140 × ChaseProxy − 7.140 × Shutouts + 7.140 × RegulationLosses − 10.710 × Wins − 3.570 × OTL
A ChaseProxy is recorded when a starter plays under 55 minutes, allows at least three goals, and a teammate goalie records positive ice time. It is a deterministic proxy, not confirmation of a performance-related pull.
Negative goalie GSAx increases sadness points.
Weekly calculation
Game inputs are summed across the Monday–Sunday scoring period first. The displayed coefficients already include the 4.2 scale and, for goalies, the 0.85 position adjustment. Each displayed contribution therefore adds directly to Sadness Points. Calculations keep full precision; screens show two decimals.