← All findingssource · memory/project_dvp_blowout_gate_refuted.md
Triggered by: Kennedy Burke o9.5 pts (2026-08-26, CON vs GSV) — served as board pick #1, scored 2 pts in 21.5 min, 89-64 blowout. Question raised: we HAD matchup_dvp (GSV rank 1 vs F, 28.38 allowed) and blowout_risk=high in the snapshot — why didn't the formula use it, and would a gate have helped?
Answer: the data is real, the gap is real, and the gate is REFUTED on three independent grounds.
1. Reconstruction VALIDATED. As-of-date DvP rebuilt from /wnba/boxscores/date/{d} reproduces live SDS
/wnba/teams/defense/position/{G,F,C} to <=0.01 on all 105 cells, and GSV vs F on 8/26 = rank 1, 28.378
(snapshot said 28.38). Gotcha: /players/all returns only 210 ACTIVE players and misses 25 waived ones,
undercounting allowed by up to 3.3/g — use boxscores. Prod bucketing = raw position string CONTAINS the
family letter (combos count in TWO families); denominator drops games with no player in the family.
2. The market already prices it — the deciding test is NULL. Market error (actual − de-vigged consensus) on the served ledger (n=1,037 priced picks, 7/07-8/26): elite DvP bucket (rank 1-3) +0.42pp, t=0.11, p=0.91 — unbiased. Elite-vs-rest contrast −6.43pp, t=−1.55, p=0.12 (n.s.; survives no multiplicity correction). Continuous slope +0.35pp/rank, p=0.385 — no gradient. Outcome buckets NON-MONOTONE (softest defenses worse than mid). The exact Burke case (over-side vs rank<=3): n=172, hit 54.7%, units −0.99, market error +1.94pp POSITIVE (market slightly UNDER-prices these overs). Mechanism absent at every tail cut.
3. DvP is ~85% NOISE — the measurement, not the sample, is the binding constraint. Odd/even split-half reliability across 12 family×stat cells: r = −0.033 (7 of 12 negative) vs a within-team shuffle null of 0.000 (P=0.757). Position-BLIND team defense by contrast: r_half = +0.688, Spearman-Brown 0.815. PLACEBO: opponent's rank vs the WRONG position family reproduces the effect to within 0.12pp (−6.55 vs −6.43) while sharing only 54/214 rows (Jaccard 0.14); position-blind team rank is STRONGER (−8.79pp). Whatever signal exists is NOT position-specific. Do not write "more data would settle it" — no amount rescues a feature with no true-score variance at 15 teams × 44 games.
4. The BLOWOUT gate is actively HARMFUL — it deletes profit. High-spread games are the money formula's BEST bucket: |spread|>=10 → n=208, hit 63.9%, +28.20u, +13.6% ROI; OVER picks specifically n=129, hit 65.9%, +23.68u, +18.4% ROI; positive in both season halves; same sign on all three ledgers (priced_lineedges +34.40u, disciplined_board +31.75u). Gating |spread|>=10 costs ~28-34u on a ~50u season. Market error at |spread|>=10 is −2.65pp, CI [−6.32,+1.03] (n.s.), and the LEAGUE-SCALED 7.5 threshold is DEADER still (−0.60pp) — rescaling to WNBA makes it worse, so the Gap-4 "league-scale the blowout band" item is cosmetic at best. Minutes suppression IS real (−1.04 min at |sp|>=10, z=−2.80; rotation players on the dog side −0.93 min, t=−4.15) but does NOT convert into market error.
5. The conjunction (over + DvP<=3 + spread>=10 + low total) is UNPOWERED FOREVER. Fires 10/1,005 served picks (1.0%) across 5 games — 3 of them Burke's own game; 4 of the 10 WON. Ledger effect +49.57u → +52.68u, 95% CI [−1.80, +8.80]u. Fire rate 0.23/slate-day: no forward test is possible, and per (3) none is worth waiting for.
CONSEQUENCE FOR THE BURKE LOSS: it was a fair-priced bet that lost, not a preventable error. The post-hoc "blowout + elite defense disqualified it" reasoning is measured BACKWARDS — that context marks the system's most profitable cell. The real error was sizing (20u on a coin flip), not selection.
Salvage / open lead: position-BLIND team defense is the reliable construct (r=+0.688). If defense is ever wired into the money path it must be team-level, opponent- and pace-adjusted, with shrinkage — not prod's raw position-split average. Untested, and NOT a licence to build without a fresh backtest.
Companion: project_two_month_retro_2026_08 Gap 4 (advisory flags → gating). This measurement CLOSES the
DvP and blowout candidates in that gap; the fresh-demotion over-veto remains the only live Phase-2 candidate.
Scripts: session a1827200 scratchpad dvp/ (build_dvp.py, analyze.py, robust.py, placebo.py, confound.py).