How the numbers are made
No black boxes. Every number on this site is computed by OnlySports from play-by-play data, and this page says exactly how, including where the numbers are weak.
Where the data comes from
- NFL: nflverse play-by-play (published under CC-BY-SA 4.0), snap counts, and player game logs, plus the FTN charting fields nflverse carries in season: formations, play action, motion, box counts, blitzes, and pressure. In-season charting lags about two days.
- Coverage shells and personnel groupings come from last season's published participation data, and pages label them as last season's when they appear.
- NBA: player game logs and season stats built from ESPN box scores. The headline number is a fantasy-points line: points, plus 1.2 per rebound, 1.5 per assist, 3 per steal, 3 per block, minus 1 per turnover.
- NHL: player game logs and season stats from the NHL's official stats service. The headline number for skaters is points.
- Scores: ESPN's public scoreboard, read server-side and cached. Every scores page shows when it was fetched and never claims to be live.
Usage, splits, and trends
- Usage shares (targets, carries, air yards, red-zone work) are simple counts divided by team totals, from the same plays.
- Splits slice those counts by situation: play action, motion, formation, box count, and coverage.
- A player's recent window is compared against his own earlier-season baseline, never against a mystery projection.
- Role stats like snap share and target share are sticky week to week: in our backtest, last period's snap share predicted the next period at 0.95 correlation. That is why the site leads with role, not last week's points.
Matchup ranks and rest-of-season grades
- A defense's rank against a position is its PPR points allowed per game to that position, season to date.
- Rank 1 allows the most, so rank 1 is the softest matchup.
- A player's rest-of-season grade is the average of those ranks across his remaining games in the window shown.
- It describes the schedule, not the player: a soft schedule is a tailwind, not a promise.
The sims
- OnlySports's own sims run 10,000 Monte Carlo simulations per game.
- Players are projected from their own data (role, rates, matchup), never from book prop lines.
- The engine is checked for look-ahead: a simulation for a week uses only data that existed before that week.
- On player props, the engine's backtest scoring (multi-week Brier score 0.168) beat the coin-flip baseline clearly.
- On game markets (moneyline, spread, total) it did not beat the market baseline, so the site does not publish OnlySports game market sims as an edge.
- Some pages also show third-party sims (Stokastic, RotoBot) and always label whose sims they are.
- A sim percentage is an estimate with error bars, not a prediction. A 70% outcome still fails three times in ten.
Refresh cadence
- NFL boards are recomputed every Wednesday.
- NBA and NHL game logs refresh daily.
- Scores are cached for a few minutes at a time, with the fetch time shown on the page.
- Every data page carries its week and the time it was computed, because a stale public number is worse than no number.
What the numbers cannot do
- They cannot know about a midweek injury, a quiet role change, weather that turns at kickoff, or a coach changing his mind.
- Injury context on player pages uses the freshest official report the data carries and is labeled with its week; when the report is too old to state a current status, the page says that instead of guessing.
- Treat every page as a strong starting point for a decision, not the decision itself.