SLIDER — how it works
SLIDER is our independent NCAA D1 baseball team rating, built entirely from our own data. The name maps to the six knobs that drive the model: Score-margin, Lambda (the ridge penalty), Injury, Decay (time-weighted on the injury layer), ERA (the rotation baseline), and Ridge regression. Every component ships with its own per-team rank on /cbb-ratings.
The composite
Three weights, locked on a 2018-2022 train / 2023-2024 validate split. Each layer ships its own value and its own per-team rank, so a reader can sort the table by any one of them and see who is up purely on base strength versus who is climbing on form or sliding on injuries.
Layer 1 — Base (Massey ridge)
Solved by ridge least-squares (λ=0.1) with a global mean-zero constraint and per-team L2 shrinkage. Score margins are clipped to ±15 runs so a 25-run blowout doesn't drag the loser's rating into orbit. Home-field advantage and the neutral-site flag are fit as free parameters; we don't hardcode them.
Layer 2a — Form
For each team, the residual on game G is actual_margin − expected_margin where expected comes from the current base ratings + HFA. Take an exponentially-weighted mean of the last 10 residuals with a half-life of 5 games, multiply by 0.5, then clip at ±0.5. The cap is tight because the holdout sweep showed monotonically better validation accuracy as the cap got tighter — form residuals are noisier than expected.
Layer 2b — Rotation
weighted_top3_ERA = 0.5·ERA₁ + 0.3·ERA₂ + 0.2·ERA₃
Reads the team's probable starters for the upcoming weekend from cbb_probable_starters (scraped from D1Baseball). The 4.50 baseline is the rough D1 league average ERA. Starters under 30 IP are treated as league-average to keep small-sample swings (a freshman with one good start) from dominating. Capped at ±1.5 rating points but rarely binds in practice.
Layer 2c — Injury
Reads the existing pitcher_health snapshot that drives the CWS simulator. Only fires when the team is flagged red or yellow (top-3-by-IP pitcher missing recent appearances with non-trivial innings); green / unknown teams get a 0. Always non-positive — injury never helps a team.
Example team — Auburn (as of 2026-05-14)
form = +0.50 (rank 4) → contributes 0.20 · (+0.50) = +0.10
rotation = +0.33 (rank 5) → contributes 0.35 · (+0.33) = +0.12
injury = 0.00 (rank 16) → contributes 1.0 · 0.00 = 0.00
margin_rating = 6.96 + 0.10 + 0.12 + 0.00 = +7.18 (rank 3)
Auburn ranks 4th on pure base strength but climbs to 3rd on the composite because (a) recent-form residual is at the cap — they've been over-performing their rating — and (b) their probable weekend rotation grades a third of a run better than league baseline. No injury hit either. Three small tailwinds compound into one rank step.
Retrospective — six NCAA Tournaments
For each year in [2018, 2019, 2021, 2022, 2023, 2024] we built the base rating using only games played before that year's Selection Day, then tested on every post- selection-day tournament game where both teams appeared in the field. Composite-layer parameters (form/rotation/injury) are not applied here — they use 2026-season data that does not exist historically.
- Per-game winner, n=759 rated games: higher- SLIDER team won 66.1% (cluster-robust 95% CI: 62.8%–69.5%; series-level clustering, 519 clusters). Stable across all six years (62–70% range).
- Champion identification, n=6 tournaments: SLIDER's top-3 teams in the 64-team field included the eventual champion 4 of 6 times. The committee's top-3 national seeds included the champion 3 of 6 times. The single year SLIDER found the champion that the committee missed: 2023 LSU (SLIDER #1, committee seed #5).
- vs. committee-seed picking: on the same 759 games, the "always pick the lower national seed" strategy won 65.1%. SLIDER wins 66.1% — a +1.1pp edge over chalk. Modest, consistent.
- Realized P&L on real DK closing lines, n=175: We backfilled 2023-2024 tournament closing moneylines from DraftKings via The Odds API historical endpoint (64.8% of the 270-game tournament window). On these 175 games, flat $100 bets on the higher-SLIDER team returned +$578 on $17,500 staked = +3.30% ROI (69.1% win rate, Wilson 95% CI 61.9–75.5%). For context, simply backing the book favorite every game returned +4.90% ROI on the same 175 games. SLIDER's real value isn't bet-everything accuracy — it's the edge-detection layer below.
- Selective betting — where the model earns its keep: When SLIDER's win probability exceeds the closing implied probability by ≥5pp, ROI jumps to +11.58% on 59 games (67.8% WR). At ≥10pp edge, n=24 → +21.72% ROI (70.8% WR). The rating-gap filter shows the same pattern: when the two teams' SLIDER ratings differ by ≥2.0 points,+13.20% ROI on 74 games at 83.8% WR. The edge filter is what separates SLIDER from a market-chalk strategy — it tells you which games are mispriced, not just which team to back.
- Honest caveats on the realized-P&L numbers: (a) n=175 still has wide Wilson CIs, especially the edge-filtered subsets. (b) Max drawdown on a sequential $1000 bankroll at $100 flat bets was 63% from peak — high enough that real-money execution requires Half-Kelly sizing and selective filtering. (c) 35% of the 2023-2024 tournament games aren't covered by our line data (Odds API historical depth varies); we're forward-logging every CBB closing line from 2026 onward to grow the sample.
Live Kalshi forward test — what survives at real ask
SLIDER also runs in parallel on the live Kalshi CBB scanner, with its predictions logged against every emitted opportunity. Across 15,966 resolved 2026 opps (about 5 weeks of forward data), we ran the same realized-P&L analysis as above but with two real-world adjustments:
- P&L at the ASK, not the bid. The previous paper figure was implicitly bid-priced — buying YES at the lower side of the book — which isn't what a real execution actually pays.
- Spread-filtered universe. Many lower-volume Kalshi CBB markets have wide bid-ask spreads (sometimes 60-90¢ on illiquid books). When the spread is wide, the stale ask doesn't reflect market consensus. We restrict to markets with spread ≤ 10¢.
- Baseline (no filters, paying ASK): −11.49% ROI. Bet-everything on Kalshi loses money in expectation — exactly what you'd expect when the model has no quality gate.
- Edge ≥ 8pp + 25¢-60¢ price band + spread ≤ 10¢ (the live alerter's filter stack): +48.04% ROI on n=993, 74.8% win rate. This is the realistic forward-expectation number for the alerts the system actually sends — large sample, tight Wilson CI, structurally consistent with the H1 retrospective.
- Edge ≥ 10pp + spread ≤ 10¢: +63.18% ROI on n=830, 95.1% WR. The very-high-edge subset; the WR is high enough that it suggests model and market disagree most sharply when the model is on solid ground.
- Coverage: 62% of the cbb_bet_log universe (≈10K of 16K rows) has tight (≤10¢) spreads, so the spread filter doesn't kill the approach — it just removes the third of markets where the orderbook is too thin to trade.
Peer review — what changed
Two independent reviewers examined the retrospective before this page was published. Three things changed as a result:
- Top-3 reframing. The original draft said "SLIDER's #1 pick won 4 of 6." That was an overcount (2018 Oregon State was SLIDER #2, UCLA was #1). The correct claim — and the right comparison — is top-3 vs top-3.
- Comparator upgrade. We originally compared against "the committee's #1 national seed (1/6)." That's sandbagged. The honest comparator is the committee's top-3, which also gets you 3/6.
- DK breakeven line cut. "14.3pp above DraftKings breakeven" was removed. −110 is the wrong comparator for tournament games priced −300 to −500. No historical CBB moneyline data exists to compute a clean ROI figure.
Overlay validation status (H2)
The composite includes form, rotation, and injury layers. Their out-of-sample validation status on tournament games:
- Form: tested on 2023-2024 tournament games (n=201, the only clean out-of-sample window). Δ Brier vs base alone: +0.00044 (form is noise — neither helpful nor harmful at this sample size). Decision: deferred to the forward log.
- Rotation, Injury: not testable on historical data — per-team pitcher data only exists in our database from 2026 onward. Their contribution to live 2026 predictions is real but unvalidated on tournament games. Deferred to forward log once 2026 tournament results accumulate.
The 66.1% retrospective accuracy and 4/6 champion identification apply to the base layer only. The production composite adds small overlay adjustments that have negligible measured effect on tournament Brier.
Validation — regular-season
Tested on a 2018-2022 train / 2023-2024 validate split, then a 2024 holdout for the head-to-head vs PEAR. Three gates:
- Per-game winner, 2024 D1, n=3,099 (apples-to-apples on the universe where PEAR can predict both sides): SLIDER composite 69.51% vs PEAR 69.10% — SLIDER +0.41pp.
- NCAA tournament games, 2024, n=22: SLIDER composite 68.18% vs PEAR 60.00% — SLIDER +8.18pp. n is small; treat as directional.
- Calibration, 10pp bins from 50% to 100%: max bin deviation 1.00pp (gate ±5pp).
Honest disclosures
What the rating doesn't capture
Home-field advantage is fitted at +0.22 rating points, well below the +0.5-0.8 industry consensus. Two reasons. First, ESPN's neutral-site flag covers about 60% of our scored games — the missing 40% are mostly mid-major non-conference matchups that aren't on ESPN's scoreboard, so neutral tournament games in those windows still look like home games to the solver. Second, college baseball legitimately has a smaller HFA than basketball or football — ballparks vary less than arenas or stadiums. Both factors contribute; we're not hardcoding a floor.
Rotation coverage is partial. We have probable starters for ~100 of 309 D1 teams on any given weekend (scraped from D1Baseball, which prioritizes higher-profile programs). Teams without probable-starter data get a 0 rotation adjustment, not a penalty. The composite is therefore most differentiated against PEAR for the top half of the standings.
Injury coverage is partial. The pitcher- health snapshot flags about 80 teams as red or yellow at any time; the rest are green or unknown. Teams that legitimately have a healthy staff and teams whose injury data we lack both get 0.
What it doesn't see at all
- Lineup / position-player health. Only pitching injuries propagate through the injury layer.
- Park factors. The clip-at-±15 score-margin rule blunts the worst park effects but doesn't replace a venue model.
- Travel and weather. Both probably matter at the margin, neither is in the rating.
- Quality of conference schedule beyond what raw opponent-ratings already encode. A team beating a weak slate decisively shows up in the base rating exactly the way it should — but if the conference is weak in ways that don't show up in head-to-head head-to-heads, we'll miss it.
Data we use
cbb_game_index— current-season D1 game results from ncaa.com, refreshed dailycbb_historical_games— 2014-2024 game scores (~80K games), used for backtesting and the holdout sweep- ESPN scoreboard — neutral-site flag overlay onto both tables
cbb_probable_starters— weekend rotation forecasts scraped from D1Baseballpitcher_health— our own pitcher-IP-vs-absence snapshot, computed from cbb_pitcher_appearancescbb_resume_snapshots— RPI, SOS, win-pct, quadrant records (computed from cbb_historical_games + the current season, not pulled from any third party)
Not used as input: anything from PEAR Ratings, D1Baseball, or Baseball America. Those appear as comparison columns elsewhere on the site, never as inputs to this rating.
What changes day to day
A nightly worker recomputes every team at 06:00 MT. Across the last 7 days the average team's rating moves by 0.09 rating points; the most volatile teams move ~0.4. Most of the motion comes from the form layer cycling through last-10 residuals; rotation and injury rarely move the needle by more than a tenth of a rating point on any given day.