Vegas doesn't sweat the small schools
The betting industry concentrates its analytical resources on high-profile matchups between power conference teams. Non-power conference games — Sun Belt, MAC, CUSA, and similar — receive far less modeling attention, which creates a potential edge for a well-calibrated prediction model focused specifically on those matchups.
The project set out to predict the point spread of NCAA D1 men's basketball games involving at least one non-power conference team, using only pre-game information: historical team statistics, rolling averages, and known player absences. No live data. No insider information. Just public box scores and smart feature engineering.
A two-stage prediction pipeline
Predicting spread directly from raw stats is noisy. The insight was to decompose the problem: first predict each team's offensive efficiency, then use the efficiency gap between teams — offensive advantage — to predict the spread. This mirrors how basketball analysts actually think about game outcomes.
When tested on actual (known) offensive advantage, the regression predicted spread with an R² of 0.981 — essentially perfect. This confirmed the pipeline was sound: the limiting factor was how accurately Stage 1 could predict efficiency, not the structure of Stage 2. The model correctly predicted the game winner 64.3% of the time, comparable to advanced public models on this conference tier.
Going beyond the Four Factors
Dean Oliver's Four Factors (shooting, turnovers, rebounds, free throws) explain up to 95% of variance in offensive efficiency — confirmed by the XGBoost baseline. But to predict future efficiency, more nuanced features were needed. The team engineered ten rate-based predictors and several model stabilization techniques.
Bayesian Averaging
Shrinks team averages toward the league mean to prevent over-reliance on small early-season samples — a critical stabilizer for teams with fewer than 6 games played.
──────────────────────────────
n_games + 5
Garbage Time Filtering
Shots taken when the score margin is ≥15 points with under 5 minutes remaining are flagged and excluded — removing "garbage time" statistics that would otherwise distort a team's true performance profile.
Interaction Terms
Two cross-feature terms added meaningful predictive signal: shooting efficiency × free throw rate (scoring ability) and turnover rate × offensive rebound rate (second-chance opportunity).
Expected Points Rate (XP)
Sum of expected points scored divided by field goal attempts — a shot quality metric that goes beyond raw efficiency to capture how well a team is selecting its shots.
Rolling & Exponential MAs
Both simple rolling averages and exponential moving averages were computed across historical games. All are implemented leak-free — no future data ever crosses the train/test boundary.
Missing Player Adjustment
Game segments featuring absent players were removed from historical averages before computing features. While the effect on offensive efficiency was marginal, it improved defensive efficiency predictions meaningfully.
Can play style predict spread?
An open question: could clustering teams by offensive and defensive "style" — pace, shot selection, physical play — reveal matchup patterns beyond what rate statistics capture? Three methods were tested.
Applied to 22 offensive features per team with PCA visualization. Results were noisy with poor cluster separation — silhouette analysis suggested only 2 optimal clusters, too coarse for matchup analysis.
Dendrograms gave manual control over cluster granularity. Euclidean distance cutoffs of 12 (offense) and 9 (defense) yielded 34 offensive and 29 defensive categories — specific enough to be meaningful.
An OLS regression using matchup category interaction terms explained 50% of variance in spread — promising, but ultimately excluded from the final model. The clusters were trained on full-season data unavailable pre-game in production, and would degrade significantly on partial seasons. Flagged as a high-value direction for future work.
How close did we get to beating Vegas?
How the model stacks up
Note: 64.3% is win/loss accuracy, not against-the-spread accuracy. Against-the-spread is a strictly harder benchmark — a 55%+ ATS rate is considered strong in the industry.
The project sponsor specifically praised the team's creative methodologies — Bayesian averaging, garbage-time filtering, and the two-stage pipeline — as key differentiators. With more time, the clustering approach (R²=0.498 from matchup categories alone) warrants further exploration, as does incorporating real-time injury data and opponent strength rankings. The ideal next step: deploy the model during a live season and evaluate against-the-spread performance in a paper-trading environment.