Loop & Jump

Projections

Pregame estimates from Loop & Jump's baseline (C1-baseline-1.1) and context-aware (C2-context-1.0) models. Estimates, not guaranteed results.
Reconstructed historical backtest — not a prediction originally saved before tipoff. Population: conditional on playing — only games each player actually played are scored. This measures stat forecasts for players who played, not knowledge of who would play. A true pregame-slate evaluation is unavailable (no historical pregame roster or injury snapshots exist).

Overview

2025-26 Regular Season · backtest BT-1.0 · models C1-baseline-1.1, C2-context-1.0

Matched player-games
23,022
same games for all 3 models
Players evaluated
473
of 610 on current rosters
Games covered
1189
Excluded observations
1,444
Date range
2025-10-27 – 2026-04-13
Models compared
3
Season-to-Date · C1 · C2
Team results loaded
30/30
Dataset generated
2026-10-09

Model leaderboard

Lower MAE/RMSE is better. Bias = mean(predicted − actual): positive = overprediction.

ModelMAERMSEBiasMedian AEMatched NMAE vs benchmark
Season-to-Date Average8.04210.339-0.7446.56223,022reference
C1 Baseline7.92710.185-0.3636.50523,022+1.43%
C2 Context-Awarelowest MAE7.91410.168-0.3636.50623,022+1.59%

Lowest MAE by statistic: PTS C2 Context-Aware · REB Season-to-Date Average · AST Season-to-Date Average · STL Season-to-Date Average · BLK Season-to-Date Average · 3PM Season-to-Date Average · TOV Season-to-Date Average · FPTS C2 Context-Aware. Different models lead different statistics, so no overall winner is declared. Differences of a few hundredths are small relative to per-game noise.

MAE change vs Season-to-Date

(benchmark MAE − model MAE) / benchmark MAE · positive = fewer errors

Bias by model

Mean signed error · negative = underprediction

FPTS error distribution

Count of player-games by predicted − actual FPTS (5-point bins, clipped at ±30)

Opponent adjustment (C2 vs C1)

Same matched player-games; C2 only changes PTS (and therefore FPTS)

C2 differs from C1
22,506
97.8% of 23,022
Neutral factor
500
opponent < 5 games or data missing
Avg |PTS adjustment|
0.122
max 1.23
Non-neutral subset
22,522
PTS MAE C1 4.737 → C2 4.728
StatC2 betterC2 worseEqualMAE C1MAE C2
PTS11,72810,7785164.7354.726
FPTS11,97310,5335167.9277.914

The adjustment is small (about a tenth of a point on average), so the MAE difference is small too. One season of conditional-on-playing data is initial evidence, not proof of future performance. No significance test was run.

Segments

MAE by group, assigned from pregame information only

GroupNBench PTS / FPTSC1 PTS / FPTSC2 PTS / FPTS
10–19 games4,1964.68 / 7.884.71 / 7.864.70 / 7.85
20+ games15,6404.86 / 8.174.81 / 8.004.80 / 7.99
3–9 games3,1864.41 / 7.644.42 / 7.644.41 / 7.64

Boundaries: history 3–9 / 10–19 / 20+ prior games; expected minutes <20 / 20–30 / 30+; minutes CV over the last 10 games ≤0.25 vs >0.25. *Position is the player's current ESPN position (G/F/C) — an approximation; historical positions are not verified.

Player results

Players with 10+ evaluated games · MAE per model

PlayerTeams (in games)GamesPTS MAE B / C1 / C2FPTS MAE B / C1 / C2C1 FPTS bias
4592479—805.18 / 5.24 / 5.207.84 / 8.09 / 8.08-0.19
4395723—804.91 / 4.97 / 4.937.05 / 6.88 / 6.86+0.06
4602025—793.29 / 3.25 / 3.265.90 / 5.83 / 5.83+0.26
2596112—793.73 / 3.95 / 3.957.04 / 7.43 / 7.42-0.26
4709138—795.22 / 5.22 / 5.207.99 / 7.94 / 7.91-0.73
4711272—794.78 / 4.95 / 4.969.09 / 9.34 / 9.32-0.33
4065731—794.58 / 4.73 / 4.698.30 / 8.41 / 8.37-1.49
2991139—793.49 / 3.55 / 3.555.94 / 5.95 / 5.94-0.25
4592691—795.34 / 5.02 / 5.028.90 / 8.77 / 8.77+0.02
3934673—794.80 / 4.97 / 4.966.99 / 7.16 / 7.14+0.47
5144091—795.61 / 5.20 / 5.199.32 / 9.12 / 9.09-1.71
3147657—794.95 / 5.02 / 4.998.36 / 7.54 / 7.50+1.26
4065670—793.79 / 3.79 / 3.797.11 / 7.33 / 7.32-0.56
4066320—796.64 / 6.90 / 6.898.16 / 8.69 / 8.70-0.35
4601023—793.39 / 3.45 / 3.417.69 / 7.19 / 7.18-1.13
4431736—794.98 / 5.14 / 5.127.24 / 7.53 / 7.52-0.18
4432241—793.62 / 3.83 / 3.846.69 / 6.71 / 6.72+0.04
4845374—794.24 / 3.90 / 3.916.48 / 6.25 / 6.25-0.71
5061575—785.80 / 5.74 / 5.758.16 / 8.29 / 8.29-0.28
4869780—785.55 / 5.58 / 5.5910.41 / 9.83 / 9.84-1.22
4278580—774.73 / 4.75 / 4.728.29 / 8.42 / 8.41-0.68
2528210—775.54 / 5.80 / 5.836.77 / 6.79 / 6.83-0.25
4278585—775.49 / 5.65 / 5.658.32 / 8.28 / 8.23+0.24
4433134—775.05 / 4.80 / 4.7510.06 / 10.04 / 10.07+0.49
4066354—767.09 / 7.58 / 7.568.54 / 9.06 / 9.04+0.03
3064514—766.15 / 6.19 / 6.167.95 / 7.76 / 7.72+1.09
4684740—765.17 / 5.15 / 5.097.34 / 7.57 / 7.51-1.32
4278039—755.39 / 5.57 / 5.587.32 / 7.67 / 7.66-0.71
4065804—755.05 / 4.99 / 5.006.67 / 6.18 / 6.18-0.45
2583632—753.70 / 3.86 / 3.857.13 / 7.50 / 7.48+0.38
4683771—753.89 / 3.89 / 3.886.00 / 6.05 / 6.05+0.53
3202—755.55 / 5.87 / 5.868.23 / 8.44 / 8.39-0.54
4397475—755.28 / 5.11 / 5.136.98 / 6.49 / 6.51-0.58
4277847—754.56 / 4.55 / 4.526.88 / 6.94 / 6.93+0.26
3913174——754.41 / 4.40 / 4.397.33 / 7.41 / 7.40-0.76
6578—755.15 / 4.97 / 4.946.61 / 6.28 / 6.27+0.39
4065663—753.87 / 3.55 / 3.577.11 / 6.70 / 6.70+0.57
4712863—743.66 / 3.54 / 3.537.67 / 7.69 / 7.68+0.52
4593841—743.85 / 3.59 / 3.607.53 / 6.63 / 6.64-1.74
3078576—746.02 / 5.88 / 5.939.03 / 8.53 / 8.52+0.94
4396971—745.38 / 5.49 / 5.488.22 / 8.25 / 8.23-0.26
4711294—745.27 / 5.41 / 5.408.94 / 9.19 / 9.16-0.98
4432582—744.28 / 4.53 / 4.547.06 / 6.88 / 6.87-0.16
3978—747.25 / 7.58 / 7.579.83 / 10.11 / 10.12+0.69
3157465—744.17 / 4.33 / 4.315.93 / 6.03 / 6.01-0.15
4432639—744.16 / 4.27 / 4.266.54 / 6.70 / 6.71-0.38
3913176—746.19 / 6.56 / 6.528.21 / 8.32 / 8.28-0.02
5105623—745.34 / 5.24 / 5.2110.80 / 10.16 / 10.13-0.01
4683692—744.42 / 4.58 / 4.588.35 / 8.26 / 8.24+0.40
4702382—745.26 / 5.31 / 5.287.68 / 7.63 / 7.62-0.00
4066383—746.08 / 5.77 / 5.749.37 / 9.37 / 9.33+1.11
5105565—744.84 / 5.05 / 5.0210.03 / 10.51 / 10.49-0.86
4684793—745.14 / 4.78 / 4.7910.85 / 10.28 / 10.30-1.80
4869342—734.36 / 4.66 / 4.668.85 / 9.08 / 9.09-1.27
2490149——736.01 / 6.27 / 6.286.99 / 7.53 / 7.51-0.90
4397424—733.81 / 4.17 / 4.138.27 / 8.81 / 8.78-0.47
5106060—734.65 / 4.24 / 4.268.52 / 7.17 / 7.15-0.70
5106258—734.22 / 4.24 / 4.256.35 / 6.30 / 6.30+0.87
3032976—734.19 / 4.41 / 4.388.90 / 9.25 / 9.24-0.49
3136195—736.03 / 6.01 / 6.018.91 / 9.21 / 9.18+0.24

Showing 60 of 430. Teams are the ones each player actually played for in the evaluated games. Individual results are noisy; this is not a ranking.

Methodology & data integrity

Reconstruction. For every regular-season game a player actually played in 2025-26 Regular Season, C1 (C1-baseline-1.1) and C2 (C2-context-1.0) are re-run with their unchanged code, plus a Season-to-Date Average benchmark (mean of the same prior games C1 uses). Weights were not tuned on these results.

Leakage prevention. A prior game counts only if it tipped off at least 4 hours before the target tipoff (results of a game that just started are not assumed known). Opponent points allowed and the league baseline use the same cutoff. The target game supplies only the actual result. Historical injury status is not available, so it is not used (no current-report leakage).

Identity. Team, opponent and home/away come from the player's own game record for that game — not from today's roster — so traded players are credited to the team they played for.

Exclusions. insufficient pregame history: 1,435 · not played (0 or missing minutes): 9 · duplicate result: 0. Also left out before evaluation: 63 All-Star rows, preseason, play-in and playoff games. 129 current-roster players have no 2025-26 Regular Season game log (rookies, players who did not play). Players no longer on an NBA roster are not covered.

Metrics. MAE = mean |predicted − actual|; RMSE = √mean(predicted − actual)²; Bias = mean(predicted − actual). FPTS use Loop & Jump's default Points scoring (PTS 1, REB 1.2, AST 1.5, STL 3, BLK 3, TOV −1); category leagues are judged on the per-stat errors above. No "accuracy %" is shown.

Storage. Results are computed offline by the backtest script and shipped as a versioned file (BT-1.0); the page does not rerun thousands of predictions. Rerunning the script with new code produces a new version.

Model Reliability

Are the small error differences real? Paired comparison with a game-clustered bootstrap

2025-26 Regular Season · 23,022 matched player-games · 1189 games · 473 players · models C1-baseline-1.1, C2-context-1.0 · backtest BT-1.0. Development season — C2 opponent weights were not tuned on it, but C3 conclusions were first drawn here.

ComparisonStatΔMAE95% intervalEvidence
C1 vs Season-to-DatePTS-0.027[-0.050, -0.005]C1 lower error
C1 vs Season-to-DateFPTS-0.115[-0.152, -0.075]C1 lower error
C1 vs Season-to-DateREB+0.010[+0.001, +0.019]Season-to-Date lower error
C1 vs Season-to-DateAST+0.002[-0.004, +0.009]No reliable difference
C2 vs Season-to-DatePTS-0.036[-0.059, -0.014]C2 lower error
C2 vs Season-to-DateFPTS-0.128[-0.166, -0.087]C2 lower error
C2 vs Season-to-DateREB+0.010[+0.001, +0.019]Season-to-Date lower error
C2 vs Season-to-DateAST+0.002[-0.004, +0.009]No reliable difference
C2 vs C1PTS-0.009[-0.011, -0.006]C2 lower error
C2 vs C1FPTS-0.013[-0.015, -0.010]C2 lower error
C2 vs C1REB+0.000[+0.000, +0.000]No reliable difference
C2 vs C1AST+0.000[+0.000, +0.000]No reliable difference
Stability across the season (thirds by game)
Early · 7,439 obs · 397 games
C1−Season-to-Date PTS+0.03 ▲
C1−Season-to-Date FPTS+0.01 ·
C2−Season-to-Date PTS+0.03 ·
C2−Season-to-Date FPTS-0.00 ·
C2−C1 PTS-0.01 ▼
C2−C1 FPTS-0.01 ▼
Middle · 7,883 obs · 396 games
C1−Season-to-Date PTS+0.02 ·
C1−Season-to-Date FPTS-0.06 ·
C2−Season-to-Date PTS+0.01 ·
C2−Season-to-Date FPTS-0.07 ▼
C2−C1 PTS-0.01 ▼
C2−C1 FPTS-0.01 ▼
Late · 7,700 obs · 396 games
C1−Season-to-Date PTS-0.13 ▼
C1−Season-to-Date FPTS-0.29 ▼
C2−Season-to-Date PTS-0.14 ▼
C2−Season-to-Date FPTS-0.31 ▼
C2−C1 PTS-0.01 ▼
C2−C1 FPTS-0.02 ▼

▼ first model reliably lower error · ▲ reliably higher · · interval includes zero.

C2 adjustment counts
Neutral factor: 500Non-neutral factor: 22,522Changed (full precision): 22,506Changed (displayed, 1 dp): 14,701

16 non-neutral games have no change because C1 projected 0 PTS (factor × 0 = 0). Tolerance 1e-9.

Method. ΔMAE = MAE(first) − MAE(second) on the same player-games; negative favours the first model. 95% percentile interval from 2000 bootstrap resamples of whole games (1189 clusters, fixed seed 20261009). Every player in a sampled game is kept.

Limits. Intervals are estimates, not guarantees. Clustering by game does not fully account for the same player appearing all season. Conditional-on-playing historical evaluation. Players were found from current rosters, so players who left the league are missing. Seasons are shown separately, never pooled. No weights were changed.