Over Expected measures what a basketball shot is really worth. Every attempt is priced by what shots like it are worth given where and in what context it was taken; a player's number is the gap between what he produced and what those looks were worth, expressed per 100 possessions and measured against each season's own league rate rather than a flat average.
Field goal percentage and true shooting treat every attempt as interchangeable. They cannot tell a player who takes hard shots and makes them from one who takes easy shots and makes them. The three lenses here separate the shots from the shooting from the free throws they draw.
I'm Kevin Krajnc, a sports analyst who has spent nearly two years working with NBA play-by-play data. I built Over Expected because conventional shooting statistics treat every attempt as interchangeable, and they are not.
Two Python pipelines pull public play-by-play and export static JSON; the site is a React front end that only reads those files. It never queries a database at request time, which is why every page is fast and every number is reproducible from the published data.
The data is published under CC BY 4.0. Cite it as: Over Expected (2026). Points over expected per 100 possessions. https://overexpected.com
kevinkrajnc@gmail.com
Over Expected is a basketball shot-value platform covering NBA, EuroLeague, EuroCup, Liga ACB, Lega Basket Serie A, Basketball Bundesliga, Greek Basket League, ABA Liga, WNBA.