diff --git a/outputs/VYNDR-COMPLETION-MATRIX.md b/outputs/VYNDR-COMPLETION-MATRIX.md index d519c36..fb9504d 100644 --- a/outputs/VYNDR-COMPLETION-MATRIX.md +++ b/outputs/VYNDR-COMPLETION-MATRIX.md @@ -50,7 +50,7 @@ Prod endpoints confirmed LIVE + real: `/api/snapshot/{mlb,wnba}`, `/api/accuracy | Component | EXISTS | PROVEN | PROMOTED (serving) | USED (a surface reads it) | Evidence | |---|---|---|---|---|---| -| Champion (engine1) | YES | PARTIAL | YES | YES | `analyzeViaEngine1.js`; `enriched`→`snapshot`/`grades` (`snapshotService.js:674,680`). Measured tiny-n only (~18 MLB/~5 WNBA, "within noise"; WNBA loses) | +| Champion (engine1) | YES | PARTIAL→**promising** | YES | YES | `analyzeViaEngine1.js`; `enriched`→`snapshot`/`grades`. SKEW AUDIT 2026-07-29: on takeable MLB overs (n=62) champion p_win→CLV **partial r=0.375, SIG p≈0.003**; SURVIVES the mechanical baseline (no-edge CLV +1.5pt n=20 vs high-edge +8.6pt n=37 → **+7.1pt marginal**). De-vig clean (same-book pairing); close well-defined (DK/MGM r=0.92). PROMISING, NOT confirmed (thin n; lock-staleness check BLOCKED; 1 sig result among many) | | arch-v1 | YES | NO | NO | NO | `challengerProjection.js`; rides `withChallenger`→**ledger only** (`:693`). "measured, never served" (`ledgerService.js:251`) | | contact-v1 | YES | NO | NO | NO | `contactChallenger.js`; ledger col `p_win_contact` only | | proj-v1 / v1.1 | YES | **NO (tested 2026-07-29)** | NO | NO | `projectionChallenger.js` (MLB-batting only). PROOF ORDER verdict: **NOT PROVEN** on n=45 takeable MLB overs — edge-CLV partial-r (controlling price) = 0.245 (n.s.); ~half the raw signal is the shared −fair_prob_lock term (mechanical); and the CHAMPION out-predicts it (champ partial-CLV 0.380 sig, champ-edge→hit 0.25 vs proj 0.12). Ledger-only | @@ -160,3 +160,26 @@ scorer, pipeline, or real feature touched. Updated HONEST cells: **Notable:** the one statistically-defensible edge signal here is the **CHAMPION's** p_win predicting CLV on takeable MLB overs (partial 0.380, p≈0.01) — NOT proj-v1.1. That champion signal is itself still audit-gated (if MLB overs are whole-side stale-high, even it is suspect). **What accrues a re-test:** ~20-25 more settled takeable MLB-over rows (to test proj's residual ~0.245 partial against zero), AND proj-v1.1 must demonstrate it beats the champion — which it currently does not. Promotion stays HELD. + +--- + +# OVER-SIDE SKEW AUDIT — verdict 2026-07-29 (report-only, read-only) + +Gates the champion's over-CLV signal (partial r=0.375, p≈0.003, n=62 takeable MLB overs — 0.2 CONFIRMED). + +**THE THREE NUMBERS (Phase 4), n at each:** +- Mechanical baseline CLV (champ-edge ≤ 0, "no edge"): **+1.51 pts** (n=20) +- Champion high-edge CLV (champ-edge ≥ 0.05): **+8.64 pts** (n=37) +- **DIFFERENCE = the real edge: +7.14 pts** + +**VERDICT: SURVIVES BASELINE.** The marginal (+7.1) is ~5× the mechanical floor (+1.5) and the price-controlled partial correlation stays significant. The skew is essentially ONE-SIDED (unders lag −7.0 overall; overs carry only a small +1.5 floor, NOT the +7 a symmetric two-sided over-skew would show). De-vig is CLEAN (`analyzeViaEngine1.js:539` pairs over+under from the same book/fetch — no fresh/stale pairing). Close is well-defined (draftkings vs betmgm over-prob r=0.921, n=151). + +**→ GREENLIGHTS building the takeable-edge grade ON THE CHAMPION (engine1 p_win), NOT proj-v1.1** (which lost the proof). This is the project's first edge signal to survive an adversarial audit. + +**FLAGGED — promising, NOT confirmed:** +- Thin n (62 overs / 37 high-edge / 20 baseline). +- Phase 2 lock-staleness check is **BLOCKED**: multi-book lines AT LOCK are not retained (`bookprices` is Redis current-only), so we cannot fully rule out that part of the baseline is lock-time staleness. The de-vig being clean + the small baseline make a large hidden skew unlikely, but it's not excluded. +- Sharp (pinnacle) reference covers only **8** props (sharp-CLV +3.17pt, directional hint only). +- This is one significant result among many computed this session — do not overstate. + +**What would strengthen it:** retain multi-book at lock (enables the sharp/consensus lock-staleness check), and accrue more settled takeable MLB-over rows. Held: no promotion, no served p_win/ev, no capture fix — diagnosis only. diff --git a/specs/STATE.md b/specs/STATE.md index 5729a87..853f93b 100644 --- a/specs/STATE.md +++ b/specs/STATE.md @@ -48,6 +48,19 @@ > under-audit even applies, so the audit is moot for its promotion.** The one defensible > edge signal is the CHAMPION's p_win→CLV (0.380), itself still audit-gated. Promotion HELD; > re-test needs ~20-25 more settled takeable MLB-over rows AND proj must beat the champion. + +> ## 🔬 OVER-SIDE SKEW AUDIT 2026-07-29 (report-only): champion signal **SURVIVES BASELINE** +> Gates the champion's over-CLV (partial r=0.375 SIG p≈0.003, n=62 takeable MLB overs). +> Three numbers: mechanical baseline CLV (no-edge, champ-edge≤0) **+1.51pt (n=20)**; +> high-edge CLV **+8.64pt (n=37)**; **DIFFERENCE +7.14pt** = real edge (~5× the floor). +> Skew is ONE-SIDED (unders lag −7; over baseline only +1.5, not a symmetric +7). De-vig +> CLEAN (`analyzeViaEngine1.js:539` pairs over+under same-book/same-fetch — no fresh/stale +> pairing). Close well-defined (DK vs MGM over-prob r=0.921). **VERDICT: SURVIVES → greenlights +> building the takeable-edge grade ON THE CHAMPION (engine1 p_win), NOT proj-v1.1** — the +> project's first edge signal to survive an adversarial audit. FLAGGED promising-NOT-confirmed: +> thin n; Phase-2 lock-staleness check BLOCKED (no multi-book retained AT LOCK — `bookprices` +> is Redis current-only); pinnacle sharp ref only n=8 (+3.17pt, hint). Fix that would +> strengthen it (NOT built): retain multi-book at lock + accrue sample. Promotion HELD. - **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,