how the AI works -- in depth
How CourtVision works
One pipeline turns raw game data into a single calibrated prediction per market, then re-validates every stage. Markets are efficient; the honest, defensible win is matching the devigged close within noise -- plus a measured in-game calibration edge. No dollar edge is claimed.
what am I looking at?
This page walks the whole pipeline from raw game data to a single calibrated probability per market. It is a calibrated predictor, not a betting-edge product: the honest, defensible win is matching the devigged close within noise (good calibration), plus one measured in-game conditioning improvement. Every figure is in units or probability -- there is no dollar figure anywhere, and vs_close stays UNPROVEN.
key terms in this walkthrough
- calibration
- edge vs calibration
- Brier score
- devig
- vs_close
- provenance
- uncertainty
the full funnel -- data to intelligence
DATA
01Raw game truth, ingested per game across four sports.
Computer-vision tracking, box scores and play-by-play, plus keyless ESPN / Kalshi / Polymarket odds flow in per game for NBA, MLB and soccer (tennis shares the engine). Each sport keeps a NARROW served spine plus a wide rim of ingested-but-not-served depth.
terms:discipline: The close is a yardstick, never a feature. Season-final aggregates are never used as features for an individual game (no future leak).
SIGNALS
02Hundreds of per-player / per-team signals, each gated leak-free.
A signal factory proposes candidate features off the data spine. Every one is run through the same leak-free, walk-forward, cross-corpus gate before it can touch a prediction. The vast majority REJECT -- markets are efficient.
terms:discipline: A REJECT is a SUCCESS, kept as VALIDATED SCOUTING. A rejected signal is NEVER force-fed into the model (force-feeding destroys calibration: accuracy != edge).
MODELS
03Win-prob + prop XGB + MOV-Elo, Shin / Platt calibrated.
MOV-Elo win-probability, gradient-boosted prop heads and totals models are calibrated with Shin de-vig and Platt scaling so the probabilities mean what they say. Calibration -- not raw accuracy -- is the objective.
terms:discipline: Calibrated to held-out Brier / BSS, not to in-sample fit. Single-fold lifts are treated as selection artifacts until they replicate on independent corpora.
ENGINES
04A possession Monte-Carlo sim turns one anchor into coherent markets.
Each sport's engine (NBA possession MC, MLB run-rate NegBinom, soccer EW-Poisson + Dixon-Coles, tennis point-by-point MC) draws ONE game distribution anchored to ONE win-prob, so every served market is coherent by construction.
terms:discipline: All served markets derive off the SAME anchored distribution -- moneyline, spread/handicap and total cannot disagree with each other.
ONE PREDICTION
05One anchor spines every market for a game.
The funnel collapses to a single calibrated prediction per market, with the provenance (and any scouting-only signals) surfaced alongside the number rather than fed into it.
terms:discipline: UNITS / probability only -- NO $ field anywhere. edge_claimed = false. vs_close is shown as UNPROVEN wherever it is unproven.
a concrete live example
Loading a live soccer example...INTELLIGENCE
06Validation + a person-free concept graph close the loop.
The in-game repricer conditions on the pre-game prior (the one MEASURED calibration improvement), a person-free Obsidian concept graph records what each signal means, and the validation gate re-runs every stage. The self-improve ratchet is built and READY but INERT (human-gated OFF).
terms:discipline: CLV (a better number than the devigged close, in probability space) is the only honest yardstick. Real-money execution is default-DENY; paper mode only.
validation discipline -- why most signals honestly reject
Markets are efficient, so most candidate signals carry no real information once you stop fooling yourself. Eight stacked controls each remove one way to fool yourself. A signal must clear ALL of them to ship -- and an honest REJECT is the product working, not a failure.
- 01Leak-free features
why it matters -- no future information (e.g. season-final aggregates) reaching a per-game feature.
- 02Walk-forward
why it matters -- training only on the past, scoring only on the held-out future -- never in-sample.
- 03Cross-corpus (>= 2)
why it matters -- a lucky single corpus: the lift must replicate on independent league/data pairs, BOTH directions.
- 04Clustered Diebold-Mariano
why it matters -- treating correlated rows as independent: the DM test clusters by event so p-values are honest.
- 05Planted-null control
why it matters -- a 'signal' that is really noise: a deliberately-null column must FAIL the same gate.
- 06FWER tightening
why it matters -- multiple-comparisons luck: running many signals tightens the bar so chance winners are caught.
- 07Degenerate-base guard
why it matters -- a base model so weak that anything beats it -- the base must itself be skillful first.
- 08Nested-CV anti-selection
why it matters -- tuning on the test fold: selection happens inside an inner fold, never on the held-out judge.
Only a signal that survives every control becomes a CALIBRATION prior or scouting note -- and even then, vs_close stays UNPROVEN until a separate closing-line-value test passes. No dollar edge is claimed at any step.
honest findings -- the recorded gate verdicts
the depth plateau (the honest finding)
Adding deeper data does not beat the devigged close. Across every sport and tier, the next layer of depth rejects under the gate: 7 recorded REJECTs and 1 TIER-3 BLOCKED (data off-disk), against 1 CALIBRATION survivor. The cross-sport meta-finding -- coarse in-game micro-state rejects vs (margin, time) -- is confirmed in NBA, MLB and soccer. Recording these rejects IS the deliverable.
soccer corners -- CALIBRATION, not a market edge
One signal cleared all six controls: the as-of corners differential (diff_corners_asof) improved held-out home-win Brier in BOTH disjoint league pairs (E0/E1 and SP1/I1), clustered-DM p ~= 0.0015, the base was skillful, and the planted-null rejected. It is kept as a PROPOSAL / scouting prior and is never force-fed into a prediction.
- deciding stat
- diff_corners_asof
- clustered-DM p
- ~= 0.0015
- replicated on
- E0/E1 + SP1/I1
- planted-null
- rejected (good)
vs_close: UNPROVEN -- CALIBRATION only (held-out home-win Brier), not edge
gate verdicts by sport
| sport | deep-data layer gated | verdict |
|---|---|---|
| soccer | as-of corners differential (diff_corners_asof) as a pre-match prior The ONLY survivor: feat_better in BOTH disjoint league pairs (E0/E1 and SP1/I1), clustered-DM p ~= 0.0015, base skillful, planted-null rejects. Kept as a PROPOSAL / scouting prior -- never force-fed. | SHIP calibration-only, vs_close UNPROVEN |
| soccer | as-of StatsBomb real event-xG pre-match prior Real event-xG is absorbed by the attack/defense strength already in the engine. | REJECT |
| soccer | in-game red-card / man-advantage (red_diff) repricer prior Red cards are sparse; goal-difference base already moves on the margin. | REJECT |
| nba | in-game possession / pace / run-diff micro-state repricer prior Confirms the cross-sport meta-finding: coarse in-game micro-state rejects. | REJECT |
| nba | pre-game travel_home / travel_away feature Recorded REJECT-scouting; team strength already absorbs the schedule. | REJECT |
| mlb | per-at-bat RE24 + leverage-bucket in-game state Coarse base-out / leverage state rejects against the score-and-clock base. | REJECT |
| mlb | as-of Statcast spin + estimated_woba + release_speed win-prob Pitch-quality aggregates are re-expressed by the run-rate Elo already served. | REJECT |
| tennis | per-set tiebreak_win_pct / close_set_rate trailing as-of Per-set perf re-expresses serve+return already captured by asof_hold / Elo. | REJECT |
| tennis | point-by-point / rally / pressure-point signal class The genuinely-new signal class is off-disk; recorded as TIER3_BLOCKED, not green. | TIER-3 BLOCKED |
Source: the on-disk deep-data gate artifacts. Parity across all four sports is FULLY GREEN -- see the System page for the live grid.
the self-improve ratchet -- ready, not enabled
The system can grade its own predictions and propose a recalibration -- but the loop is a measurement-only ratchet that is built and READY yet INERT (the human gate is OFF). It can only ever move calibration forward through the same gate that rejects everything else, and a human must enable it. Nothing changes the served prediction until then.
- 01Replay live games to grade each served prediction (CALIBRATION, not $).
- 02Run the candidate recalibration through the SAME leak-free eval gate.
- 03Only a gate PASS would ratchet the calibration forward -- a REJECT changes nothing.
- 04A human gate must be flipped ON for any change to take effect.
Real-money execution is default-DENY (paper mode only). The ratchet only ever improves CALIBRATION -- it can never manufacture a market edge.
Calibration, not a market edge. Calibrated decision-support only. Markets are efficient; no dollar edge is claimed. The confirmed survivor is calibration, not a market edge. Paper mode only. Local only.