Skip to content
DexRay

House · sealed Aug 24, 2026

We sit the exam too.

The strategy below was registered before the season with a gate and a kill switch. Amendment A3 (2026-09-01) set the live-trading and release terms without touching the model, the gate thresholds or the five registered markets: from Week 1 it trades real money at signal time, and Pro and API subscribers receive each week's released signals two hours after the house places its own orders; everyone, subscriber or not, sees full lines at kickoff − 15 minutes. A seeded 20% of each week's signals is withheld from absolutely everyone until that same kickoff − 15 mark, and in practice until the next scheduled export after it, so the gap between released and held-out signals gives an honest read of our own footprint on the numbers below.

Two ledgers are kept, graded differently — not by the same judge as a wallet on the leaderboard. The signal ledger is the gate: one row per signal, priced at the best sportsbook quote at signal time, graded only against the sportsbook close — fills, Polymarket prices and CLV_pm never enter it. The separate fills ledger (real venue orders, not shown here) tracks live ROI and the execution-gap kill.

Proof of work · backtests, run before Week 1

Three registered looks, sealed before results

Each look below was pre-registered — question, method and expected range written down before the outcome data was touched (docs/hypotheses.md, docs/FEATURES.md § the markets program). The bar is the 95% confidence interval around the headline number; the dot is the point estimate; the dashed line is the no-edge reference. Regenerate these exact numbers with python scripts/site/export_backtests.py.

M1

cross-book consensus mechanism

Is the leave-one-out cross-book consensus price a genuinely better probability estimate than a single book's quote?

no edge
EV→return slope 0.703CI [0.614, 0.801] · n=246k quotes

95% cluster-bootstrap, clustered by player-line

Mechanism CONFIRMED — headline bettable rule REJECTED

Headline rule (EV>2% flat bets) realized ROI: −2.4% (n=1,968, SE ±2.5%)

~70% of a book's apparent quote-EV is real information (deciles cleanly monotone, −10.3% → −2.7%). But betting the rule loses −2.40% — the ladder inverts in the tail (a winner's curse): the most extreme “bargains” are where the outlier book knew something.

Historical backtest, not a live result: measured on props_closing 2023–2025 against the sportsbook closing line, before any forward money was risked. Forward 2026 results may differ and are graded separately (see the season section below). Subject to the registered kill criteria in docs/hypotheses.md.

M3

distributional props model (blend)

Does a calibrated projection model, blended 30/70 with the cross-book consensus, find bettable mispricing — including off-modal points no price-only method can price?

0%
Realized ROI (flat 1u) +5.1%CI [+2.7%, +7.6%] · n=11,650

95% cluster-bootstrap by season-week

Mechanism AND bettable rule both land — survived adversarial review

51/66 weeks positive; season splits +3.5 / +4.9 / +9.3%. Adversarial review passed: zero-info baselines separate cleanly, modal-point-only subset +11.9%, edge survives dropping the Sleeper feed (+4.28% no-sleeper refit).

Historical backtest, not a live result: measured on props_closing 2023–2025 against the sportsbook closing line, before any forward money was risked. Forward 2026 results may differ and are graded separately (see the season section below). Subject to the registered kill criteria in docs/hypotheses.md.

M4

v2 model confirmation

Does the overnight-optimized v2 per-market model (vs M3's v1) clear its pre-committed ship bar of +3.8% ROI?

0%
Realized ROI (flat 1u) +6.9%CI [+4.3%, +9.4%] · n=10,852

approx., ±1.96×iid SE (no cluster-bootstrap run for M4)

CONFIRMED — ship rule passed (≥ +3.8% bar); v2 shipped for 2026

Every market non-negative; pass_tds repaired (−6.7% → 0.0%). The +1.75pp delta vs M3 is within ~1.3σ — v2's adoption rests on dev-CRPS superiority + ROI non-inferiority, not a statistically resolved ROI improvement.

Historical backtest, not a live result: measured on props_closing 2023–2025 against the sportsbook closing line, before any forward money was risked. Forward 2026 results may differ and are graded separately (see the season section below). Subject to the registered kill criteria in docs/hypotheses.md.

Game lines · R3.7, research/paper-track — not a registered signal

Six more classes, six honest nulls

Beyond the five registered player-prop markets above, we ran the same walk-forward, no-peeking discipline against game lines — NFL and CFB spreads, totals, moneylines, and CFB opener-vs-close — using only free nflverse/CFBD data (The Odds API credits untouched). Each class needed to beat both a market-implied baseline and an Elo/ratings-only baseline, and for spreads/totals to clear the −110 vig-adjusted breakeven (52.38%, dashed reference below) — not merely 50%. Walk-forward by season with a 3-season burn-in, one final out-of-sample read-out per class, 95% CIs cluster-bootstrapped by game-week, 29 total comparisons accounted for across the family (see the methodology note below). Every one of M5–M10 is a NO EDGE verdict — reported here in full, with the same layout and weight as a positive result, because a clean null with a tight CI is exactly what "best possible, honestly" is supposed to produce when there is nothing to find. Full protocol, every baseline and every comparison: docs/plans/model-gamelines-results.md.

M5

NFL spreads (ATS)

Does a gradient-boosted model beat the closing NFL spread out-of-sample, net of -110 vig?

breakeven 52.38%
GBM hit-rate vs. closing spread 49.1%CI [46.8%, 51.6%] · n=1,326

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — gradient boosting on Elo/form/rest/division features finds nothing the closing spread doesn't already price.

Market 49.62% [47.00%,52.13%] over the same 1,326 games (walk-forward test 2021-2025); paired model-vs-Elo diff CI straddles zero (no detectable difference from an Elo-only baseline either way). -5.61pp below breakeven.

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

M6

NFL totals (over/under)

Does the model beat the closing NFL total out-of-sample, net of -110 vig?

breakeven 52.38%
GBM hit-rate vs. closing total 51.5%CI [48.9%, 53.9%] · n=1,348

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — CI lower bound sits well under both 50% and the breakeven bar.

Market 48.52% [45.67%,51.26%]. -3.46pp below breakeven. Paired model-vs-ratings-proxy diff CI straddles zero — no CI-clear improvement over the baseline round's own weak-Elo-signal finding for NFL totals.

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

M7

NFL moneylines (calibration)

Does the model's win probability beat the de-vigged closing moneyline's own Brier score out-of-sample?

market ties model
Paired Brier improvement vs. de-vigged close -0.0136CI [-0.0190, -0.0081] · n=1,359

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — the model reliably loses to the de-vigged close (CI clear of zero, wrong direction); it does beat an untuned Elo-only baseline, which was never the bar.

GBM Brier 0.2254 vs. market (de-vigged close) 0.2118 — lower is better, so a negative paired diff here means the model loses. Reliability table (8 bins) is reasonably calibrated; "beats the market" was the mission's actual bar, per r37, not "beats a weak in-house baseline."

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

M8

CFB spreads (ATS)

Does the model beat the closing CFB spread out-of-sample, net of -110 vig?

breakeven 52.38%
GBM hit-rate vs. closing spread 50.2%CI [48.4%, 51.9%] · n=3,660

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — model, CFBD Elo and the raw market itself sit on top of each other around 50%, none near breakeven.

Market 50.36% [48.81%,51.88%]; CFBD Elo baseline is statistically indistinguishable from both (paired model-vs-Elo CI straddles zero). -4.01pp below breakeven. Caveat: CFBD-basis lines, not multi-book consensus.

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

M9

CFB totals (over/under)

Does the model beat the closing CFB total out-of-sample, net of -110 vig?

breakeven 52.38%
GBM hit-rate vs. closing total 52.8%CI [51.1%, 54.5%] · n=3,683

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — clears 50% but not the 52.38% breakeven bar, and the lift is a drift artifact, not signal.

Market 49.58% [47.96%,51.26%]. -1.25pp below breakeven; indistinguishable from a no-ratings control. A no-ratings train-mean control matches the model within ~0.2pp with heavily overlapping CIs — the ~2-3pp lift over 50% is CFB scoring-level drift, not a ratings or feature-model signal. Caveat: CFBD-basis lines.

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

M10

CFB opener-vs-close basis

Is the CFB opening line beatable with this model even where the close is not (early-entry only)?

breakeven 52.38%
GBM hit-rate vs. total OPEN 52.5%CI [50.6%, 54.3%] · n=3,696

95% cluster-bootstrap by game-week (league, season, week), 2,000 resamples, walk-forward test 2021–2025

NO EDGE — not measurably better than betting the same model against the close on the same games; the total's ~52-53% pattern is M9's scoring-drift artifact, not open-specific softness.

GBM hit-rate vs. spread OPEN: 50.1% (n=3,667, SE ±0.8%)

Reuses M8/M9's frozen predictions against the OPEN price instead of the close, no refit. Paired model-vs-open-minus-vs-close diffs straddle zero for both markets (spread and total alike) — the open is not measurably softer than the close for this model. Secondary/early-entry framing only: this repo has no historical fill/latency data to confirm opening-line execution is feasible.

Research / paper-track only — NOT a registered signal and not traded. Walk-forward by season (3-season burn-in, later seasons scored out-of-sample only), 95% CIs cluster-bootstrapped by game-week (league, season, week), one final test read-out per class, no test-set peeking. Full protocol, data sources and every comparison run: docs/plans/model-gamelines-results.md. A real edge here would need its own owner-approved amendment before ever joining Signals — none is proposed, because none of M5-M10 cleared its kill criterion.

Methodology, in brief

Walk-forward by season (time-ordered, no test-set peeking): the first three seasons of each league/class are pure burn-in, every later season is scored using only strictly-prior-season fits, and results are pooled into one number per class — a single final read-out, not the best of several looks. Confidence intervals are 95% cluster-bootstraps resampling whole (league, season, week)game-weeks together, since these markets move on a weekly news/injury cadence. The kill criterion: a class only clears NO EDGE if a feature model beats both baselines and, for spread/total classes, its CI's lower bound sits above the 52.38% −110 breakeven — 50% clearance alone is shown as a diagnostic but was never sufficient. Multiple comparisons across all six classes and both leagues are accounted for family-wise in the results doc rather than read cell-by-cell. Nothing here touches docs/hypotheses.md, models/**, or any registered constant, and no signal — live or paper-track — is proposed by this round.

Phase 1 → live · gate by end of week 10

2026 season, graded forward

signals0

target 1,500

mean CLV vs sportsbook close—

Awaiting Week 1 — no signal has settled yet, so there is no CLV to show. This is not a zero; it is unmeasured.

week0

target 10

Season underway — first signals will appear after the first Friday refresh.

Equity curve · signal ledger, cumulative flat-stake units

0uweek 1week 10

Cumulative flat-stake units from the signal ledger, by week. Empty by design — the season starts Sep 10, 2026; this fills in one point per week as signals settle (Tuesday grading). The dotted path above is illustrative only, not a forecast.

Registration · verbatim

2026 Forward Pre-Registration — sealed before Week 1

Sealed 2026-08-24 (season kickoff 2026-09-10). Append-only: amendments may be added with a date; nothing above an amendment line may be edited. Judged by forward CLV and realized results only — no retrofits, no re-scoring.

Companion docs: docs/FEATURES.md § MARKETS (the backtest verdicts that got us here), the Road-to-2026 plan (gates & kill criteria), Polymarket runbook.


1. Instruments & definitions

  • CLV (primary instrument): for each bet at decimal price d on side s at point pt, CLV = p_close(s, pt) × d − 1, where p_close is the de-vigged median consensus of sportsbook closing quotes (odds_api capture, ≥ 4 books at the matched point; proportional de-vig; the M1/M3 consensus machinery, frozen). Mean CLV over bets is the gate metric.
  • Realized ROI (secondary): flat-stake units won / staked, pushes excluded, voids excluded.
  • A "bet" = one player-line (max one position per (game, market, player)).

2. Frozen strategy P1 — props blend (the M3 rule, forward)

  • Model: frozen artifacts models/props_2026/ (trained ≤ 2025 only, commit 1d321dc); features rebuilt weekly by props_features.py from updated ingestion — construction is walk-forward-safe by design.
  • Fair value: p_fair = 0.30 × p_model + 0.70 × p_consensus, consensus translated across points via the model CDF (frozen M3 semantics). Where no book consensus exists for a line (< 4 books), no bet — the model alone is not a registered strategy (variant C was diagnostic only).
  • Entry: EV vs quoted price > 3% (taker) computed with p_fair.
  • Markets: player_receptions, player_reception_yds, player_rush_yds, player_pass_yds, player_pass_tds. Anytime-TD: NOT registered (longshot de-vig surface).
  • Stakes: paper = flat 1u. Live (Phase 2, only after the gate): flat 0.25u, quarter-Kelly cap, never exceeded.
  • Timing: signals computed after Friday injury reports; no new positions between Saturday final refresh and kickoff unless the model+consensus are both refreshed.

3. Gates & kill criteria (mirror of the plan, binding)

  • Phase 1 → 2 gate: ≥ 1,500 paper bets AND mean CLV ≥ +2% AND paper ROI > 0 by end of week 10.
  • KILL: mean CLV ≤ 0 at week 10 → stop, publish the negative.
  • Live kill: execution gap (realized fill price vs signal price) consumes more than half the paper edge for 4 consecutive weeks → back to paper.
  • Any discovered leakage voids affected results; the 2024–25 spread holdout remains untouched by everything in this document.

4. Registered secondary rules

  • Dominance screen (from M2): a book/venue offering a strictly better point at a price ≥ consensus fair for the modal point → bet 1u paper / 0.25u live, logged separately. Expected ~3/week. No gate — it is +EV by construction under consensus-as-truth; we are measuring frequency and fills.
  • Monitoring hypotheses (NOT bets, tracked for 2027 registration): (a) unders outperform overs in props (M3: +10.4% vs −0.2%); (b) rush_yds is the strongest market (M3 sub-split, selection-suspect); (c) props CLV is higher earlier in the week (literature: edge is at open).

5. Polymarket deployment annex (execution layer for P1)

  • Venue: Polymarket international CLOB. Only markets unambiguously mappable to a registered stat market with a numeric threshold and a resolution rule equivalent to our settlement (official league stats; inactive-player handling understood) are tradeable. Unmappable or ambiguous-resolution markets are skipped and logged.
  • Quoting (maker-first): post-only resting orders at price ≤ p_fair − 0.02 (buy side of the favored outcome). Taker crossings only at ask ≤ p_fair − 0.03 (the registered EV_MIN). Cancel-and-refresh on every model/consensus refresh; hard cancel of all resting orders at T−15min before kickoff.
  • Sizing: per market ≤ min(1% of venue bankroll, 10% of visible depth within 2pp of fair). Weekly total at risk ≤ 20% of venue bankroll.
  • Paper-fill rule (Phase 1): a simulated maker order counts as FILLED only if a later captured trade prints at or through its price before cancel time (conservative; uses the nfl_trades capture).
  • Custody: venue bankroll is capped at an amount whose total loss is acceptable (platform custody + regulatory risk); profits swept out regularly per the runbook.
  • Fees per current schedule (maker 0, sports taker coefficient) are included in all EV calculations.

(Technical parameters — tick sizes, min order size, resolution-source verification — are recorded in the Polymarket runbook as operational facts; they do not change the registered rules above.)


Amendments below this line only, dated, append-only.


A1 (2026-08-24) — Polymarket resolution semantics: P(plays) adjustment

Verified from live Polymarket market rules (API research, 2026-08-24): NFL O/U props resolve Under if the player is inactive (books void instead), and 50-50 on a canceled game; resolution source is official NFL stats via UMA's optimistic oracle (2h challenge window). Therefore the PM fair value is unconditional:

p_over_pm = P(plays) × p_fair_conditional

Frozen P(plays) table (measured on 13,201 prop-quoted player-games 2023–25, played = offensive snaps > 0; conservative — name-match misses count as DNP): no report 0.985, Questionable 0.97, Doubtful 0.15, Out 0.02. Not tuned in-season; may be re-estimated for 2027 only.

Paper-fill rule refinement: maker quotes cancel at kickoff − 15 min; a quote refresh supersedes the prior quote from its timestamp. Fills simulated strictly trade-through (a captured print at or through the quote price inside the quote's live window) on the 30-minute trade tape — conservative by construction.

Fee facts (recorded, affect EV arithmetic): maker fee 0; sports taker coefficient 0.05 (fee = shares × 0.05 × p × (1−p) ≤ 1.25% of notional at p=0.5) — inside the registered 3% taker margin; maker rebate ≈ 15% of taker fees on filled maker liquidity, treated as bonus, not counted in EV. Min order 5 shares; tick 0.01 (0.001 beyond ~0.04/0.96).


A2 (2026-08-25) — production model version: v2 (pre-Week-1 switch)

Registered look M4 (sealed & run 2026-08-25, see FEATURES.md) confirmed the v2 model per its pre-committed ship rule (+6.88% ROI ≥ +3.8% bar; dev-CRPS superiority established on ≤2022 folds; FTN sub-contest binding → FTN out). P1's model is now models/props_2026_v2/ (per-market: receptions LGBM, rec_yds compound MC, rush_yds CatBoost, pass_yds tuned LGBM, pass_tds CatBoost; all trained ≤2025). Decision layer UNCHANGED (w=0.30, EV>3%). v1 (models/props_2026/) is the frozen fallback; switching back mid-season is allowed only on a technical failure of v2's runtime, never on results. This amendment is legal because it predates Week 1; no in-season model changes are permitted by §2.


A3 (2026-09-01) — live from Week 1; signals sold to subscribers; instrument unchanged

Owner decision 2026-08-27, parameters confirmed 2026-08-31 (pre-Week-1, therefore legal under the append-only rule): strategy P1 trades real money from Week 1 (2026-09-10) and its signals are sold to Pro/API subscribers with a fixed release lag. §§1–5 are not edited; where this amendment differs from §2, §3 or §5, this amendment governs from Week 1. Nothing here changes the model (A2), the decision layer (w = 0.30, EV > 3%, ≥ 4-book consensus), the five registered markets, or the §1 instrument.

1. One live validation phase (weeks 1–10). No paper phase.

  • Stake: flat 0.25u per signal from Week 1 (the §2 Phase-2 stake), where 1u = 1% of the venue bankroll fixed in results/live_2026/config.json before Week 1 (fixed 2026-08-31: $1,000 → 1u = $10, 0.25u = $2.50). The bankroll may be lowered in-season, never raised. §5 sizing (≤ min(1% bankroll, 10% of depth within 2pp), ≤ 20% weekly at risk), quarter-Kelly cap, custody and fee rules unchanged. Orders below the venue minimum (5 shares) are SKIPPED and logged, never rounded up. Dominance screen (§4): 0.25u live from Week 1, logged separately.
  • Gate (§3, thresholds unchanged): n ≥ 1,500 signals AND mean CLV ≥ +2% AND live ROI > 0 by end of Week 10. Pass → stake may rise to at most 0.50u for weeks 11–18 (pre-committed ceiling); not passed and not killed → stay at 0.25u and make no validation claim.
  • KILL unchanged: mean CLV ≤ 0 at Week 10 → stop trading, stop selling the signal, publish the negative. Live kill unchanged (§3), applied from Week 1; "back to paper" means: trading halted, signals still computed, published post-kickoff and graded.

2. What counts — the gate ledger vs the fills ledger.

  • The gate n and gate CLV are computed on the signal ledger (results/paper_2026/signals.parquet): one bet = the first signal per (season, week, event_id, market, player) — ledger.grading_key — priced at the best sportsbook quote at signal time; CLV vs the de-vigged full median sportsbook close at the matched point, ≥ 4 books (recorded here to remove §1's "M1/M3 machinery" ambiguity: the full median including the quoting book is the conservative reading and is what clv_report.py implements). Fills, partial fills, Polymarket prices and CLV_pm never enter the gate; n counts signals, not fills.
  • Real fills go to a separate fills ledger (results/live_2026/ fills.parquet), published weekly next to the signal ledger; used only for live ROI (units = 0.25u × filled fraction) and the §3 execution-gap kill.
  • The §5 paper-fill simulator is retired as a gate input from Week 1 (public flow prints through simulated quotes); if run, it is diagnostic and labelled so.

3. Release time T_rel, the holdout, and the release record.

  • House orders (§5) are placed at signal time T0 = each scoring run (the scheduled Fri/Sat/Sun/Thu/Mon runs; §2 timing unchanged). Signals are released to Pro and API subscribers at T_rel = T0 + 2h, never later than kickoff − 6h and never before T0. The free tier receives full lines at kickoff − 15 min (count-only before). The house's 2h priority is disclosed on the pricing and house pages.
  • Holdout: a seeded random 20% of signals per week (seed created once per (season, week) in results/live_2026/seeds.json, published after the week's last kickoff) are withheld from ALL subscribers until kickoff − 15 min, with every model number, side, best_price and signal_id stripped from the released payloads until then. The house trades holdout signals identically; they are in the gate ledger.
  • At T_rel the export records per released signal: best book + price, consensus, and (when a Polymarket market maps) PM bid/ask and capacity_usd. The weekly report publishes CLV from the signal price (house; the gate) and from the T_rel reference (subscriber-achievable). Only the former is the gate.

4. Self-impact caveat and the pre-registered check. Public flow after T_rel can move the sportsbook close toward the signal side and inflate measured CLV; on Polymarket it inflates CLV_pm for everyone. Therefore: (i) CLV_pm is never cited as evidence for P1 and is labelled "self-impacted" wherever shown; (ii) the weekly report publishes CLV(released) and CLV(holdout) separately; (iii) a validation claim requires CLV(holdout) > 0 with n_holdout ≥ 300 at Week 10. A gate that passes overall while the holdout is ≤ 0 is reported as "passed — self-impact suspected", permits no stake escalation, and is recorded as a negative for the mechanism.

5. Live-chain semantic fixes (pre-Week-1, no model change).

  • UPCOMING-mode features are built with as-of fills so every live feature equals what the training pipeline would have produced had the week's row existed (previously an exact-(season,week) join left PFF/snap/ Sleeper features null on all upcoming rows). Sanctioned retest (no outcomes involved): feature-vector parity on 2025 weeks 2/6/10/14/17 — 0 mismatches on every feature column (scripts/markets/ parity_check.py, tests/test_upcoming_parity.py). A distribution-shift assertion refuses to score when any feature's upcoming null share exceeds training + 10pp.
  • The consensus universe is sportsbooks only (scripts/markets/ consensus_books.py, derived from the odds_history props_closing universe the M1/M3/M4 backtests used) — DFS pick'em/exchange quotes never enter p_cons. MIN_BOOKS = 4 unchanged. This is the registered reading of §1's "sportsbook closing quotes".
  • The live tier-1 capture fetches exactly the five registered markets (anytime-TD excluded from the paid fetch as from the strategy).

6. Venue reality. Polymarket per-game props are sparse (2025 Week 1: four QB passing-yards markets, ~$456 total volume). The house trades on Polymarket only where a market maps unambiguously (§5); the public signal is a sportsbook signal and no Polymarket capacity is promised. Signals with no PM mapping still count for the gate (the instrument needs no fills).

7. Scope. T_rel, the holdout share, the stake ceiling and any seat cap change only by a further dated amendment, never on results — except that stakes may be lowered and signal sales halted at any time. No in-season model or decision-layer changes are permitted (§2, A2).


A4 (2026-09-01) — venue bankroll fixed at $2,000 (pre-Week-1 correction of A3's figure)

Owner decision 2026-09-01, before Week 1 and therefore legal under the append-only rule. A3 §1 recorded the venue bankroll as $1,000 (1u = $10, 0.25u = $2.50). At that size, an order clears the venue's 5-share minimum only when price ≤ $0.50 ($2.50 / 5 shares), so with maker bids at p_fair − 0.02 the executor could only ever place the sub-50¢ side of a line — a live fill sample one-sided BY CONSTRUCTION. The bankroll is therefore fixed at $2,000 (1u = $20, 0.25u = $5.00; prices up to ~$1.00 clear the minimum) in results/live_2026/config.json. Everything else in A3 §1 is unchanged: flat 0.25u, quarter-Kelly cap, §5 sizing and custody rules, and the bankroll may be lowered in-season, never raised. No further pre-kickoff bankroll changes without another dated amendment.

A5 (2026-09-02) — scoring cadence 5x→8x/week; T0/T_rel proximity clarification

Owner decision (pre-Week-1, legal under the append-only rule since the season has not started). A3 §3 defined T0 as "each scoring run (the scheduled Fri/Sat/Sun/Thu/Mon runs)". The orchestrator (scripts/markets/score_week.ps1, via scripts/tasks/CJGOAT-score.xml) now runs up to 8x/week: the prior Thu/Fri/Sat/Sun/Mon runs, plus three pre-kickoff refreshes (~90 min before each of Thursday's, Sunday's, and Monday's first kickoff), each scheduled strictly after that day's existing run so it cannot become the week's earliest signal for any line and cannot change which entry is graded (ledger.py's grading_key() keeps the earliest signal_ts per line; see docs/plans/cadence-2026.md § Idempotency). Their honest scope: each refresh only changes the graded outcome for a line that first clears the EV/book-count bar at that refresh — for a line already signaled earlier the same day, the refresh is provably inert on the grading ledger. On the money side, once live trading is on, a refresh can update a still-open resting order's price (per pm_execute.py's §5 cancel-and-refresh) and can open an additional rung of an already-worked player-market; total exposure per player-market remains bounded by §2's per-market ≤ 1%-of-bankroll cap, which pm_execute.py enforces as an accumulated family total (regression-tested, 2026-09-02). This is at zero incremental Odds API cost (the scoring chain reads only already-ingested local data). T0 is hereby redefined as "each scored run of the scheduled orchestrator, whatever its current registered cadence in scripts/tasks/CJGOAT-score.xml" rather than an enumerated list of days. Everything else in A3 §3 is unchanged.

Not included in this amendment: a Wednesday (or any other pre-Thursday) run. With week.py's rollover landing ~Tue 04:15 ET, a Wednesday run would become the week's new-earliest run and therefore the graded/traded entry for every line — a change to which entry is graded, not a cadence tweak. That needs its own ruling: should T0's earliest weekly entry point move before Thursday, given §2 registers signals as computed after Friday injury reports? No schedule change is made pending that answer.

T0/T_rel proximity. T_rel = T0 + 2h, never later than kickoff − 6h, never before T0 — read literally this has no solution whenever a run's T0 falls within 6h of a game's kickoff (true of the new pre-kickoff refreshes by design, and already true of the pre-existing Thursday, Monday, and Sunday-early-window runs). No release code reads t_rel yet, so nothing has been violated. Resolution: for any signal whose governing T0 falls within 6h of its own game's kickoff, no Pro/API T_rel early release is computed or offered — it is recorded and traded normally (§5 unaffected) and reaches subscribers via the registered free-tier release at kickoff − 15 min and the holdout track (§3). This preserves the 2h Pro head start exactly where it is achievable and is honest where it structurally is not. No change to T_rel itself, the holdout share, or stake ceiling.

Kill criteria

  • Mean CLV ≤ 0 at week 10 → stop, publish the negative.
  • Execution gap (fill vs signal) eats > half the paper edge for 4 consecutive weeks → back to paper.
  • Any discovered leakage voids affected results.

Signal ledger

Every quote, every fill

This table is the signal ledger — the gate: one row per signal, priced at the best sportsbook quote at signal time (the venue column names the quoting book), graded against the sportsbook close. Status reads signal while open and the settled result (win / loss / push / void) after Tuesday grading. Rows whose venue is polymarket are a separate appendix: the house's own maker-quote log, marked quoted or diagnostic … — the retired §5 simulator's output, never a real fill and never the gate. The fills ledger (real venue orders, published from the first live fill) tracks what actually executed and the gap between signal price and fill; a persistent gap is a kill condition (§A3).

Empty by design until kickoff. Each signal row is logged at signal time, priced at the best sportsbook quote, and its status flips from signal to the settled result after Tuesday grading. Polymarket-venue rows, when present, are the house's own maker-quote log (quoted / diagnostic …) — never a real order; real executions live only in the separate fills ledger, not in this table.