Skip to content
PREDICTD

Methodology

PREDICTD calculates probabilities from measured data: results, schedules, rest, travel and, where licensed, player availability and market prices. It never asks a language model to pick a winner, does not count repetition as evidence, and does not publish a number when the evidence cannot support one.

Probability

Several simple models each estimate the home team's chance of winning. A stacking model, fitted on a later season the base models never saw, combines them; that same step calibrates the result so a 70% estimate behaves like a 70% event.

  • Elo. Margin-adjusted Elo rating difference including home court.
  • Rest-adjusted Elo. Elo recalibrated with rest days, back-to-backs, schedule density and travel.
  • Recent form. Recent point margins and performance against Elo expectation.
  • Team model. Team strength, form, season margin, rest and travel together.
  • PREDICTD ensemble. Stacked logistic combination of the base models, fitted on a later out-of-sample season. It is also the calibration step.
  • Market consensus. Median de-vigged bookmaker moneyline probability. A benchmark and independent signal, never the answer.

Current model 20260911.9d4de0: trained on 2007-08 to 2014-15, validated out of sample on 2005-06 to 2014-15.

Evidence strength

A separate 0–100 score describing the data behind a probability, never the probability itself. A 68% estimate with strong evidence and a 68% estimate with limited evidence are shown differently.

Key inputs presentup to 40
Games played this seasonup to 20
Reliability of the data sourcesup to 20
How recently the data was refreshedup to 10
Player availability coveredup to 10

Model confidence combines evidence strength with how closely the independent models agree. Preseason games are always low confidence.

When PREDICTD abstains

  • No validated model is approved for this league yet.
  • There is no verified game history for one of the teams.
  • Recent seasons of results for these teams haven't been loaded yet.
  • Too many key inputs are missing to estimate a probability.
  • The model produced an invalid result, so nothing was published.
  • Data sources disagree about when this game is being played.
  • The supporting evidence is too weak to publish a probability.
  • The data sources this prediction depends on are currently quarantined.

Integrity

  • Every published prediction is stored permanently. Updates add a new version; nothing is overwritten.
  • Each prediction records exactly which data existed at that moment. Later corrections never rewrite earlier predictions.
  • Models are tested only on seasons after the ones they learned from, and a new model runs in shadow before it can replace the current one.
  • Data sources are scored against verified results and quarantined automatically when they fail.

Inputs

  • elo_diff Home Elo minus away Elo, before home court.
  • elo_prob Elo win probability for the home team including home court.
  • elo_logit Log-odds of elo_prob.
  • home_court 1 when the home team plays at home, 0 at a neutral site.
  • rest_home Days since the home team last played, capped at 5.
  • rest_away Days since the away team last played, capped at 5.
  • rest_diff rest_home minus rest_away.
  • b2b_home 1 when the home team played the previous day.
  • b2b_away 1 when the away team played the previous day.
  • games_last7_home Home team games in the previous seven days.
  • games_last7_away Away team games in the previous seven days.
  • games_last7_diff games_last7_home minus games_last7_away.
  • form_home Home team mean point margin over its last 10 games.
  • form_away Away team mean point margin over its last 10 games.
  • form_diff form_home minus form_away.
  • perf_home Home team margin above its Elo expectation, last 20 games.
  • perf_away Away team margin above its Elo expectation, last 20 games.
  • perf_diff perf_home minus perf_away.
  • season_margin_home Home team mean margin this season.
  • season_margin_away Away team mean margin this season.
  • season_margin_diff season_margin_home minus season_margin_away.
  • tz_shift_away Hours of time-zone change for the away team since its previous game, capped at 3.

Data sources