
The data that actually matters in a college basketball betting model is a short list: points scored and points allowed per 100 possessions, adjusted for the strength of the opponents, plus tempo, the venue, and who is really playing. That is enough to build a spread you can trust. Most of what fills a box score or a TV graphic, like win-loss records, points per game, rankings and winning streaks, adds little or points you the wrong way. The hard part of college basketball is not finding more data. It is cleaning the data you have, because there are more than 360 Division I teams and most of them play schedules full of mismatches.
What data actually matters in a college basketball betting model?
Five inputs do most of the work:
- Offensive efficiency: points scored per 100 possessions.
- Defensive efficiency: points allowed per 100 possessions.
- Opponent adjustment: both numbers corrected for who the team played.
- Tempo: how many possessions a team plays per game.
- Venue and availability: home, away or neutral court, and whether the key players are in the lineup.
Everything else either feeds these five or is noise. My own models were never complex. They are mostly averages, then a weight for home and away, which gives an approximate probability. College basketball rewards that kind of simple model more than most sports, as long as the inputs are clean.
Why use points per possession instead of points per game?
Points per possession removes pace from the picture, and pace hides a lot in college basketball. A fast team can score 80 points a game and still be an average offense, because it simply has more chances. A slow team can score 65 and be very good.
To count possessions from a box score, a common estimate is:
Possessions = FGA - ORB + TO + 0.475 × FTA
Here is one team's game:
- Field goal attempts (FGA): 60
- Offensive rebounds (ORB): 10
- Turnovers (TO): 12
- Free throw attempts (FTA): 20
- Points: 75
Possessions = 60 - 10 + 12 + 0.475 × 20 = 71.5. Points per 100 possessions = 75 / 71.5 × 100 = 104.9.
That 104.9 is the number your model should store, not the 75. The 0.475 is the value most college basketball analysts use for free throws. Some use 0.44, which is the original value from NBA analysis. Pick one and keep it.
How do you adjust for strength of schedule?
You adjust by comparing what a team did with what an average team would have done against the same opponents. In November and December this matters more than anything else, because a big program can open the season against teams from the bottom of Division I.
A simple version works like this. Say the average Division I team scores 105 points per 100 possessions. Your team scored 110 per 100, but its opponents' defenses allow only 100 per 100, so they were better than average. Scoring 110 against them is worth more than it looks:
Adjusted offense = 110 × 105 / 100 = 115.5
Do the same for defense, using the opponents' offenses. Without this step, a team that beat four weak opponents by 25 points looks like a contender, and you are pricing the schedule, not the team. My article on where the college basketball market is wrong early shows how to blend these early numbers with preseason ratings.
Do the four factors matter, or is efficiency enough?
Efficiency is enough to price a game, and the four factors tell you why a team's efficiency is what it is. The four factors are shooting (effective field goal percentage), turnovers, offensive rebounding and getting to the free throw line. Dean Oliver, who created them, gave them rough weights of 40%, 25%, 20% and 15%.
You do not need to add them to your spread formula. You use them to decide how far to trust a number:
- A team whose offense is built on rebounding and few turnovers tends to stay good, because those are skills a team controls.
- A team whose efficiency comes from unusually hot three-point shooting is more likely to fall back.
- On defense, a team controls how many threes it allows much more than how many of them go in. A defense that looks great because opponents went cold from three is often less good than its numbers say.
When the four factors and the efficiency number tell different stories, trust the efficiency number less, not the factors.
What data can you ignore?
You can ignore most of what gets the attention:
- Win-loss record. It hides close games, blowouts and the schedule.
- Points per game. It mixes up pace and quality.
- Rankings and polls. They react to wins, not to how a team played.
- Against-the-spread records. They measure lines, not teams, and the samples are tiny.
- Winning and losing streaks. Five wins against weak teams are five data points about weak teams.
- Raw margins of victory. A 25-point win means little if the team was expected to win by 22.
My sample size lesson shows how few games it takes for luck to look like a trend.
Where can you get college basketball data for free?
You can start with three sources:
- Bart Torvik's T-Rank (free): adjusted efficiency and tempo for every Division I team.
- Sports Reference's college basketball site (free): box scores and team tables you can export.
- KenPom (paid subscription): adjusted efficiency, tempo and the four factors, and the most common reference point.
Every model I built depends on a stat that lives on one website, and those sites block scraping, so the data step is copy and paste. It sounds simple until the source changes. When Basketball Reference changed its tables, the header row started repeating every 30 rows or so, and every paste broke my NBA sheet. The fix was the site's own "Get table as CSV" export, which comes without the header breaks. The college basketball site comes from the same company and uses the same table layout, so start with the CSV export from day one.
How do you turn the data into a spread and a fair price?
You project each team's points from its adjusted numbers, scale them to the expected number of possessions, and add home court. Here is a full example, with a league average of 105 points per 100 possessions:
| Team A (home) | Team B | |
|---|---|---|
| Adjusted offense | 114 | 107 |
| Adjusted defense | 97 | 103 |
| Tempo | 70 | 66 |
- Expected possessions: 70 × 66 / 68 = 67.9 (68 is the average tempo)
- Team A points: 114 × 103 / 105 × 67.9 / 100 = 76.0
- Team B points: 107 × 97 / 105 × 67.9 / 100 = 67.2
- Margin on a neutral court: 8.8 points
- Plus about 3 points of home court: Team A -11.8
Your projected total is 143.1.
Now say the market has Team A -10.5 at -110 (1.91 decimal). Your number is 1.3 points stronger. Using a common starting value of about 11 points for the standard deviation of a college basketball result against the spread, Team A covers about 54.8% of the time. That is a fair price of -121 American, or 1.83 decimal. The break-even rate at -110 is 52.38%, so the expected value is about +4.6% of your stake.
That is a small edge, and a single wrong input can erase it. If one of Team A's starters is out, or the game is actually on a neutral court, your -11.8 becomes something else. Check the venue and the lineup before you trust the gap. You can change these numbers yourself in the fair odds calculator and the expected value lesson.
How do you know if your model's data is any good?
You know by measuring closing line value, not your win rate. If the lines you bet keep moving toward your number before tip-off, your inputs are telling you something the market learns later. If they keep moving away, look at your data first.
That is how I judged my own NFL model. Measured bet by bet against Pinnacle's closing line, its closing line value came out at +3.81% one season and +4.25% on the 2025/26 snapshot. A number like that tells you a process works long before the win-loss record is clear. The closing line value lesson shows how to calculate it.
If you would rather not run this comparison by hand every night, the AI Betting Assistant applies the same logic for you, faster.
FAQ
What is the most important stat in college basketball betting?
The most important stat is adjusted efficiency margin: points scored minus points allowed per 100 possessions, corrected for the strength of the opponents. It combines offense, defense and schedule in one number, and the gap between two teams' margins is the base of your spread. Raw stats like points per game or win-loss record mix in pace and schedule, which is why they mislead. If you only have time to track one number per team, track this one, and get the opponent adjustment right before you add anything else.
Is KenPom worth paying for if Torvik is free?
KenPom is worth it if you want a second, trusted reference, but you can build a working model with Torvik alone. Both give adjusted offensive and defensive efficiency and tempo, which is everything the spread formula in this article needs. The real value of a second source is as a check. When your rating and theirs disagree by a lot on one team, find out why before you bet, because often it is a data error on your side, like a wrong venue or a missing game.
How many games of data does a college basketball model need?
A college basketball model needs about 10 games of this season's data before those games deserve as much weight as a preseason rating. Before that, three or four results against uneven opponents are mostly noise. That is why early-season models lean on last season's adjusted numbers, adjusted for roster changes, and let the new games take over slowly. The exact cutoff matters less than using one rule consistently and testing it on your own results at the end of the season.
Should I use the four factors in my spread formula?
No, you usually do not need the four factors in the spread formula itself, because efficiency already includes them. Points per 100 possessions is the result of shooting, turnovers, rebounding and free throws together. Use the four factors as a quality check instead. If a team's efficiency comes mostly from hot three-point shooting, expect it to fall back. If it comes from rebounding and protecting the ball, it is more likely to hold. That tells you how much to trust the number, not what the number is.
How do injuries affect a college basketball model?
Injuries affect a college basketball model more than in many sports, because rotations are short and one player can carry a big share of the minutes. A team's efficiency numbers were built with its usual lineup. If a starter who plays 35 minutes a game is out, those numbers overrate the team that takes the floor. There is no clean formula for this in a simple spreadsheet. The practical rule is to check the lineup before every bet, and to skip the game when a key player's status is unclear rather than guess.
Can I use the same model for college basketball and the NBA?
You can use the same structure for both, with different inputs. Both sports run on efficiency per 100 possessions, tempo and home court. College basketball needs a much heavier opponent adjustment, because schedules are so uneven, and its home court value changes more from arena to arena. The NBA needs more attention to rest and back-to-back games. Build the sheet once, then change the inputs and the constants for each sport, and test each version on its own results.
Want a model that does this math for you?
The Ultimate Modern Bettor's Toolkit gives you the spreadsheet that turns your own number into a fair price and compares it with the line.
$27, one payment. It includes the +EV betting model spreadsheet, a 45-minute video training that builds your first model with you, and the four-bucket staking system. 30-day money-back guarantee.
Get the ToolkitIf you want a ready-built model for a specific sport, you can see all of them on the betting models page.
MB built Underdog Chance around one idea: make your own number first, then bet only when the price beats it. Over the last 20+ years his simple, probability-based Google Sheets models have helped thousands of bettors stop following picks and start pricing bets for themselves.
Last updated: November 13, 2026
