← Notebook

Model Development · Kept

Removed betting lines from the forecast

The model used to lean toward the Vegas spread and total. It now stands on its own, so it can be compared with the market honestly.

What it used to do

Earlier versions used the betting market in several places. They blended the predicted total toward the Vegas total, set a floor on the margin from the spread, used the spread to break close calls, and scored “reliability” by agreement with the line.

Each of those made the forecasts look better, because the market is a very good forecaster. They also made the model partly a copy of the market. That leaves two problems:

  1. It is circular. A model that moves toward the line cannot then be measured against the line. Any agreement is built in.
  2. It hides what the model knows. If the forecast is 70% market, you cannot tell whether the other 30% adds anything.

The change

All of those paths sit behind one switch, and the switch is off:

model/predict.pylines 17–23
# Vegas lines are NOT used to make predictions: the model is independent of the
# market so it can be compared against it. Lines are still loaded and stored
# (vegas_spread / vegas_total, spread_edge, total_edge) for grading, and the key
# factors still say where the model disagrees with the market. Setting this to
# True restores the old market pulls (total blend, margin floor, tiebreak weight,
# reliability scoring, 'market' margin candidate).
USE_MARKET_IN_PREDICTION = False

Lines are still loaded and stored with each forecast, but only so it can be graded against the market afterwards. None of the 21 model inputs comes from a sportsbook.

How the independent model compares so far

On the 41 games with a stored closing line (2026-04-22 to 2026-11-08):

ModelMarket
Margin error (mean absolute)10.7310.38
Total error (mean absolute)13.7612.02

The two picked the same favorite in 37 of 41 games. The market is still more accurate, which is expected: it sees everything the model sees and more. Now that the comparison is fair, closing that gap is a goal that can actually be measured. It is far too small a sample to draw conclusions from yet.

Decision

Kept. Market lines are an external benchmark only.