NBA Four-Factors Composite

Model

Goal: flat 1u ROI on the model's side, judged against the market-correct null and the market favourite on the same games; log loss and Brier against the close are the probability check. Full description: MODEL.md; the quotable readout: ledger_report.txt.

Active tags: fourfactors_hl25_b2b_carry25_phase_luck_talent_ft_v6 / fourfactors_hl25_b2b_carry25_phase_luck_talent_ft_avail_v6 / fourfactors_hl25_b2b_carry25_phase_v4

Routing

Games played (fewer of the two)FormulaModel file
0abstain (no probability)—
1–9carryover logit: last season's log × 0.25 carried inmodel/logit_early.json
10+, injury report covers the gameavailability logitmodel/logit_avail.json
10+, otherwisebase logitmodel/logit.json
10+, a v5/v6 term missingfrozen v4 base logitmodel/logit_v4.json

Fitted coefficients

P(home) = σ(intercept + Σ coef × term). Coefficients are fitted by log loss on earlier seasons; a change to them or to a term is a new model tag.

Base logit (games 10+) 10192 games · seasons ending 2016–2026
TermLogit coefMeaning
Intercept (home edge)+0.2973
delta+0.0161Four-factor composite gap, home − away (win-% points)
b2b_net+0.3154Back-to-back, away − home (1 = away on a b2b)
d_phase+0.0212delta × season phase (days since opening night ÷ season length)
luck_def+0.0126Opponents' 3P% regressed to the league (luck), home − away
talent_diff+0.0559Roster talent: minutes share × last-season BPM, home − away
ft_diff+0.0151Own FT% gap (decayed FTM/FTA), home − away
Availability logit (games 10+, report covers) 4289 games · seasons ending 2023–2026
TermLogit coefMeaning
Intercept (home edge)+0.2468
delta+0.0199Four-factor composite gap, home − away (win-% points)
b2b_net+0.2777Back-to-back, away − home (1 = away on a b2b)
av_min+0.1349Minutes-weighted share of the rotation listed Out/Doubtful
av_bpm+0.0382BPM-weighted value of players listed Out/Doubtful
d_phase+0.0212delta × season phase (days since opening night ÷ season length)
luck_def+0.0159Opponents' 3P% regressed to the league (luck), home − away
talent_diff+0.0398Roster talent: minutes share × last-season BPM, home − away
ft_diff+0.0175Own FT% gap (decayed FTM/FTA), home − away
Early-season carryover logit (games 1–9) 1233 games · seasons ending 2023–2026
TermLogit coefMeaning
Intercept (home edge)+0.3925
delta+0.0348Four-factor composite gap, home − away (win-% points)
b2b_net+0.3056Back-to-back, away − home (1 = away on a b2b)

Flat 1u ROI by season · lean at the close

Basis · close book · seasonBetsW–LUnitsROI ± SENo-vig qExcess ppMkt nullFav unitsFav ROILL model − close
ReconESPN BET 2024-251209825–384-42.74-3.5% ± 2.067.8%+0.4-4.2%-52.02-4.3%+0.0118 ± 0.0050
ReconKalshi 2025-261209834–375-10.61-0.9% ± 2.167.8%+1.2-3.2%-39.94-3.3%+0.0159 ± 0.0055
Flat 1u. One unit on the picked side every game, at that side's closing moneyline. No-vig q is the market's probability for the picked side with the hold removed; excess is the win rate minus q. Mkt null is the ROI expected if the market were exactly right — negative by the hold, so beating it is the bar, not zero. Fav bets the market favourite on the same games. LL model − close: log-loss gap on the same games (negative = model better). ± is one standard error; colour marks ≥ 2 SE from the null. Reconstructed rows are hindsight (that season left out of the fit, graded at the close), never forward evidence.
Built 2026-10-19 07:42 UTC. Win probabilities from prior-game four factors, roster talent and the NBA injury report; the market is a benchmark only and never enters the model. Full statistics: ledger_report.txt · model tags and coefficients: Model. Not betting advice.