Model Health
The full audit. Every input, every prediction, every miss — all visible. Red = broken.
See also: methodology (how the model works) ·
recent losses (the math behind each losing pick) ·
about.
CLV Edge Closing Line Value — the sharpness test Strategy scoreboard →
CLV (Closing Line Value) asks: did we get a better price than the market ended up at? When the answer
is yes, the market moved toward our side after the pick was stamped. It's the most reliable
sign of a real edge — much more than a hot or cold week of W-L. For the head-to-head
comparison against blindly following Pinnacle (with bootstrap 95% CIs), see the
strategy scoreboard.
Crunching closing-line gaps...
Feature coverage — today's slate
What inputs the model has access to right now, by sport. Green
= full coverage. Amber = partial (some games missing data).
Red = the feature isn't loading and the model is using a fallback.
Reading today's edges...
Per-sport performance — where the model is winning vs losing
Same hit-rate and calibration metrics, broken down by sport. If one sport has a
massively worse calibration gap than the others, it's the one dragging the headline
number down — focus fixes there. Sports with
n < 30 are noisy and
shouldn't drive decisions.
Bucketing resolved picks by sport...
Per-sport breakdown — where the misses are coming from
Splits picks by price, by model confidence, and by
bet type so you can see exactly which slices are losing. Useful when one
sport is dragging the headline number down.
Computing breakdown...
Data feeds — are they all alive?
Each background refresher (pitchers, bullpens, weather, Polymarket, etc.) writes a JSON
file at a known cadence. This panel reads the on-disk timestamps and flags anything
running more than 1.5x its expected interval. OK
= on schedule. Stale = between 1.5x and 3x late.
Broken = more than 3x late or never wrote.
Reading refresher timestamps...
Odds movement — are we still tracking line changes?
Every 5 minutes the dashboard pulls FanDuel prices for each game on the slate.
This panel shows where prices have moved in the last 24h, plus a heartbeat for the
snapshot loop itself. If "Snapshot pulse" is STALE, the background thread died and CLV
tracking will be broken until it restarts.
Loading line history...
Calibration — predicted vs actual
Across every resolved pick in the journal, picks the model called X% should win X% of the time.
Dots on the diagonal = perfect. Above the diagonal = under-confident (the model is hedging too much).
Below = over-confident (you're getting fewer wins than the model promises).
Bucketing resolved picks...
Decision quality — process vs result
Hit rate alone hides whether the model is finding mispriced lines
or just getting lucky. Cross "won vs lost" with "beat the close
vs not" and every resolved pick lands in one of four quadrants.
The diagonal (Clean Win + Bad Bet) is when process and result
agreed; the off-diagonal (Tough Loss + Lucky Win) is variance
separating them.
Pulling resolved-pick outcomes...
Feature contribution — top picks today
The math behind each pick: where the probability started, what each input added or subtracted,
and where it landed. A line at 0.0 means that input didn't move the pick.
Pulling today's top edges...