Home/Sports Betting/Model Building & Combination

Model Building & Combination

Model-Based BettingLevel 3 — Sharp

What It Is

Constructing or combining predictive models to generate team ratings and match outcome probabilities — then layering human judgment on top. The competitive edge is not in any single model but in the combination of models and contextual knowledge.

Correct Execution

You use multiple models (Market-Implied + xG at minimum) as baselines. You understand what each model captures and where it's blind. You layer in human knowledge about injuries, coaching, financial situations, and matchups. You resist the temptation to overfit models to match bookmaker odds.

Progression Levels

Diagnostic Tree

Coaching Cues

  • "All models are flawed, but some are useful. There's always an alternative perspective." — Ted Knutson
  • "The reason why I have been historically successful is the combination of humans and machines letting us generally outsmart the market." — Ted Knutson
  • "The computers are all out of whack with reality and aren't going to catch up for a few more weeks. If you're good, maybe that's free money." — on early-season model lag, Ted Knutson

Common Errors

  1. Single-model dependence: One model captures one perspective → Different models show different things on the same match → Use 2+ models
  2. Overfitting drift factors: Tuning to match market odds destroys independence → "fitting noise rather than signal" → Keep model inputs independent
  3. Ignoring the human layer: Models can't see coaching changes, financial crises, or player chemistry → The combination of humans and machines is the edge → Always layer context
  4. Trusting published models blindly: Even Opta's model (official PL data provider) lost $4,735 in a season → Validate any model against real betting results

Edges

Conventional Wisdom Is Wrong

Fitting Your Model to Market Odds Destroys It

model-bettingmodel-building

Tuning model drift factors to match bookmaker odds is circular — you're forcing your model to agree with the market, which is the exact thing you're trying to beat. The whole point of a model is independent assessment. Calibrating to market prices produces a model that confirms the market rather than finding where it's wrong.

What most people do
Validate models by checking how closely they match bookmaker odds. "My model agrees with the market" feels like confirmation.
What the best do
Deliberately preserve model independence from market prices. Use xG/shots/performance data as inputs, never odds-derived data. Disagreement with the market is the signal, not the error.
Why it's an edge: A model that agrees with the market has zero betting value. Only independent models can identify where the market is wrong.
How to exploit: Audit your model inputs. If ANY input is derived from or calibrated to bookmaker odds, remove it. Rebuild with performance-only data.
"By tuning drift factors to match bookmaker odds, we might simply be fitting noise rather than signal. We'd be forcing our model to agree with the market, when the whole point of having a model is to independently assess whether the market is correct." — Ted Knutson, Outrights Longshot Bias
🔑 Hidden Causal Lever

Lower League Ratings Fan Out 2x Over a Season

model-bettingmodel-building

EPL team ratings stay flat (99% of initial) across a season. Championship ratings end at 149% of initial dispersion, League One at 168%, League Two at 182%. This means a static-rating model works fine for EPL but is systematically wrong for lower divisions where 17-25% of teams are new each season and quality shifts dramatically.

What most people do
Apply the same model and assumptions across all divisions, treating Championship like a smaller Premier League.
What the best do
Recognize that rating variance is league-dependent. They model lower leagues with drift parameters and wider confidence intervals.
Why it's an edge: Most models assume relatively stable team strength. In lower leagues, this assumption is deeply wrong — creating systematic mispricing that peaks in outright markets where the entire season matters.
How to exploit: In lower leagues, weight recent rolling metrics much more heavily than season aggregates. In EPL, season aggregates are fine.
"The Premier League's dispersion actually decreases slightly over the season (ending at 99.2%). Meanwhile, the Championship ends at 149%, League One at 168%, and League Two at 182%." — Ted Knutson, Outrights Longshot Bias
💎 Elite-Only Behavior

Two Models, Two Lenses

model-bettingmodel-building

Market-Implied ratings (what the market thinks) and xG models (what the data shows) approach team quality from completely different angles. When both agree, confidence is high. When they diverge, the divergence itself is the signal — investigate WHY they disagree, because one of them is seeing something the other can't.

What most people do
Use a single model or data source and treat its output as the answer.
What the best do
Run multiple independent models and use convergence/divergence as the primary analytical signal. "All models are flawed, but some are useful. There's always an alternative perspective."
Why it's an edge: Single-model users can't see the disagreements that create the best bets. The combination catches what either model alone would miss.
How to exploit: For every match, check both a performance-based model (xG) and a market-based model. Bet only when both agree, or investigate deeply when they diverge.
"The reason why I have been historically successful is the combination of humans and machines letting us generally outsmart the market." — Ted Knutson, MLS Weekend 09Aug2025
🔑 Hidden Causal Lever

Median < Mean Makes Unders Structurally Correct on Props

model-bettingmodel-building

Books set prop lines using the mean (average). But skewed distributions (receiving yards, points scored, rushing yards) always have a median below the mean — big games pull the mean up while most games are below average. In-game injuries can only hurt, never help, a player's total. The structural result: overs are systematically overpriced and unders systematically underpriced.

What most people do
Evaluate props by comparing the line to the player's average (mean) performance. Take overs on players they expect to have "big games."
What the best do
Recognize the structural median-mean gap. Bet unders as the default. "I think 90-plus percent of my prop action is unders." Only take overs when the line is set below the median (rare) or when there's a specific game-script reason to expect a high-variance outcome.
Why it's an edge: This is a permanent structural edge, not a temporary inefficiency. As long as books use means to set lines and distributions remain skewed, the under side has a mathematical advantage on every single prop.
How to exploit: For any player prop, calculate both the mean and median of their last 10-15 games. If the line is near the mean, the under has structural value because the median is lower. Build a spreadsheet tracking mean vs. median for your target props.
"I think 90-plus percent of my prop action is unders." — Rufus Peabody, Happy Hour with Spanky, April 2020
🔑 Hidden Causal Lever

Leverage-Weighting Beats Binary Garbage Time Cutoffs

model-bettingmodel-building

A binary garbage-time cutoff (e.g., "filter all plays under 5% WP") creates discontinuous functions and throws away real signal. Teams performing well in garbage time exhibit real skill (moving the ball, completing passes) — it's just lower-leverage. A continuous leverage multiplier that drops off steeply near blowout territory captures this signal while the public's binary "doesn't count" filter discards it.

What most people do
Apply a hard cutoff: plays in "garbage time" (below some win-probability threshold) don't count. This creates a cliff in the model and throws away signal.
What the best do
Use a continuous leverage function where average situation = 1.0 and the weight drops off steeply but smoothly toward zero as leverage approaches blowout territory. No hard cutoff, no discarded data.
Why it's an edge: Teams that perform well in "garbage time" are systematically underrated by the public and by models with binary cutoffs. Your leverage-weighted model sees signal that others have thrown away.
How to exploit: Replace any binary garbage-time filter in your model with a continuous leverage weighting function. Compare out-of-sample predictions for teams that frequently play in blowout situations. The leverage-weighted model should outperform for these teams.
"I use essentially a function that is based off of the leverage of a situation... it's a gradual thing and obviously it drops off big time at a point, but I don't make any decision there." — Rufus Peabody, Unexpected Points, 2020

Sources

  • Ted Knutson, "Sent to Coventry" — Market-Implied model mechanics, PPG ratings, bivariate Poisson
  • Ted Knutson, "Outrights Longshot Bias" — rating drift, overfitting danger, lower-league dispersion
  • Ted Knutson, "Let's Teach, 2025 Edition" — model combination principle
  • Ted Knutson, "Learning how to get better at betting on football" — Opta model failure
  • Andrew Mack, Ep. #08 (2023-12-18) — Excel vs. Python/R tooling, anomaly detection process, universal speculation framework, ChatGPT role
  • Andrew Mack, Circles Off Ep. #185 (2024-12-19) — ML stack, sport-specific modeling, update frequency
  • Rufus Peabody, Gambling With an Edge (2019-02-15) — top-down prop projection model, rule change awareness, simulation for variance
  • Rufus Peabody, Unexpected Points Podcast/PFF (2020-09-24) — leverage-weighted grades, play success rate, QB attribution (48/52), opponent adjustment, QB backup downgrade, new QB learning curve, mixed-effects QB model, coaching ATS margins
  • Rufus Peabody, Studying the Sharps (2022-01-21) — stadium microclimate vs. airport weather, cold weather acclimation
  • Rufus Peabody, Bogus Golf Stats (2022-07-09) — empirically optimized decay functions, Monte Carlo simulation architecture, stat reliability hierarchy
  • Harry Crane, Analytics.Bet Sample Lesson (2021-08-17) — sport-specific distributions, NBA zero-differential problem
  • Harry Crane, Analytics.Bracket (2022-03-15) — ensemble models, market-model weighting