About datarena

What it is, the data behind it, and how the models work

What datarena is

datarena is a public NHL analytics site: player WAR ratings, a league-wide leaderboard, percentile profiles, and shot-location maps - for the 2013-14 season onward, updated each season.

It's built by a small group of data scientists and engineers. The aim is simple: make serious hockey analytics public, transparent, and free to use.

How it's built

Everything runs on an open, reproducible pipeline: ingestion with dlt, a DuckDB warehouse, transformations and tests in dbt, and a calibrated machine-learning expected-goals (xG) model that feeds the WAR ratings. An earlier version of the database was presented at the 2022 SeaHack conference.

We favour transparency over black boxes - definitions live in the glossary, and we try to be explicit about methods and limitations throughout.

Data source

The primary source is the public NHL API. We extract, transform, and model it into clean relational tables that feed everything downstream. The API is powerful but sparsely documented and occasionally buggy - the community's reverse-engineering work (credited below) made it tractable.

Predictive Models

We explore, test, and build our own predictive models for the purposes of quantifying impact and understanding sports as objectively as we can.

Predictive models like Expected Goals (xG) analyze historical data on factors like shot location, angle, and player positions to estimate the likelihood of a shot resulting in a goal. Summed over a player or team, it's a measure of shot-quality-adjusted offense and defense.

However, these models are not perfect. Elements like "time" and "space" are crucial to the "eye-test" when evaluating a shot's Expected Goal, but the key data points required to measure this are not available to the public. Passing events and player live-tracking events do exist, but they are not (yet) public.

From description to evaluation

We started descriptive - comparing expected vs. actual outcomes on all Fenwick shots (shots on target + missed shots, excluding blocked shots) with our calibrated xG model. True player evaluation, though, means isolating an individual's on-ice impact from their teammates and competition.

That work has now shipped: every skater carries a WAR (Wins Above Replacement) rating built from an expected-goals RAPM model - separating offense, defense, finishing, special teams and penalties. We remain committed to transparent communication about our assumptions, limitations, and methodologies as the models keep evolving.

Acknowledgments

We want to express our sincere gratitude to the existing work in the public hockey analytics space that has greatly influenced our own endeavors. Our work wouldn't have been feasible without the invaluable contributions of those who preceded us.

A special mention to JFresh and Dom Luszczyszyn, whose public hockey-analytics work directly informed the WAR and ratings approach here.