# 2026 Rule Card — pre-registered betting rules (falsifiable)

**Pre-registered:** 2026-08-15 · **Author:** bookie (Stephen's lane)
**Scoring:** append-only `exports/picks_ledger.csv` (flat units, spreads only)
**Status:** forward commitment — written BEFORE the season; no retro-fitting.

## 1. The instrument (what the research actually validated)

- **Lane:** in-season EPA-OLS (`betting.project` expanding-window fit on
  same-season completed games).
- **Trigger:** the 12+ edge is NOT uniform — it is four pockets (graded
  audit 2026-08-15, `edge_rule_c_audit.py`):
  - LIVE: 14+ mid (w5-9) 60.3% n=73 | 12-14 late (w10-16) 68.8% n=32
    p=0.050, 6/8 seasons above break-even
  - DEAD: [12,14) mid (w5-9) 49.0% n=49 | 14+ late (w10-16) 48.8% n=41
  - **Rule C1 (primary): 14+ mid + 12-14 late — 62.9% cover, n=105,
    p=0.0108, 7/8 seasons >= 50% (only miss: 2022 at 47.1%, n=17).
    Train/test (2017-2023 -> 2024-2025): 61.2% -> 70.0% n=20.**
  - Rule C2 (fallback): C1 + 14+ late reinstated — 58.9% n=146 p=0.038,
    8/8 seasons >= 50%, test 65.4% n=26.
  - Rule B (conservative floor): 12+ except 14+ late — 58.4% n=154
    p=0.044, 8/8 seasons.
- **Window:** weeks 6-16 ONLY. The lane structurally cannot project before
  week 6 (EPA needs weeks 1-4; `min_train=30` blocks week 5).
- **Threshold sharpness (graded):** signal activates exactly at 12 (11+
  52.7% -> 12+ 56.4%) and is FLAT through 20+ (17+ 54.2%, 18+ 61.1%) —
  no top-of-range decay. [12,13) alone is 54.5% n=44 — not a coin flip
  (corrects the old evidence-table note).
- **Backtest:** 12+ graded 56.4% n=195 (pushes excluded), 8/8 seasons;
  Rule B 58.4% n=154, 8/8 seasons.
- **Skill attribution (2026-08-15):** model favorite picks cover 54.1%
  (n=159, Rule A) / 56.1% (n=123, Rule B) vs ALL market favorites ~46%
  in weeks 6-9 — +7-10 pts of selection skill, not a dog-side artifact.

## 2. What the card WILL do in 2026

1. Bet every in-season lane pick in the **Rule C1 pocket**: `|edge| >= 14`
   in weeks 6-9, or `12 <= |edge| < 14` in weeks 10-16. Flat units, at the
   CFBD consensus line (DK check per slate). Fallbacks if C1's 2026 sample
   is thin or misbehaves: C2 (re-instate 14+ late), then B (all 12+ except
   14+ late).
2. Prefer favorites when the model and market agree on direction. 12+ dog
   picks only when `|edge| >= 14` and the game clears research (rivalry/CCG
   week caution). **2026 watch flag:** C1 home picks cover 69.1% (n=55) vs
   away 56.0% (n=50) — if home-pick rate sustains > 65% mid-season,
   consider a home-only refinement for 2027 (not a live rule change).
3. Keep the ledger current every week — settled vs closing DK line, CLV
   recorded.

## 3. What the card will NEVER do in 2026

- **No weeks 1-5 bets.** Preseason lane (SP+ diff + 2.5 HFA) does NOT carry
  the 12+ signal (42.1% n=57 3/7 seasons vs in-season 56.4% n=195 8/8). The
  card's preseason plays are research-only, flagged `UNVALIDATED LANE` by
  the season-card watchdog. Exception: a week 1-5 bet is allowed ONLY as a
  deliberate one-off research bet, written to the ledger with a
  `research_only` note — never presented as the validated signal.
- **No 14+ late-season chase.** 14+ weeks 10-16 is pooled below break-even
  (48.8% n=41; per-season only 2/8 below 50% — exclusion is a pooled
  upgrade, not a per-season lock). Late-season strength lives in the 12-14
  band (68.8% n=32 p=0.050, 6/8 seasons). Never "bet more because the edge
  is bigger" late.
- **No ML-value bets** (mirage: +35% ROI baseline is every-dog, model adds
  ~0). **No parlays, no boosts** (lane rule).

## 3b. Experimental lane (2026): moderate-wind totals under

**Pre-registered 2026-08-15 — this is a CANDIDATE test, not a validated
instrument. Small stakes only (half unit), tracked separately in the
ledger with `lane=weather_experiment`.**

- **Rule:** bet UNDER when ALL hold: outdoor game, wind 10-15 mph, OU >= 58.
- **Evidence:** derive 2017-2023 56.1% (n=453) -> test 2024-2025 55.7%
  (n=79, 2/2 seasons >= break-even); secondary split 2017-2021 56.6%
  (n=304) -> 2022-2025 55.3% (n=228, 3/4 seasons). OU>=55 variant tests
  even better (58.3% n=151) — watch, do not switch thresholds mid-season.
- **INDEPENDENCE CONFIRMED (2026-08-15, totals-model A/B):** a fitted
  EPA-based totals model (expanding-window OLS, weeks 6-16, n=3,848)
  has NO edge on the market OU (best bucket 51.8% at |edge|>=4, big
  edges lose: 12+ 46.0%, 14+ 43.4% — market prices EPA totals). The
  weather pocket hits 57.3% (n=218, p=0.036) and 56.8% (n=118) on games
  the model does NOT call under, vs 51.3% (n=723) for the model alone.
  The pocket is the lab's ONLY totals signal and is independent of
  EPA-level information — the market cannot price what the model
  doesn't see either.
- **CAVEATS ON FILE:** backwards dose-response (15-20+ mph shows nothing);
  the 2017-2021 split's 2022 season was flat (50.5%); OU>=62 dies on test
  (48.0% n=25). The pocket is plausible (moderate wind disrupts pass-heavy
  high-total games) but the mechanism is unproven.
- **Volume:** ~65 plays/season at OU>=58 (453 plays / 7 train seasons).
- **2027 gate (decided now):** if 2026 plays (n >= 30) cover < 52.4% the
  experiment is dead; >= 54% keeps it; between = one more season of watch.
- **EXPERIMENTAL COHORT (added 2026-08-15, weather interaction atlas):**
  16 mechanism-backed cells tested on the validation frame; two pass the
  pooled gates but are NOT promoted to rules — they are 2026 collection-only:
  - **X4 humid (OU>=58 + humidity>=80):** pooled 55.8% (n=353, p=0.033,
    5/9 seasons), holdout 66.7% (n=51, p=0.024, 2/2) — but the test is
    2025-driven (78.3% that season), so treat as unproven. 2027 gate:
    n>=30, <52.4% dead, >=54% keep.
  - **X1 crosswind subset of the pocket (wind 10-15 + OU>=58 + E/W wind):**
    pooled 62.7% (n=110, p=0.010, 7/9) but holdout n=13 — too thin to
    count. NOT a rule; the 2026 watcher tags pocket games with crosswind
    so post-season can adjudicate X1 vs X2 (crosswind vs not).
  - Watcher (scripts/weather_pocket_watch.py) now alerts pocket games AND
    collects x4 games (lane column in exports/weather_pocket_alerts_2026.csv).
  - Mechanism confirmed sharp: 7-10 mph dead (47.8%, 1/9), 15-18 dead
    (50.4%, 4/9) — the 10-15 window is the only live band.

### 3c. Market-structure sweep (2026-08-15, scout literature batch 3)

23 hypothesis cards from the literature scout sweep (academic,
practitioner, CFB-situation, novel-stats lanes; analysis/scout_briefs/)
triaged to 9 rule cells + 2 characterization cells. All on the leak-free
frame (median provider close, pushes excluded), gates identical to the
atlas. Verdicts from exports/market_structure_batch3.json:

- **B1 hook-side placement (key 3/7 families): KILL** — 47.9% (n=1,135,
  1/9 seasons). The hook-owning side does NOT cover; placement is book
  convention, not signal.
- **B2 spread key-crossing (open->close across 3/7): KILL** — 47.1%
  (n=153, 2/5). Key-crossing carries no more than the dead raw-movement
  lane (S2-S4).
- **B3 upset-victim hangover: KILL** — 43.8% (n=144, 0/9). Fading the
  shocked favorite LOSES; no hangover effect, market re-rates fine.
- **B4 post-blowout overreaction: KILL** — 50.6% (n=977, 3/9). No
  carryover mispricing after 21+ wins.
- **B5 holdover bias (prior ELO top-10, w1-2, vs G5): HOLD-PASS (thin)** —
  58.7% (n=75, 6/7 seasons), train 56.6% -> test 63.6% (n=22, 2/2). The
  only survivor, but n is small and the transfer-portal era question is
  open. NOT promoted; 2026 collection-only via dedicated watcher
  (scripts/holdover_watch.py, cron holdover-b5-watch — NOT the
  season-card watch, which only sweeps the EPA |edge|>=12 lane), 2027
  gate: n>=30, <52.4% dead, >=54% keep.
- **B6 hot-hand streak fade: KILL** — 47.3% (n=638, 0/9). Streaks are
  priced; Sinkey's 1990s-2000s effect is gone.
- **B7 totals key half-direction: KILL** — 49.7% (n=953, 3/9). Half
  placement at totals keys leaks nothing.
- **B8 totals key-crossing: WATCH (marginal)** — 52.1% (n=682, 2/5),
  below the 54% keep bar. No promotion.
- **B9 tempo x tempo OVER: KILL** — 46.7% (n=165, 3/8). Possession
  inflation is priced (and the OU>=58 OVER side is doubly dead).
- **B10 censoring-bias MEASUREMENT (char):** residual (actual - implied
  team total) is +0.62 pts at implied<=14 and +0.46 at 14-17, declining
  monotonically to -0.21 at 35-45 — Arscott's pattern is present but
  small (~0.5-0.6 pts) and NOT monotone at the top (45+ back to +0.41,
  n=305, likely big-favorite garbage-time effect). Too small to clear
  the vig as a betting cell (consistent with EPA-totals deadness).
- **B11 censoring x C1 diagnostic (char):** 12+ games by dog-implied
  band: <=17: 49.1% (n=1,196), 17-24: 50.6% (n=1,049), >24: 54.2%
  (n=227). The C1 edge is NOT concentrated in the censored low-implied
  band — censoring is not the mechanism behind C1. Edge stands as model
  skill.

Net: 0 new rules, 1 thin survivor (B5) on 2026 collection. The
practitioner/academic "market structure" family is now comprehensively
tested on our data: hooks, keys, crossings, streaks, upsets, blowouts,
holdover — everything except holdover (B5) is dead. This closes the
market-structure branch of the toolbox; further ideas in that family
need new data (true team-total lines, true historical bet%, 1H lines).

## 4. Falsification bar (decided in advance)

The 62.9% C1 claim is DEAD for 2027+ if ANY of these land (cumulative
across 2026-2028 — C1's ~13 plays/season means a single season cannot
falsify):

1. **Cover rate:** cumulative C1 plays (n >= 60) cover < 52.4%
   (break-even at -110), OR
2. **Sign flip:** cumulative C1 plays cover < 50% (n >= 40), OR
3. **Pocket death:** the 12-14 late pocket covers < 50% (n >= 15) — the
   68.8% claim dies first, OR
4. **CLV inversion:** average CLV (close vs pick line) <= 0 across all C1
   plays (n >= 40) — the edge is stale by kickoff.

Pass = the instrument survives its first real-money season with the stated
bar intact. Fail = research restarts from the pool, card reverts to
research-only until revalidated.

## 5. Source of truth

- `exports/edge_hunt_2017_2025.md` (12+ evidence table)
- `analysis/edge_rule_c_audit.py` + `exports/rule_c_audit_2017_2025.json`
  (pocket decomposition, Rule C1, concentration)
- `analysis/edge_knife_crossover_audit.py` (graded threshold sweep + Rule B)
- `analysis/edge_by_season_phase.py` + `analysis/edge_threshold_phase_interaction.py`
- `analysis/market_dog_rule_vs_model.py` (skill attribution)
- `analysis/sp_plus_lookahead_test.py` (guard: CFBD SP+ is final-ratings)
- `analysis/preseason_lane_backtest.py` (preseason lane is dead: 42.1% at 12+, n=57)
- Ledger: `exports/picks_ledger.csv`
