Launch Week: Full course free — Claim your copy →
← Back to blog

Why Simple Models Beat Complex Ones in Sports Betting

2026-03-28 strategy model feature engineering edge intermediate

Most people who build sports prediction models optimize for the wrong thing. They add features, tune hyperparameters, chase Brier score improvements — and end up with a model that's more accurate but makes less money.

This isn't a paradox. It's the most important insight in sports quant trading, and once you see it, you can't unsee it.

The Experiment

We trained two models on the same dataset — same sport, same time split, same training data:

Model B won on every standard ML metric. Lower Brier score. Higher AUC. Better calibration curves. If this were a Kaggle competition, Model B wins.

Then we ran both through a trading simulation against real market prices.

Model A made money. Model B lost money.

Why Accuracy Doesn't Equal Profit

When you trade on a prediction market, you don't bet on every game. You only bet when your model disagrees with the market by enough to cover costs. The question isn't "how accurate is the model overall?" — it's "how accurate is the model on the games where it disagrees with the market?"

This changes everything about how you should think about model design.

A model with 50 features learns to match the market's assessment almost perfectly. It sees the same signals the market sees — player stats, matchup data, rest days — and arrives at similar conclusions. When it does disagree, the disagreement is small and uncertain. It's hedging.

A model with 6 features sees less, but what it sees, it sees clearly. When it disagrees with the market, the disagreement is large and confident. It doesn't know about the injury report or the travel schedule — so it can't talk itself out of a position the way the complex model does.

The simple model's ignorance is its edge.

The Market Already Knows Your Features

Here's the uncomfortable truth: if a feature is publicly available, the market has already priced it in.

Player stats? Priced in. Rest days? Priced in. Historical matchup data? Priced in. Weather forecasts? Priced in. Every piece of information that a smart bettor or a quant desk can scrape from the internet is already reflected in the market price.

When you add these features to your model, you're not adding edge — you're adding agreement with the market. Your model gets more accurate overall (because the market is mostly right), but its disagreements with the market shrink. And the disagreements are where the money is.

What Actually Creates Edge

Edge comes from seeing something the market doesn't see — or seeing the same thing differently.

The features that create trading edge tend to share three properties:

1. They capture real-time game state that the market is slow to price.

The market reacts to scoring events, but it's not instant. There's a window — sometimes seconds, sometimes minutes — where the market price hasn't fully adjusted to what just happened on the court. A model that processes game state directly can spot these windows.

2. They interact in ways that are hard to intuit.

A 10-point lead means nothing in the first quarter. It means almost everything in the fourth quarter with two minutes left. Simple features combined the right way can capture this nonlinear relationship between score, time, and win probability — without needing 50 features to do it.

3. They are independent from market prices.

This is the big one. If you train your model on sportsbook odds, closing lines, or market consensus, your model learns to predict what the market thinks — not what will actually happen. It can never find mispricings because it was trained to agree with the market by construction.

The features we use are derived entirely from game state. The model has never seen a market price during training. When it outputs "74% win probability" and the market says "63 cents," that disagreement is real signal, not noise.

How to Think About Adding a Feature

Before adding a feature to your model, ask three questions:

Does the market already know this? If it's public and widely available, the market has priced it. Adding it makes your model more accurate but less profitable.

Does it help predict the outcome, or does it help predict what the market thinks? These sound the same but they're very different. Sportsbook odds predict the outcome well — but training on them just makes your model agree with the market.

Does it maintain independence? Every feature that correlates with market prices pulls your model toward market consensus. The more your model agrees with the market, the fewer trades it takes, and the smaller the edge on each trade.

The best feature to add is one that captures real game dynamics that the market processes slowly or imperfectly. The worst feature to add is one that makes your model marginally more accurate while eliminating the disagreements that generate profit.

The Counterintuitive Takeaway

In traditional ML, more features and more complexity is almost always better. In trading, it's often the opposite. The goal isn't to build the most accurate model — it's to build a model that is usefully wrong in different ways than the market.

A model that disagrees with the market confidently and is right 72% of the time on those disagreements will crush a model that agrees with the market 99% of the time and has a slightly better Brier score.

This is why we use a small, deliberate feature set. Not because we can't build a 50-feature model — we have — but because the 6-feature model makes more money. And in this business, money is the only metric that matters.


Want to see this in action? The ZenHodl course teaches you to build both models, run the trading simulation, and see the difference yourself. Or try the free calculator to see how our simple model disagrees with live market prices right now.

Get free trading insights

Module 1 (ESPN scraping) free + weekly edge reports.

Want to build this yourself?

The ZenHodl course teaches you to build a complete prediction market bot in 6 notebooks.

Join the community

Discuss strategies, share results, get help.

Join Discord