We Built an NBA Playoff Model. Here's How It Compares to the Markets and ESPN

Our NBA playoff prediction app is now live at nbapredictions.impulselabs.ai. It uses three ML models to predict who wins each playoff series (not single games), updates probabilities after every game, and lets you compare the models side by side.
For the launch, we're putting our predictions on the record against the best public sources we could find: Kalshi, Polymarket, Basketball Reference, and ESPN's Basketball Power Index.
Here's where we landed, with one series everyone agrees on and one that's about to be either embarrassing or interesting.
Lakers vs Thunder: everybody agrees
Source | Probability |
|---|---|
Impulse Ensemble | 95% Thunder |
Kalshi | 92% Thunder |
Polymarket | 93% Thunder |
Basketball Reference | 92.8% Thunder |
ESPN BPI | 90.9% Thunder |
The Thunder are heavy favorites and every source agrees. Our model is slightly more confident than the consensus, but well within the same range. There's nothing to fight about here. When public sources cluster this tightly, picking the favorite isn't a real test of the model. The other series is.
Cavaliers vs Pistons: a 30 to 50 point swing
Source | Probability |
|---|---|
Kalshi | 52% Pistons |
Polymarket | 53% Pistons |
Basketball Reference | 73.4% Pistons |
ESPN BPI | 80.5% Pistons |
Impulse Ensemble | 70% Cavaliers |
Yes, you read that right. Every public source has Detroit favored. Some of them heavily. Our ensemble has Cleveland favored at 70%.
That's a swing of 30 points off the prediction markets and 50 points off ESPN BPI. Either we're catastrophically wrong, or we're seeing something the consensus is missing.
What's also worth noting: our two underlying models disagreed strongly with each other before the ensemble combined them. LightGBM had Cleveland at 88%. The MLP had Detroit at 53%. The ensemble lands at 70% Cleveland. That kind of internal disagreement is part of why we're publishing three models instead of one. We don't think any single model has it figured out, and the ensemble is meant to capture that uncertainty rather than hide it.
Why we're publishing this
The honest reason: a model is only as good as how it performs against real outcomes, and the only way to find that out is publicly.
We could have launched the app, kept our predictions private, and waited until the playoffs ended to claim we'd called things correctly. That's how most prediction services operate. We don't think it's useful. Anyone can look smart in retrospect.
Instead, we're publishing where we agree with the consensus, where we disagree, and by how much, before the games are played. As the playoffs progress, you'll be able to see exactly how each of our models is doing against every benchmark we listed above. If our Cavs call is wrong, that'll be obvious. If it's right, that'll be obvious too. This is the version of public model benchmarking we wish more prediction tools did.
What's coming next
We'll be publishing throughout the rest of the playoffs:
Probability shifts after every game — how each series probability changed and why
Model-versus-market disagreement updates — when our model and the public sources diverge meaningfully
A Round 2 postmortem — once Round 2 ends, we'll walk through what each of our three models got right, got wrong, and what we'd change
Conference Finals predictions — full benchmark comparison, same format as this one
A Finals calibration retrospective — when the playoffs are over, the full scorecard for each of our models against every public source
If you want to follow along, the live app updates after every game.
The bigger story
The NBA app is fun, but it's not really the point. It's a public demo of something else: every model behind this app was built by the new MLE agent inside Impulse. We gave it raw NBA data, told it what we wanted to predict, and it handled feature engineering, model selection, training, and evaluation. Hours, not weeks. No code.
That same workflow applies to anything you can predict from tabular data. Churn. Demand. Fraud. Lead conversion. Insurance losses. Energy prices. NBA today, NHL tomorrow, hurricane risk and energy prices after that.
A technical write-up on how the agent actually built these models is coming next. Subscribe or follow along to catch it.
In the meantime:
Track the live probabilities → nbapredictions.impulselabs.ai
Try the agent on your own data → impulselabs.ai