Demo -- read-only snapshot of the live system as of 2026-07-16T01:45:31Z; no live data, paper units only.
Skip to main content

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?

parity: status unknown (endpoint unreachable)

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

  1. DATA

    01

    Raw 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).

  2. SIGNALS

    02

    Hundreds 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).

  3. MODELS

    03

    Win-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.

  4. ENGINES

    04

    A 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.

  5. ONE PREDICTION

    05

    One 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...
  6. INTELLIGENCE

    06

    Validation + 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.

  1. 01
    Leak-free features

    why it matters -- no future information (e.g. season-final aggregates) reaching a per-game feature.

  2. 02
    Walk-forward

    why it matters -- training only on the past, scoring only on the held-out future -- never in-sample.

  3. 03
    Cross-corpus (>= 2)

    why it matters -- a lucky single corpus: the lift must replicate on independent league/data pairs, BOTH directions.

  4. 04
    Clustered Diebold-Mariano

    why it matters -- treating correlated rows as independent: the DM test clusters by event so p-values are honest.

  5. 05
    Planted-null control

    why it matters -- a 'signal' that is really noise: a deliberately-null column must FAIL the same gate.

  6. 06
    FWER tightening

    why it matters -- multiple-comparisons luck: running many signals tightens the bar so chance winners are caught.

  7. 07
    Degenerate-base guard

    why it matters -- a base model so weak that anything beats it -- the base must itself be skillful first.

  8. 08
    Nested-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

SHIP
calibration-only, vs_close UNPROVEN

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

sportdeep-data layer gatedverdict
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

self-improve: status unknown (endpoint unreachable)

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.

  1. 01Replay live games to grade each served prediction (CALIBRATION, not $).
  2. 02Run the candidate recalibration through the SAME leak-free eval gate.
  3. 03Only a gate PASS would ratchet the calibration forward -- a REJECT changes nothing.
  4. 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.