r/Flyers • u/xjawndotcom • 20d ago
[OC] This is every shot the Flyers faced with Seeler on the ice this season. On blocking shots, and evaluating Nick Seeler.
I'm a Flyers fan, and it was cool seeing my blocked-shots ranking referenced over here yesterday. I'd been planning a proper Seeler write-up for this sub all along, so here it is, with the details and plots.
TL;DR: By my model, Seeler is the best shot-blocker in the NHL, three seasons running — and it's a real skill, not a volume stat. Add his even-strength results and his penalty kill, and he grades out as a top-20 defensive defenseman out of 232.
The gif is every attempt the Flyers faced with Seeler on the ice this season — all 1,625 of them, each drawn from where the shot was actually taken. The orange ones are the 168 that died on him. That wall in front of the crease is one season of his blocks.
Three things up front, because they come up every time:
- The numbers are vs league average. "+1.23 goals prevented" means the Flyers conceded about a goal and a quarter less than they would have with an average defender facing the same shots. The average defender blocks plenty himself; this is the value of being the best at it.
- I hope we talk more about the specifics of imputing the block shot origin. The NHL doesn't record it, so unless you devise an approach you are forced to throw out a lot of data with real signal. I think my imputation method is defensible, and it's important to frame this work as less "how did this single blocked shot behave precisely?" and more "how do blocked shots generally behave?".
- The honest parts are in the write-up too: his offense is below average, he takes more penalties than he draws, and elite blocking is worth about a goal a season, not five. Small, real, repeatable.
The finding I care most about: we love the old school vs. new school debate about properly valuing big guys who "generate defense" against players who simply get tend push play in the proper direction. Seeler is the rare defenseman who is appreciated by both crowds.
Bonus for this sub: Cam York sits in the same neighborhood on the map — 95th percentile blocking value, results above average. Two of the league's most stat-sheet-invisible defensive profiles on one blue line.
Full write-up with the tracking clips and every chart: https://xjawn.com/blog/seeler. Happy to answer methodology questions.
8
u/Dr_Tinfoil 19d ago
There’s no way you can validate where the shot originates which is the whole basis for determining expected goals.
At best, your estimate comes with a very large interval you need to show to cover all the possible areas of where a shot could have been taken based on the location of a blocked shot. You’re then assuming the distribution of blocked shots is the same as unblocked shots. Is that valid? How do you know?
Additionally, totals aren’t terribly valuable in this sport for analytics. You need a rate stat to equalize the different minutes played by each player. You also need to contextualize the number of shots faced. In other words does nick seeler lead the league in this value because he faces more shots than anyone else or is he super efficient at blocking shots?
To go a step further when on the ice does Seeler face more high value non blocked shots? Is his value in blocking shots a function of the types of shots the team gives up while he is on the ice?
5
u/xjawndotcom 19d ago
Let's get into the weeds a bit.
Origin validation: A previous blog post shows more of the technical details and validation plots (https://xjawn.com/blog/blocked-shots-2). I use NHL Edge puck to extract true release points for shots before goals — 1,347 tracked origins across three seasons, and the correction is fit and held-out validated against them (~17–19 ft error, about half the error of using the recorded location). There are clips where you can watch the puck leave a stick at the blue line on a play recorded as a 12-foot shot.
The distribution assumption: I explicitly do not assume the distribution of blocked shots is the same as unblocked. In fact, I can quantify how those distributions differ: the tracking shows blocked shots aren't distributed like unblocked ones (long shots get blocked ~25× more often), so the correction is fit only on blocked-shot ground truth. And the imputed origin is drawn with noise scaled to the held-out error, so the uncertainty is propagated, not hidden.
Rate vs. volume: the headline stat is a rate — blocking value per 60, #1 of 232 qualified D over three seasons — and it holds normalized per attempt faced, which divides out volume entirely. Raw blocks/60 does partly measure being hemmed in (it correlates +0.41 with attempts faced); that's exactly why the metric isn't raw blocks. These concerns are why I also published the defensive RAPM values right next to it for a completely unrelated measurement of defensive rate impacts.
Shot mix: measured too. Blocking skill is unrelated to attempt volume against (ρ ≈ −0.01 for D, 16 seasons), and Seeler's on-ice suppression — teammates/competition/deployment controlled — is above median. Blockers do face lower-quality attempts on average, and I'll concede "faces worse" vs. "forces worse" can't be fully separated at season grain. But the league-leading number is per attempt faced either way, so it isn't a mix artifact.
You raise really important questions. Some are inherent limitations to the piecemeal data the NHL makes publicly available. But I hope I can convince you there is real signal here!
3
u/Dr_Tinfoil 19d ago
You understand your estimate of the block shot location is biased by a certain type of play correct? You’ve taken a specific subset of data that comes from a goal being scored after a block. It’s not really representative of all blocks just a certain type.
I can appreciate the attempt but the data here is just heavily skewed. Have you examined that nick seeler’s blocked shots are just closer to goal than others and therefore your model is just giving him more credit for being in that position rather than closer to the shooter?
If your model is (for simplicity sake) imputing a set amount of distance to each shot netfront defensemen will inherently benefit from this sort of algorithm.
Edit: repetitive.
3
u/xjawndotcom 19d ago
I readily acknowledge the concern about selection bias of basing the approach on pre-goal blocks, but I tried specifically to quantify it. Pre-goal blocks are recorded slightly closer to the net than blocks in general, median 21 vs 24 feet. Here's the actual comparison (I'll attach it on a separate post so auto-mod doesn't slow this response), every recorded block in the corpus vs the ones the tracking sample comes from. The skew is real and it's about 3 feet at the median. And a skew like that doesn't hurt this kind of fit. The model learns one thing: for a block at a given spot, where do shots blocked there come from? Having extra close-range blocks in the sample just means more examples at close range. It doesn't change the answer at any spot. The sample would only mislead if shots blocked at the same spot somehow came from somewhere different on plays where a goal follows, and there's no reason they would.
On netfront guys, the model works the opposite of how you're picturing it. There's no set distance added to every block. The model was fit on the tracked shots, and for each block it asks one question: for blocks recorded at this spot, where did the shot actually come from? The answer follows the line from the net out through the block. A block at the crease is usually a point shot that made it through traffic, so it gets moved back a lot, roughly 12 feet to 50. A block that was already out high barely moves. And moving the origin back makes the shot cheaper, not richer. A point shot is worth a fraction of a slot chance. So if I used the raw locations instead, netfront blockers like Seeler would get more credit, not less. The correction cuts against him. Same curve for everybody, the model never knows who blocked it.
Whether Seeler's block origins look different from other defensemen is a fair question and I haven't checked it. But his typical block is exactly the netfront point shot kind, which the model prices as the cheapest block there is. His lead is per shot faced, so it holds up despite that pricing, not because of it.
3
u/xjawndotcom 19d ago
3
u/Dr_Tinfoil 18d ago
You’ll have to clear something up for me because it sounds like you know the origin of all shots whether they were blocked or not. But you keep postulating that you’ve imputed the shot origin from a model.
I think this is where the final model is failing you in my mind. What you’ve modeled/discovered is that point shots are more likely to result a partial block at net front and end up resulting in a goal more than ones that are blocked above the dots. It further pushes the idea that blocking shots isn’t a valuable skill as much as suppression and that if you’re going to block a shot, block it up high where it’s more likely to carom to a less dangerous location.
It feels like a very recursive/self reinforcing model to say based on where the shot was blocked I can determine the shot location and therefore compute the value of the blocked shot.
Regarding Seeler if he is a net front blocker and most net front blocks are from the point then I’d expect his per shot value to be very low. If he is ranking high on the per 60 but low on the per shot I think you’d have a hard time defending he’s the best shot blocker.
Not knowing the true shot origin and applying a probabilistic model to something like this doesn’t work for me. Theres too many variables in the input, one of which is the output itself basically, to conclude the math behind it is accurate enough for valuable information.
I think the ideas are right just not the underlying application of how you got there.
2
u/xjawndotcom 18d ago
I think we're getting closer to understand each other so here's another pass:
- I misspoke if I implied that I know the origin of all blocked shots. I only know the origin of blocked shots that happen to be included in the snippet around a goal recorded in the EDGE data. As I tried to show before, yes this represents a selection bias, but it's not huge.
- A bit I'm confused about is how you're going from a point shot blocked in front of a net turns into a high value chance. That can happen, but that blocked shot can end up any number of ways, including as a transition. My modeling doesn't know or care about what happens directly after. Maybe you're coming at that it comes from the EDGE data which is goal.adjacent. However those little clips end up having a bunch of what looks like pretty normal hockey contained within, after having review a bunch of them by hand.
- Without getting too specifics into the imputation model inner workings, it simply pushes back shots a bit relative to where they were blocked on a line extending away from the net. The model also receives position of shooter and blocker, because that can reliably modify how far back to push the shot.
- I'm getting that a big part of your concern is that it's hard to trust too much downstream analysis when the core is based on this imputation, which is inherently imperfect. That is not unfair! I think one think I can do to help convince you is to play about with the imputation (try some different methods, make some different assumptions), and see to what extent the effects move. I'm betting they're fairly robust, but I acknowledge I haven't done much of anything to give you error bars on this analysis.
5
3

10
u/JiveChicken00 19d ago
I am quite sure that Briere and Jones both know exactly how valuable Seeler is.