Rolling closing line value

Calibration

Summary
| Metric | Value |
|---|---|
| Beat-close rate | 53.7% (469/873) |
| Mean CLV (± SE) | +10.19% (± 2.75%) |
| p-value (vs. 50% null) | 0.0278 |
| Metric | Value |
|---|---|
| Win rate | 30.5% (228/747) |
| Log loss | 0.573 |
| Brier score | 0.194 |
Does the edge survive to kickoff?
The bot re-checks every logged bet’s EV against live odds up to kickoff. Two sticky flags come out of that: a bet is marked once its EV ever dips under 2% (the bar it had to clear to get logged at all), and again, separately, if it ever falls to near-zero — no realistic edge left. Once set, a flag stays set even if EV recovered later, so this measures whether the edge ever disappeared, not just where it ended up. Only re-checks under the corrected formula (n = 44) count here — bets re-checked before that fix landed are excluded, since that version conflated EV decay with the soft book’s own price movement rather than Pinnacle’s.

CLV by decay bucket
Every corrected-formula bet falls into exactly one bucket: never flagged, dipped under the 2% EV barrier, or dipped further and confirmed value-gone by kickoff. The table below repeats the closing-line-value stats for each bucket separately, so the flag’s actual relationship to CLV is visible directly instead of inferred from a single filtered comparison.
| Bucket | n | Beat-close rate | Mean CLV (± SE) | p-value |
|---|---|---|---|---|
| No flag | 7 | 57.1% (4/7) | +8.07% (± 4.68%) | 0.7055 |
| Under 2% EV | 9 | 100.0% (9/9) | +11.33% (± 2.79%) | 0.0027 |
| Value gone | 28 | 60.7% (17/28) | +4.48% (± 1.86%) | 0.2568 |