Transparent engine
How the number is made
Additive efficiency model used by professional desks. Every assumption is editable. Ratings live on the Rankings page; game-level knobs live on each card.
Expected points
Each team has an offensive rating (points scored vs an average defense) and a defensive rating (points allowed vs an average offense). League mean is 22.6.
homePts = home.off + (away.def − league) + HFA/2 + rest + injuries + coaching + pace awayPts = away.off + (home.def − league) − HFA/2 + rest + injuries + coaching + pace
Neutral sites (Melbourne this week) cut home-field to +0.4. Pace is the average of both teams' play-volume index; 5% extra pace adds about 0.45 points to each side. Rest: short week (≤4 days) is −1.1, extra rest (≥9) is +0.45. Offseason rest (10+ days) is ignored so Week 1 is a clean rating vs rating.
Spread, total, moneyline
modelSpread (home) = −round_half(homePts − awayPts) modelTotal = round_half(homePts + awayPts) P(home covers s) = Φ((margin + marketSpread) / σ) P(over t) = Φ((projTotal − marketTotal) / σ_total)
σ for margins defaults to 13.86 (NFL historical). Totals use 13.5. Projected totals are regressed 40% toward the league mean so two stout defenses don't produce a 35-point game. Win probability is the same normal with no-vig conversion to American odds. EV at −110 needs 52.38% to break even.
Units
Quarter-Kelly, 1u = 1% of bankroll, capped at 2.5u. Plays under 1.8% EV are passed. That is conservative on purpose — you can raise the Kelly fraction below if you want more heat.
b = american_profit(odds) kelly = (p · (b+1) − 1) / b units = clamp(kelly · kellyFrac · 100, 0, 2.5)
Sharp flags
- Differential = money% − bet% on the favorite. Highlighted at +10 / +15 / +20.
- Sharp when |Δ| ≥ 10. The side with more money than tickets is the sharp side.
- Public steam when tickets ≥ 65% on a side and money lags by 10+.
- RLM when the line moves toward the side with fewer bets.
- TNF BOMB when model edge ≥ 3%, money differential ≥ 15%, RLM is on, and model + sharp agree.
Global knobs
Weekly workflow
- Re-rate teams on Rankings after the Sunday/Monday tape.
- Open each card. Punch in current spread, juice, total, and the two split percentages. Inputs are large on purpose.
- Nudge injuries, weather, rest, and coaching. The projection and flags recompute instantly.
- Sort the slate by +EV. Log the play into the tracker. Grade it after the game.
Opening 2026 ratings are a preseason board calibrated to the listed Week 1 markets, with a few intentional 1–2.5 point disagreements. They are a starting point, not gospel.