Our Methodology

How we build independent win probability models for prediction markets

Current live platform coverage: NBA, NCAAMB, NCAAWB, CFB, NFL, NHL, MLB. Research and course extensions are called out separately below.

Current Proof Snapshot

73.0% win rate across 1,000 validation trades in 3 sports

Methodology explains the model design. Validation shows the current exported backtest snapshot, and results show live production outcomes.

Snapshot 2026-03-24 19 days old

ZenHodl Weekly

Get the weekly results and one modeling note.

One weekly email with live results, one model insight, and product updates.

A short weekly note for builders, traders, and researchers following the model.

Why independent probabilities matter

Most sports analytics services derive "fair value" by devigging sportsbook lines — averaging Pinnacle, FanDuel, and DraftKings odds. This gives you a consensus probability that tracks the market by construction. It's useful for sports betting (finding +EV against soft books), but it cannot find prediction market mispricings — because the output already agrees with the market.

ZenHodl models are trained on game state only: score differential, seconds remaining, period, Elo ratings, and sport-specific features. No odds, no lines, no market prices are used as inputs. This makes our output genuinely independent from the market — when our fair probability diverges from the Polymarket ask price, that divergence is a real signal, not noise.

The tradeoff: our models can have a worse Brier score than market-derived models in absolute forecasting terms. But independence is what creates trading value when the output is validated against real market prices. See the validation page for the latest exported backtest snapshot and live results for current production performance.

Market-Derived ZenHodl (Independent)
Inputs Sportsbook odds/lines Score, time, Elo only
Output Tracks market by construction Genuinely independent
Brier Score Better Worse
Trading Value Zero (agrees with market) Possible when independently validated

Data pipeline

We scrape ESPN's play-by-play API across the core sports we model. Each game produces hundreds of snapshots — one per score change or significant event.

10k+
Games
Millions
Snapshots
Multi
Sports
Multi
Seasons

Sports: NBA, NCAAMB, NCAAWB, CFB, NFL, NHL, MLB

Data is stored as Apache Parquet files. One row = one game state (score, period, clock, ESPN WP, outcome label).

Module 1 of our course teaches you to build this exact scraper.

Feature engineering

Each game state is featurized with 13–16 variables. We deliberately keep the feature set small — overfitting to noise destroys trading value.

Feature Sports Description
score_diff All home_score − away_score
seconds_remaining All Total game seconds left
period All Current period/half/inning
time_fraction All Fraction of game elapsed (0→1)
elo_diff All Home Elo − Away Elo
pregame_wp All ESPN pre-game win probability (fixed prior)
score_diff_x_tf All Lead × time elapsed (interaction)
score_diff_sq All Lead² (quadratic, captures blowouts)
is_home_batting MLB 1 if home team is batting
down, distance CFB/NFL Football situation
yard_line CFB/NFL Field position
possession_home CFB/NFL 1 if home has the ball
pace features NBA total_score, ortg_diff, drtg_diff

Model architecture

We use sport-specific models — no one-size-fits-all approach. The sections below distinguish the current live platform from adjacent research and course material.

Current live platform

The live platform currently covers NBA, NCAAMB, NCAAWB, CFB, NFL, NHL, MLB with sport-specific state models, calibration layers, and execution filters. We do not force one shared architecture across all sports.

Basketball & Football (NBA, NCAAMB, NCAAWB, CFB, NFL)

Logistic regression with isotonic spline calibration. We tested XGBoost, random forests, and neural nets. The key finding: simpler models produce better trading value because they don't overfit to noise in the training data. XGBoost achieves a better Brier score but worse c/trade. We select models by trading value, not accuracy.

Some sports justify extra complexity, but only when validation shows the added model risk is worth it. We optimize for durable trading value, not just a prettier forecast metric.

Hockey & Baseball (NHL, MLB)

NHL and MLB use state-aware probability models with sport-specific context features and calibration. They follow the same principle as the rest of the live platform: independent fair probabilities first, then market comparison and execution filtering.

Research and course extensions

Some additional model families appear in the course and research stack even when they are not part of the current 7-sport live product surface.

Soccer

Poisson goal models are a natural fit for three-way markets because they estimate home-win, draw, and away-win probabilities directly from scoring rates instead of forcing a binary approximation.

Esports (CS2, LoL)

Series markets in esports map cleanly to binomial or map-level models. These modules are part of the broader research/course ecosystem, but they are not the same thing as today’s live 7-sport product surface.

Spread/Total

Spread and total models require a different setup from moneyline markets: regression on remaining margin or total, then a distributional layer to convert that forecast into cover/over probabilities.

Backtesting methodology

Our backtests are designed to avoid the common mistakes that inflate results.

What we tried that doesn't work

We believe in showing failures alongside successes.

Choose your next step

Read the proof, inspect live results, or go straight to the live platform.