about
loserpoint shows score state distribution for a team and season, the share of playing time spent at each goal differential, from down three or more to up three or more.
It is built from each league's play-by-play API data. Each game is cut into intervals by the running goal differential and scored from both teams' points of view. The intervals are summed across the season and divided by total game time.
The data covers the NHL, the PWHL, and 17 other professional and junior leagues. This is possible because dry-scraper, a Rust ingestion kernel, loads all of them into one Postgres warehouse, and a single dbt pipeline consolidates the data into one mart. Coverage runs back as far as each league's play-by-play API stream allows.
Only regular-season games are included. The min GP control on the stats page (default 10) hides partial-season samples.
Source is on GitHub.