docs: CLV instrument repair + the straight finding (unders lag the close)

closing_prob 59 -> 406 (MLB 248, WNBA 158). Root cause was attachClosingProb's
truncated read + write-once market_unavailable, not capture or the join. CLV
measured: MLB unders lag the close (mean -9.1 prob-pts, 74% lose), MLB overs
+2.0, WNBA flat -> the +4.57% MLB-C and over/under asymmetry are substantially
stale-line artifacts. Unblocks the proj-v1.1 proof order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VsztNChZ7vEvSR61AuMhD1
This commit is contained in:
Kev
2026-07-28 19:04:50 -04:00
parent 6552281661
commit b8ee216c62
2 changed files with 16 additions and 1 deletions
+15
View File
@@ -21,6 +21,21 @@
---
# 🎯 CLV REDIRECT — investigated 2026-07-26. FINDING: it was ALREADY BUILT.
*The premise "CLV is dead, redirect it to closing_captures" is STALE. Nothing needed building.*
> ## 🔧 CLV INSTRUMENT REPAIRED 2026-07-28 (commit 6552281, deployed)
> The starvation was NOT capture (per-prop coverage is 94.9% MLB / 95.8% WNBA) and NOT
> the join (key `player_key|stat|side|game_date` is PERFECT, 0 mismatches in-range). It
> was `attachClosingProb`: `.limit(50000)` with no ORDER BY on a 730k-row table (86%
> refusal rows) saw ~7% for MLB, and `market_unavailable_reason` was write-once/terminal
> so wrongly-declared rows never recovered. FIX: read only PRICED captures scoped to the
> candidate dates (complete, small); make market-unavailable a re-checkable absence that
> a real close UPGRADES; closing_prob stays write-once. **`closing_prob` 59 → 406**
> (MLB 30→248, WNBA 29→158; all with provenance; 0 fabricated; grade/locked_odds/outcome
> untouched). **CLV finding, reported straight: MLB UNDERS LAG THE CLOSE — mean 9.1
> prob-pts, 74% lose. MLB overs +2.0. WNBA flat both sides.** So the +4.57% MLB-C and the
> over/under asymmetry ARE substantially stale-line artifacts on the unders (line 38-39
> below is now RESOLVED → confirmed, not "cannot determine"). Held: proj-v1.1 promotion +
> p_win/ev on served grades = the PROOF order, gated on this.
- **Redirect EXISTS + WIRED:** `closingCapture.buildCaptureRows``closing_captures` (append-only,
provenance: captured_at/book/line_type/both-prices/missed_reason) via `intradayRefreshService:221`
+ internal endpoint; `ledgerService.attachClosingProb``closing_prob` (de-vigs both raw sides,