Dont Bet On UsA true underdog's tool
HomeToday's GamesMatchup BuilderModel Performance
Value FinderParlay Calculator
Real Model Picks / Hypothetical Favorite/Underdog designations & values to backfill historical results
Model CompareModel Strategy AnalysisStrategy Tool
HomeToday's GamesMatchup BuilderModel PerformanceValue FinderParlay Calculator
Real Model Picks / Hypothetical Favorite/Underdog designations & values to backfill historical results
Model CompareModel Strategy AnalysisStrategy Tool

Don't Bet On Us

Sports Analytics & Predictions

Predictions are based on historical data and machine learning models. Information may not be accurate. Use at your own risk.

Important Notice

  • • Models trained on 10+ years of NBA data
  • • Features updated each morning from yesterday's games
  • • Underdog/favorite based on rolling win% assumptions
  • • Injuries and late scratches may affect outcomes
  • • All profit figures are hypothetical
  • • For analytics and research, not gambling

Legal

Terms of ServicePrivacy Policy

Contact

dontbetonus.llc@gmail.com

@DontBetOnUs

Delaware, United States

If you choose to gamble, please do so responsibly.

National Council on Problem Gambling · 1-800-522-4700

© 2026 Don't Bet On Us LLC. All rights reserved.
Don't Bet On UsVersion 2Season 2025

NBA Predictions Powered by Data

A binary classification model to predict NBA matchups

Data-driven NBA predictions using machine learning trained on 26 seasons (1999-2024) with 34,767 games. Our models analyze team performance metrics, player availability, and matchup dynamics to estimate win probabilities. Live NBA game schedules pulled from the Ball Dont Lie API.

Important: These are data-based predictions, not guarantees. Models are trained on historical patterns and cannot account for unexpected events or other variables. All predictions are estimates for analytical and educational purposes only.

Metrics as of Feb 12, 2026 · Updated Feb 13, 2026, 9:06 PM UTC
Pre-game inputs onlyTime-aware splitSeason-grouped CVCalibrated probabilities

Explore

Today's Games
View predictions
Performance
Track accuracy
Value Finder
Track model value across platforms
Parlay Calculator
Simulate scenarios

Summary

How the model works and what powers the predictions.

We analyze how teams have been playing recently and estimate who is more likely to win. The model examines recent game performance, opponent strength, player availability, and matchup dynamics. All predictions are data-based estimates, not guarantees.

What this model is

  • Probability-based classifier for home team win outcomes.
  • Built on pre-game statistical trends, not final box scores.
  • Purely based on basketball-related activity (team performance, player availability, schedule factors).
  • Validated with season holdout and walk-forward testing.
  • Updated daily with live NBA game data from Ball Dont Lie API.

What this model is not

  • Not a guarantee or recommendation.
  • Does not factor in betting lines or market movements.
  • Not a live injury oracle when lineups change late.
  • Not tuned for totals or props (win-only focus).
  • Not intended for commercial use or decision-making.

Training Snapshot

Model trained on 26 seasons (1999-2024) with 34,767 games using hundreds of engineered features. Season 2025 held out for testing (333 games). Blind baseline is a DummyClassifier; tuned model is XGBoost selected after benchmarking multiple algorithms (CV AUC: 0.705).

Holdout early season 2025
Blind Baseline
  • ROC-AUC 0.500
  • Accuracy 0.559
  • Precision 0.559
  • Recall 1.000
  • F1 0.717

Blind baseline predicts the most common class. Sets the floor for model comparison.

Note: This is a blind baseline comparison, not Model V1

Tuned XGBoost V2
  • ROC-AUC 0.702
  • Accuracy 0.640
  • Precision 0.643
  • Recall 0.796
  • F1 0.712

CV AUC 0.705 · PR-AUC 0.744 · Log loss 0.621 · Brier 0.216 · ECE 0.056 · Balanced accuracy 0.619

Performance Summary

The tuned XGBoost V2 model shows meaningful improvements over the blind baseline:

Key Improvements

  • ROC-AUC: 0.500 → 0.702
    The model distinguishes wins from losses significantly better than random chance (0.50 = coin flip, 1.0 = perfect).
  • Balanced Accuracy: 0.56 → 0.619
    Improved performance on both home and away wins, not just majority class prediction.
  • PR-AUC: 0.744
    Precision-Recall metric shows the model maintains good precision while maximizing recall.

Why Baseline F1 is Misleading

The blind baseline's F1 score (0.717) appears competitive, but it's artificially inflated:

  • Recall: 1.000
    Achieved by predicting all home teams win (home win rate ~56%).
  • Tuned F1: 0.712
    Slightly lower but represents genuine predictive power with balanced precision (0.643) and recall (0.796).
Win rate context

Train win rate 0.588 · Test win rate 0.559

Confusion matrix (holdout)

TN 65 · FP 82 · FN 38 · TP 148

TP = correctly predicted wins, TN = correctly predicted losses.

Multiple algorithms were tested during development including RandomForest and AdaBoost. XGBoost delivered the strongest holdout performance.

Feature Categories

Our model uses hundreds of engineered features across multiple categories. Features are designed to capture team strength, recent performance, and matchup dynamics.

Team Strength & Performance

  • Overall team strength – Baseline team quality metrics
  • Win-loss records – Season and recent performance indicators
  • Efficiency ratings – Advanced team efficiency measures
  • Recent form – Short and medium-term performance trends
  • Quality of competition – Opponent-adjusted performance metrics

Matchup & Context Signals

  • Shooting efficiency – Scoring effectiveness metrics
  • Pace indicators – Game tempo and possession metrics
  • Schedule factors – Rest, travel, and timing patterns
  • Strength of schedule – Adjusted opponent difficulty

Features combine relative differences (home - away) and aggregated metrics, using various time windows and weighting schemes to capture both current form and baseline strength.

Model Calibration & Reliability

Calibration measures whether predicted probabilities match actual outcomes. A well-calibrated model's 70% predictions should win ~70% of the time.

Calibration Quality

  • Expected Calibration Error: 0.056
    Low ECE means probabilities closely match reality (closer to 0 is better).
  • Brier Score: 0.216
    Measures accuracy of probabilistic predictions (0 = perfect, 0.25 = baseline).

Probability Bin Performance (Test Set)

40-50% predictions (61 games):49% actually won
50-60% predictions (102 games):52% actually won
60-70% predictions (66 games):65% actually won
70-80% predictions (50 games):86% actually won

The 70-80% bin overperforms slightly (86% vs 74% predicted), while 30-40% underperforms (19% vs 35% predicted). Overall calibration is strong, with predicted probabilities tracking actual outcomes reasonably well.

Rolling Backtest Stability (2004-2025)

Walk-forward backtesting validates the model across 22 seasons. Each season uses only prior data for training, simulating real deployment conditions.

Performance Range

ROC-AUC Range

0.646 - 0.732

Average: 0.701 across 22 seasons

Accuracy Range

61.8% - 69.6%

Consistently above baseline (~56%)

F1 Score Range

0.683 - 0.767

Balanced precision and recall

Stability insight: The model maintains consistent AUC (~0.65-0.73 range) across different eras of NBA basketball (2004-2025), suggesting the feature set generalizes well despite rule changes, pace shifts, and three-point evolution.

Performance by Scenario

Model performance varies by game context. Close games and early-season matchups are inherently harder to predict.

Close vs Blowout Games

Close Games (160)

AUC: 0.549 • Accuracy: 53%

Coin-flip territory – fundamentally uncertain outcomes

Blowouts (44)

AUC: 0.725 • Accuracy: 84%

Clear talent gaps make prediction easier

Early vs Late Season

Early Season (82)

AUC: 0.557 • Accuracy: 56%

Small sample sizes create volatility

Late Season (84)

AUC: 0.793 • Accuracy: 75%

More data improves feature reliability

Rest & Schedule

Back-to-Back (47)

AUC: 0.777 • Accuracy: 70%

Fatigue effects are measurable

Normal Rest (286)

AUC: 0.683 • Accuracy: 63%

Standard game conditions

Practical takeaway: Confidence bands should widen for close games and early-season matchups. The model performs best in blowout-likely games, late-season conditions, and when rest differentials exist. These segment diagnostics inform when predictions are most reliable.

Data Sources

Three primary data sources power our predictions. Historical team and player data from 1999-2024 (26 seasons, 34,767 games), combined with live NBA game schedules from the Ball Dont Lie API. All features are derived from information available before tip-off.

Historical Team Performance

1999-2024team-level

Historical team game statistics from 1999-2024 (26 seasons, 34,767 games). Pre-game team performance metrics, schedule timing, travel/rest patterns, and opponent context.

Player Availability & Lineup Data

player statsavailability

Player statistics aggregated to team-game context. Tracks active status, role minutes, and key player presence to inform predictions.

Live NBA Game Data

live dataAPI integration

Real-time game schedules and updates pulled from the Ball Dont Lie API. Provides current season matchups and game status information.

Analyst Notes

Short definitions plus why each choice was preferred.

TargetHome team win (binary)

Defines the prediction target used in training.

Why this choice: Directly aligns with the win decision and avoids noisy continuous targets.

Split logicTime-aware, season-grouped

Hold out the latest season and group folds by season.

Why this choice: Prevents temporal leakage and mirrors live deployment.

ImputationMedian + missing indicators

Fills missing values while preserving missingness signals.

Why this choice: Tree models handle this well and early-season gaps remain informative.

WeightingRecency-based

More recent seasons count more during training.

Why this choice: Accounts for style drift without discarding older data.

ModelXGBoost (hist, regularized)

Gradient-boosted trees with regularization.

Why this choice: Captures nonlinear interactions better than linear or bagging baselines.

CalibrationIsotonic (train-only)

Probability recalibration using train folds only.

Why this choice: Improves probability trust without touching test data.

Early-season signals are inherently noisier; confidence bands tighten as more games accumulate.

Feature Summary

Feature groups are described at a category level to protect proprietary transformations.

Pre-game only / Shifted windows

Recent performance

  • -Multiple time windows capturing short and medium-term form
  • -Efficiency metrics covering shooting, turnovers, and pace
  • -Tempo and workload indicators for fatigue context

Team strength

  • -Opponent-adjusted performance and strength of schedule
  • -Baseline team quality ratings
  • -Schedule factors including rest and back-to-back patterns

Roster context

  • -Player availability and lineup continuity signals
  • -Role distribution and rotation stability
  • -Pre-game information only, preventing data leakage

Matchup structure

  • -Relative advantage features comparing opponents
  • -Aggregated metrics for game environment estimation
  • -Time-shifted features ensuring pre-game-only information

Testing & Trials

Multi-stage validation to stress test temporal stability and probability quality.

  • 1. Leakage controls

    All rolling features are shifted so only prior games are visible. Post-game identifiers and outcomes are dropped.

  • 2. Train/test split

    Most recent season (2025) is fully held out. Earlier seasons are used for training with recency weighting.

  • 3. Grouped cross-validation

    Season-grouped folds (up to 5) prevent season leakage during tuning and calibration.

  • 4. Walk-forward backtest

    Rolling season backtest from 2004-2025 shows stable AUC range ~0.65-0.73.

  • 5. Calibration + segment checks

    Isotonic calibration (train-only) plus segment diagnostics: close games, early vs late season, rest splits.

Modeling Stack

High-level workflow from data ingestion to reporting.

1

Data hygiene

Deduplicate, enforce two-team game rows, validate timestamps.

2

Feature build

Time-windowed metrics, opponent adjustments, roster signals, and matchup comparisons.

3

Baseline

DummyClassifier establishes the floor (AUC 0.50).

4

Tuned model

Multiple algorithms benchmarked; gradient boosting selected based on holdout performance.

5

Calibration

Isotonic calibration on train-only folds for probability quality.

6

Reporting

Holdout metrics, backtests, calibration, and segment diagnostics.

Value & Simulation Assumptions

This framework was used for backfill purposes to analyze historical performance across Model Compare, Model Strategy Analysis, and Strategy Tool pages. Value figures use a flat 100 simulated stake per graded pick unless explicitly noted.

Favorite/Underdog Designation: Determined by rolling win percentage difference. When the model's preferred team has a win% difference of 0-5%, it's classified as a toss-up. When the model likes a team with win% difference greater than 5%, that team is designated the favorite, otherwise it's the underdog.

Simulated Returns: Underdog wins earn 150 (+150), favorite wins earn 30 (-300), toss-up wins earn 50 (-200); losses are -100. Value = total value ÷ (games × 100). All figures are for analytical purposes only.