Banger Environment Index
Expected blocked shots vs results, Thursday, Oct 1
Every skater playing tonight, ranked by expected blocked shots. A player's own block rate and ice time drive the number. The Banger Environment Index then nudges it for how many shot attempts tonight's opponent takes and for venue. Shots that hit a teammate never count: the NHL credits those to nobody.
8 games · 288 skaters · updated Oct 4, 9:20 AM ET · model bangers-1.1.0
How the projections did (8 finished games): 288 skaters were projected for 220 blocked shots, and those who dressed recorded 186. 69 projected skaters did not dress (scratched or a late lineup change). Mean absolute error per projected skater was 0.76 (0.77 for those who dressed; season benchmarks 0.72 and 0.72).
Game environments for blocks
Shot attempts is how much the opponent shoots compared with an average team. The environment index adds venue and the arena factor. Above 1.00 means more shots to block than average.
| Team | Opponent | Opp. shot attempts | Env. index | Exp. team blocked shots | Actual |
|---|---|---|---|---|---|
| PHI7:00 PM ET | @ NJD | 1.03 | 1.05 | 15.5 | 32 |
| NJD | vs PHI | 0.92 | 0.90 | 12.2 | 10 |
| TBL7:00 PM ET | @ NYR | 0.95 | 0.97 | 12.6 | 16 |
| NYR | vs TBL | 1.02 | 1.00 | 14.0 | 23 |
| BUF7:00 PM ET | @ CBJ | 1.03 | 1.04 | 14.7 | 8 |
| CBJ | vs BUF | 1.00 | 0.99 | 14.3 | 15 |
| MIN8:00 PM ET | @ NSH | 0.99 | 1.00 | 15.4 | 10 |
| NSH | vs MIN | 1.01 | 0.99 | 13.1 | 13 |
| SEA9:00 PM ET | @ CGY | 1.00 | 1.01 | 15.0 | 20 |
| CGY | vs SEA | 0.94 | 0.93 | 13.8 | 9 |
| CHI9:30 PM ET | @ UTA | 1.02 | 1.04 | 13.5 | 11 |
| UTA | vs CHI | 0.90 | 0.88 | 12.5 | 11 |
| EDM10:00 PM ET | @ VAN | 0.94 | 0.95 | 13.7 | 17 |
| VAN | vs EDM | 1.03 | 1.01 | 13.9 | 12 |
| FLA10:00 PM ET | @ SJS | 0.96 | 0.98 | 12.5 | 12 |
| SJS | vs FLA | 0.99 | 0.98 | 13.8 | 21 |
Top forwards by expected blocked shots
| # | Player | Game | Exp. TOI | Blocks/60 | Env. | Exp. blocks | P(2+ blocks) | Actual |
|---|---|---|---|---|---|---|---|---|
| 1 | Elias PetterssonF | VAN vs EDM | 18:45 | 4.1 | 1.01 | 1.30 | 37% | 0 |
| 2 | Ryan HartmanF | MIN @ NSH | 19:22 | 3.8 | 1.00 | 1.23 | 34% | 0 |
| 3 | Michael McCarronF | MIN @ NSH | 15:02 | 4.1 | 1.00 | 1.03 | 28% | 0 |
| 4 | Alexander WennbergF | SJS vs FLA | 19:50 | 3.2 | 0.98 | 1.02 | 27% | 1 |
| 5 | Noel AcciariNew team · 3 GP with PHIF | PHI @ NJD | 15:03 | 3.8 | 1.05 | 1.01 | 27% | 2 |
| 6 | Ryan O'ReillyF | NSH vs MIN | 21:26 | 2.4 | 0.99 | 0.86 | 21% | 0 |
| 7 | Eeli TolvanenNew team · 3 GP with NYRF | NYR vs TBL | 14:31 | 3.5 | 1.00 | 0.85 | 21% | 1 |
| 8 | Matt BoldyF | MIN @ NSH | 22:32 | 2.2 | 1.00 | 0.85 | 21% | 0 |
| 9 | Jiri KulichF | BUF @ CBJ | 15:59 | 3.0 | 1.04 | 0.84 | 21% | 0 |
| 10 | Anton FrondellF | CHI @ UTA | 17:33 | 2.8 | 1.04 | 0.84 | 21% | 1 |
| 11 | Garnet HathawayNew team · 2 GP with FLAF | FLA @ SJS | 10:54 | 4.4 | 0.98 | 0.78 | 19% | 0 |
| 12 | Matty BeniersF | SEA @ CGY | 17:59 | 2.6 | 1.01 | 0.78 | 19% | 2 |
| 13 | Anthony CirelliF | TBL @ NYR | 19:31 | 2.4 | 0.97 | 0.77 | 18% | 2 |
| 14 | Liam OhgrenF | VAN vs EDM | 17:16 | 2.6 | 1.01 | 0.77 | 18% | 2 |
| 15 | Aleksander BarkovF | FLA @ SJS | 20:32 | 2.3 | 0.98 | 0.76 | 18% | 1 |
| 16 | Tyson FoersterF | PHI @ NJD | 18:07 | 2.4 | 1.05 | 0.75 | 18% | 1 |
| 17 | Matvei GridinF | CGY vs SEA | 17:15 | 2.8 | 0.93 | 0.73 | 17% | 0 |
| 18 | Shane WrightF | SEA @ CGY | 12:18 | 3.4 | 1.01 | 0.71 | 16% | 1 |
| 19 | Frederick GaudreauF | SEA @ CGY | 15:43 | 2.6 | 1.01 | 0.70 | 16% | 2 |
| 20 | Nick SchmaltzF | UTA vs CHI | 22:48 | 2.1 | 0.88 | 0.70 | 16% | 0 |
| 21 | Charlie CoyleF | CBJ vs BUF | 19:29 | 2.1 | 0.99 | 0.69 | 16% | 1 |
| 22 | Bobby BrinkF | MIN @ NSH | 15:56 | 2.6 | 1.00 | 0.69 | 15% | 0 |
| 23 | Kevin StenlundF | UTA vs CHI | 14:53 | 3.0 | 0.88 | 0.67 | 15% | 1 |
| 24 | Christian DvorakF | PHI @ NJD | 16:58 | 2.2 | 1.05 | 0.66 | 14% | 2 |
| 25 | Lawson CrouseF | UTA vs CHI | 20:59 | 2.1 | 0.88 | 0.65 | 14% | 0 |
Top defensemen by expected blocked shots
| # | Player | Game | Exp. TOI | Blocks/60 | Env. | Exp. blocks | P(2+ blocks) | Actual |
|---|---|---|---|---|---|---|---|---|
| 1 | Cam YorkD | PHI @ NJD | 22:57 | 5.4 | 1.05 | 2.15 | 61% | 3 |
| 2 | Mattias SamuelssonD | BUF @ CBJ | 23:52 | 5.0 | 1.04 | 2.08 | 59% | 0 |
| 3 | Brock FaberD | MIN @ NSH | 29:24 | 4.2 | 1.00 | 2.05 | 58% | dnp |
| 4 | Connor MurphyD | EDM @ VAN | 20:13 | 6.4 | 0.95 | 2.04 | 58% | 6 |
| 5 | Conor TimminsD | BUF @ CBJ | 17:16 | 6.7 | 1.04 | 2.02 | 58% | dnp |
| 6 | Travis SanheimD | PHI @ NJD | 24:36 | 4.5 | 1.05 | 1.94 | 56% | 3 |
| 7 | Zach WhitecloudD | CGY vs SEA | 22:06 | 5.7 | 0.93 | 1.93 | 56% | 1 |
| 8 | Nick SeelerD | PHI @ NJD | 17:08 | 6.4 | 1.05 | 1.91 | 55% | 5 |
| 9 | Jonas BrodinD | MIN @ NSH | 18:30 | 6.1 | 1.00 | 1.89 | 54% | 5 |
| 10 | Adam LarssonD | SEA @ CGY | 20:48 | 5.2 | 1.01 | 1.83 | 53% | 2 |
| 11 | MacKenzie WeegarD | UTA vs CHI | 21:35 | 5.6 | 0.88 | 1.78 | 52% | 1 |
| 12 | Brett PesceD | NJD vs PHI | 19:59 | 5.9 | 0.90 | 1.77 | 51% | 0 |
| 13 | Jared SpurgeonD | MIN @ NSH | 20:00 | 5.2 | 1.00 | 1.74 | 50% | 3 |
| 14 | Marcus PetterssonNew team · 3 GP with NYRD | NYR vs TBL | 21:55 | 4.6 | 1.00 | 1.68 | 49% | 5 |
| 15 | Erik GudbransonD | CBJ vs BUF | 17:21 | 5.8 | 0.99 | 1.65 | 48% | 3 |
How the projections work
- Player rate
- Blocked shots per 60 minutes over all situations. Recent games count more (half-life 40 games), and last season carries in at 50% weight. The rate is shrunk toward the forward or defense average with 50 minutes of league-average ice time, so a five-game heater barely moves it.
- Expected ice time
- A recency-weighted average of his last games (each game counts 0.8× the one after it). The expected lineup is the 18 skaters who dressed in the team's latest game this season. Anyone who has since moved to another club is dropped, and the gaps are filled from the previous game, then from the club's current roster (call-ups, new arrivals, season openers). A debut with no history gets his position's average rate and a depth-role 12 minutes (forward) or 17 minutes (defenseman). We don't read announced lines, so a late scratch still shows.
- Opponent: shot attempts
- More attempts against means more chances to block. The index is the opponent's shot attempts per game (shots on goal plus attempts that were blocked, recency-weighted and shrunk toward average), where 1.00 is average. Most games fall between 0.91 and 1.03.
- Venue and arena
- Road teams block slightly more (3% in 2024-25), because they spend more time defending. Arena scorer bias for blocks shrank sharply with centralised recording in 2024-25 and was undetectable in 2025-26.
- How accurate is it?
- Fitted on 2024-25 and tested on every skater-game of 2025-26 (46,636 games), with each projection made before its game. Poisson deviance: model 1.093 vs 1.108 for the player's season-to-date average per game (1.4% better), and mean absolute error 0.718 vs 0.722. Single games are noisy, so the gain is modest. The opponent effect shows up more clearly at team level: the correlation between forecast and actual team blocked shots rises from 0.22 (own rate only) to 0.32 once the opponent is included. These numbers assume the skater dresses. With our lineup rule, 6% of projected skaters (1.1 per team) did not dress in 2025-26. Counting those as zero blocked shots, the deviance is 1.121 and the MAE 0.719, and team totals land within 2.6% of actual.
- Probabilities
- P(2+ blocks) comes from a negative binomial around the expectation (size 11.8, fitted on 2024-25). It is calibrated: in 2025-26, games we gave about 35% landed 34% of the time, and games we gave about 55% landed 54%.
Back-to-backs moved blocked shots by under 1% in both test seasons, and the pregame strength gap (a stand-in for expected score state) by 0–2%, so both are left out. Projections refresh several times a day, and lineups come from each team's recent games, not tonight's announced lines.
FAQ
How are expected blocked shots calculated?
Expected blocked shots = the player's blocked shots per 60 minutes (recency-weighted and shrunk toward his position's average) × his expected ice time × the Banger Environment Index for tonight's opponent and venue. An index of 1.05 means a 5% better than average spot.
What is the Banger Environment Index?
A multiplier for how block-friendly tonight is: how many shot attempts the opponent takes per game, times a small venue factor (road teams block slightly more), times the arena scorer factor. 1.00 is a league-average spot.
Why do teammate blocks matter?
The NHL play-by-play logs a shot that hits a teammate as a blocked shot, but nobody is credited with a block. It happens about 1.4 times per team per game, roughly 9% of all blocked-shot events in 2025-26, and some of the biggest "blocker vs shooter" pairs in raw play-by-play are actually teammates. Our block counts use official credited blocks only, and our shot-attempt counts leave teammate blocks out.
Does the arena still matter for hits and blocks?
Much less than it used to. Up to 2023-24 some rinks credited 40% more hits than others. When the NHL centralised event recording in 2024-25 the effect shrank to within about ±6%, and in 2025-26 it did not repeat from one half-season to the next at all, so the factor is 1.00 everywhere. One more season will show whether it is gone for good. The arena pages show the full history.
Are these betting picks?
No. They are projections for fantasy hockey: an expectation and a probability, with the method and the error rate published. They are built from public NHL box scores and play-by-play.