About Oddsix

I'm Spencer. I built Oddsix.

I just finished my Master's in Business Analytics. I love sports, I got hooked on trying to predict them, and that's the whole idea behind this site.

By the numbers

Spencer, the creator of Oddsix

Oddsix started as a school project while I was finishing my Master's in Business Analytics at the University of Louisville. It was supposed to be small. Just NBA stats and one question: can a model actually call games before they happen? I liked it enough to keep going long after the assignment was over, and it grew into the six-sport version you see now.

I built the whole thing myself: the data pipelines, the models, the daily updates, and the site you're looking at right now. I'm still at it, especially on the newer sports, with the goal of one place where every sport feels first-class. I work on it because I genuinely enjoy it.

Spencer

Creator of Oddsix

Education

What's inside

What you'll find here

A prediction for every game

Win probabilities and projected scores across all five live sports.

Predictions in plain English

Clear calls with the model's confidence, no jargon to decode.

Every player, every season

Career pages going back to the early days of each league, with full game logs, awards, and draft history.

Team and franchise history

Season by season records, all-time rosters, and the leaders for every club.

Player comparisons across eras

Stack up players past and present and see how they really match up.

Fresh every day

The data and the predictions update daily through each season.

How it works

How a prediction gets made

  1. 01

    It starts with data

    Historical results, team form, player and injury context, and the betting lines for every sport. The NBA has the deepest history so far, and the others are catching up.

  2. 02

    A model makes the call

    Each sport's model turns that data into a win probability and a projected score for every game, then gets graded when the game ends.

  3. 03

    It comes out in plain English

    Predictions show how confident the model is in plain terms, not a wall of numbers.

What I believe

A few things I stick to

Under the hood For the technically curious

Most of this describes the NBA model, the one I've developed furthest. The other sports use the same approach at an earlier stage.

Game-outcome model

A stacked blend of gradient-boosted trees and logistic regression (~65/35), with the mix chosen to minimize Brier score (how far predicted probabilities sit from what actually happened, lower is better). It learns from the modern era, 2013-14 onward, where the pace and three-point era resemble today's game. Training uses expanding-window cross-validation, meaning it is only ever tested on seasons later than the ones it learned from. Test AUC ≈ 0.755, which is a measure of how well it separates winners from losers, where 0.5 is a coin flip. Features are auto-pruned from 563 engineered columns down to the 140 that actually carry signal.

Feature engineering

Every sport starts with Elo ratings, a running team-strength number that rises and falls with results, in a standard form and a faster-moving one that weights blowouts and resets toward the mean each season. On top of that: recent-form trends, opponent-adjusted efficiency, and rest and schedule context. The NBA model adds basketball-specific inputs like RAPM (a player's net impact per 100 possessions, separated from his teammates and opponents with ridge regression), WOWY (how a team does with a player on the floor versus off it), and Dean Oliver's Four Factors (shooting efficiency, turnovers, offensive rebounding, and free-throw rate). Every rolling stat is lagged by one game so the model never sees the game it is trying to predict.

Probability calibration

Raw model output is calibrated, meaning it is adjusted so that a stated 65% actually wins about 65% of the time. It picks the best of three standard methods (Platt, isotonic, or temperature scaling) on a season held out from training, judged by the same Brier score.

Margin, totals, uncertainty

A separate ridge regression predicts the final point margin. Its error has a spread of about 12.5 points, and that spread is what turns a predicted margin into a probability of winning by a given amount: the wider it is, the less certain the same predicted margin becomes. Player stat projections come with conformal prediction intervals, a range the real number lands inside roughly 90% of the time, rather than a single guess.

The other sports

NFL blends a win-probability model with a margin-based one; soccer is a three-way model that accounts for draws; NHL uses an Elo-based stack with a goalie adjustment. Market lines from Pinnacle feed the models as an input signal, devigged, which strips out the sportsbook's built-in cut to leave a fair probability the models can learn from.