Methodology

A technical overview of the prediction pipeline, bet sizing, and verification protocol behind TiltDataLabs.

The Model

Each sport is modeled by an ensemble of five algorithms: Logistic Regression, Linear Discriminant Analysis, XGBoost, a multi-layer perceptron (MLP), and Random Forest. The model probability for a pick is the mean of the five models’ predicted probabilities. Each pick also carries a “consensus” diagnostic — how many of the 5 models landed on the same side — but the surface / no-surface decision is driven by the ensemble mean vs. the market-implied probability (see “Finding the Edge” below), not by a vote count.

Feature Engineering

  • Rolling team stats — win rate, points, offensive/defensive efficiency, pace, and rest days over configurable windows (last 5, 10, 20 games).
  • Pitcher / player stats — season and rolling game-log metrics for starting pitchers (MLB) and key players.
  • Opponent-adjusted metrics — strength of schedule corrections so a win streak against weak teams doesn't receive the same weight as one against contenders.
  • Context signals — rest days, back-to-backs, travel, and weather for outdoor totals markets.
  • Sport-specific enrichments — each sport carries its own feature blocks (MLB has starter matchups, Statcast, weather, bullpen workload; NFL has snap-weighted injury, EPA breakdowns, quarterback continuity, special teams). See the per-sport pages below for the full inventory.
  • No betting odds as features — the model prices the game, not the market. Odds are only used at scoring time to compute edge, and CLV is measured after the fact against the sharp basket (Pinnacle + LowVig + BetOnline) closing lines to grade how well we beat the close.

All features are strictly backward-looking. Training uses chronological splits — the model never sees future data during training or validation. This leak-free discipline is the single most important design constraint in the pipeline.

Sport-specific model detail

The overview on this page describes how the pipeline works. Each sport we cover has its own feature set, its own calibration history, and its own list of markets — documented in full at the pages below.

Finding the Edge

For each game and market (moneyline, spread, over/under), the ensemble produces a model probability. This is compared against the implied probability derived from the best available decimal odds:

edge = model_prob − implied_prob

A positive edge means the model believes the true probability is higher than what the market is pricing. Picks below a per-sport, per-market threshold are dropped. Thresholds are tuned by walk-forward backtesting and updated when calibration drifts.

Bet Sizing: Kelly Criterion

The Kelly criterion determines the fraction of bankroll to wager on each edge, maximizing the expected logarithmic growth of wealth:

f* = (p · b − q) / b

where p = model probability, q = 1 − p, and b = decimal odds − 1.

Safeguards

  • Fractional Kelly (¼) — every stake is a quarter of the theoretical full-Kelly optimum. Reduces variance and protects against model mis-calibration; still captures most of the compounding benefit.
  • Minimum bet floor — small-edge picks get bumped up to a floor so a real pick is a real bet, not a token stake. Prevents Kelly from suggesting sub-cent bets on marginal edges.
  • Max bet cap (10% of bankroll) — a single pick can never risk more than 10% of the current bankroll, no matter how big Kelly says the edge is. Hard tail-risk protection.
  • Edge threshold gating — picks below the market's minimum edge are dropped entirely, regardless of Kelly sizing.

Public Proof

Every daily pick file is a canonical JSON document containing the game date, picks, odds, and model probabilities. We publish that file through two independent proof layers so anyone can verify — without our help — that the pick was locked in before games started and hasn't been altered since.

Layer 1 · GitHub commit + Sigstore Rekor

The pick file is committed to a public GitHub repo (the commit time is the timing evidence — GitHub's server records it and it's cryptographically bound to the file's SHA) and signed to Sigstore's Rekor transparency log. Both happen pre-game and are publicly verifiable within seconds.

This is the layer that proves pre-game timing. It's what the Pre-game ✓ badge on the audit trail is checking against.

Layer 2 · OpenTimestamps → Bitcoin

We also submit the pick file's SHA-256 hash to OpenTimestamps calendar servers. Those calendars aggregate hashes into a Merkle root that gets anchored in a Bitcoin block, giving the proof permanent immutability once Bitcoin confirms it.

Bitcoin anchoring is best-effort — calendar servers batch and publish on their own cadence. When an OTS receipt upgrades to a Bitcoin attestation, it's a bonus immutability layer on top of the already-verifiable Layer 1 proof. Not required for the pre-game timing claim.

Verification is trustless in both layers: anyone with the JSON file can independently confirm the GitHub commit and Rekor entry, and anyone with the .ots proof can confirm any Bitcoin attestation using the open-source ots-cli tool or our in-app verify button. No trust in TiltDataLabs is required.

Markets we model

We model every major market across every sport we cover — moneyline, spread, totals, and the MLB-specific First 5 (innings) variants. The markets we actually surface on any given day are the ones where current walk-forward backtests show a durable edge. That set evolves as we re-evaluate against live closing lines: a market that loses its edge gets pulled, and a market we previously sat out can come back when the calibration shifts.

Modeled markets, every sport

MoneylineSpreadOver/Under

MLB-only variants

First 5 MoneylineFirst 5 SpreadFirst 5 Over/UnderNRFI

First 5 markets settle on the first five innings, isolating starting pitcher impact and avoiding late-bullpen variance. NRFI (No Run First Inning) settles on the first inning scoreless-or-not — SP’s first-inning stuff carries most of the signal.

What's active right now is on the Performance page: breakdown by market, win rate, ROI, and the calibration events where we've added or pulled a market from the live slate.

See it in action

Check the live track record or sign up for a free trial.