NFL 2025 Season – Zoltar Tries to Predict Total Points Scored in a Game Using Kernel Ridge Regression

Bottom line: To predict the total number of points scored in an NFL professional football game, I attempted to improve prediction accuracy compared to a simple linear regression model by using powerful kernel ridge regression. KRR did not do better than linear regression. But I’m not giving up.

Zoltar is my NFL football prediction system. Zoltar uses a combination of classical statistics, a neural network, and a form of reinforcement learning.

My basic Zoltar predicts game results against Las Vegas point spread data. For example, if the Broncos are playing the Jets, the Vegas line might be “Broncos -6.5” meaning the Broncos must win by more than 6.5 points. Zoltar will predict which team will win and by how many points, such as “Broncos will win by 2 points”. This would result in a recommendation to bet on the underdog Jets.

I decided to modify Zoltar to predict the total number of points that will be scored in a game. This can be used to place over-under bets. For example, in the hypothetical Broncos vs. Jets game, the Vegas over-under line might be 42.5 points. You can bet that the total number of points scored by both teams will either be over 42.5 points or under 42.5 points. The .5 prevents ties.

I used Zoltar to create a data file that looks like:

# TotalPointsData2024.txt
# week, visitorID, visitorRating, homeID, homeRating, totalPts
#
1 24 ravens 2105 8 chiefs 2058 47
1 19 packers 2011 12 eagles 2058 63
1 28 steelers 2035 13 falcons 1964 28
1 6 cardinals 1894 2 bills 2058 62
. . .
18 11 dolphins 2025 17 jets 1874 52
18 31 vikings 2140 18 lions 2200 40

Each line represents one of the 272 games played during the 18 weeks of the 2024 regular season. The eight values on each line are week number, visitor team ID, visitor team name, visitor team rating according to Zoltar, home team ID, home team name, home team rating according to Zoltar, total points scored in the game. The predictor values are visitor team rating and home team rating. The other fields are for debugging.

I realized that I needed to normalize the team rating predictor values by dividing by 10,000, and normalize the predicted total number of points scored by dividing by 100.

For my first attempt last week, I used basic linear regression to establish baseline results. The key output of the preliminary linear regression exploration was:

Evaluating model
Accuracy train (within 0.15) = 0.4301
Train RMSE = 0.1308

A prediction is scored as correct if it’s within 15% of the true target number of points scored.

The average total points scored by both teams in a game during the 272 regular season games of the 2024 season is 45.82 points. If you simply predict 45.82 points for each game, the root mean squared error of that naive model is 0.1309 points. The linear regression model RMSE of 0.1308 points is essentially the same — it just predicts the average number of points scored.

So, my next step was to try the more powerful kernel ridge regression technique. After a couple hours of work, I got a system up and running. The output:

Begin NFL 2024 Total Points prediction using KRR
 (Cholesky) regression

Loading data into memory
Normalizing predictor and target values

First three train X:
   0.2105   0.2058
   0.2011   0.2058
   0.2035   0.1964

First three train y:
0.47
0.63
0.28

Setting RBF gamma = 2.0
Setting alpha noise =  0.100

Create and train KRR model using Cholesky
Done

Analysis of model weights:
Smallest value = -3.6096
Largest value = 4.2073
Average magnitude = 1.0041

Computing model accuracy
Train acc (within 0.15) = 0.4412

Train RMSE = 0.1302

Predicting for x = 0.2105   0.2058
Predicted y = 0.4671

The KRR algorithm requires a “kernel function”. I used the radial basis function (RBF), the most common (I used the gamma version of RBF). The RBF kernel function requires values for gamma and alpha parameters, that must be determined by trial and error. There are several ways to train a KRR model; I used matrix inverse with the Cholesky algorithm.

Darn. The accuracy of the sophisticated KRR model (44.12% accuracy = 120 out of 272 correct) and error (RMSE = 0.1302) were essentially the same as the simple linear regression model (43.01% accuracy = 117 out of 272 correct) and error (RMSE = 0.1308). And when I looked at the predictions, they’re all between 44 and 46 points — just predicting the average. In short, failure.

Interesting results. Next week, I need to try the most powerful regression technique, neural network regression. I’m beginning to suspect that using just team ratings does not supply enough “signal” for accurate prediction of total points scored.



Las Vegas clearly sees sports betting as an important part of the future. It’s already a multi-billion dollar industry and it will soon reach multi-trillion dollar levels (actually, it may be there already).

Left: My prediction system is named after the Zoltar fortune teller machine you can find in arcades.

Center: This is the sports book (betting room) at Caesars Palace. I’ve been there many times and the excitement is incredible.

Right: This is the showroom of the old “New Frontier” hotel and casino. The property was the “Last Frontier” from 1942-1955, the “New Frontier” from 1955-1967, and “The Frontier” from 1967-2007. The “Trump International” hotel is now on the site. In the photo, I love the mid-century modern atom age clock on the wall. I visited the “New Frontier” with my parents in 1968, and “The Frontier” many times during my blackjack card counting days.


This entry was posted in Zoltar. Bookmark the permalink.

Leave a Reply