calibrated SPORTS
ResearchCalibration

Research

Findings, with
the script attached.

Every question we wrote down before testing it, the verdict it came back with, and the committed script that produces it. The ones that found nothing are published with the rest.

How far our forecasts miss, minus how far the market's do (Brier score) · above zero, ours miss by more

+0.0142

The bar is the range the true figure plausibly sits in, given how much luck could move it (interval).

The interval excludes zero, only just: its low end is +0.0007.

95% interval 0.0007 to 0.0263.

Do our stated chances match what happened (calibration)

925 predictions over 14 games, scored against what happened in 20 bins, with the counts shown.

Our forecasts' average squared miss (Brier score)
0.1845
against the market’s 0.1703, lower is better
Average gap between our stated chance and how often it came true (calibration error)
0.0658
against the market’s 0.0502, lower is better
Predictions graded, each once its result was official
925
Games those predictions came from
14

A score that punishes a confident miss hardest (log loss), whether our chances run too bold or too timid (calibration slope), and the week by week record: coming once the file this tab reads carries them.

Calibration, model against market

On the same predictions the Studies tab scores, our calibration error is 0.0658 and the exchange’s is 0.0502, lower is closer. The exchange’s chance is the price halfway between its best offer to buy and its best offer to sell (exchange mid).

How this is computed

How far a stated chance sits from the rate that followed it, averaged over every band of chances (expected calibration error). Lower is closer.

Model and market calibration

Average squared miss (Brier score) on this set, lower is better: model 0.1845, market 0.1703, and a forecast that repeats each player's rate from the season before (naive) 0.1833.

Stated chance against how often it happened (reliability curve), model and market

research/score.py (brief 021) · generated Tue, Oct 13, 9:27 AM ET

NFL week 1 2026, KXNFLREC + KXNFLRSHATT, common set n=925, 14 games. All three scores and both intervals are computed on this one set of 925 predictions.

0.00.00.20.20.40.40.60.60.80.81.01.0FORECAST
model (ECE 0.0658)market (ECE 0.0502) identityhollow = n < 30, not a data point
Each bar is a 95% range for a rate that stays sensible near 0% and 100% (Wilson interval). Brier: model 0.1845, market 0.1703, naive 0.1833; model − market +0.0142 [0.0007, 0.0263]. Source: research/score.py (brief 021).
SeriesBinnForecastRealizedWilson 95%
model0.0–0.12350.0490.102[0.070, 0.147]
model0.1–0.21420.1470.232[0.171, 0.308]
model0.2–0.31340.2500.269[0.201, 0.349]
model0.3–0.4950.3510.474[0.376, 0.573]
model0.4–0.5830.4460.530[0.424, 0.634]
model0.5–0.6800.5470.512[0.405, 0.619]
model0.6–0.7630.6470.619[0.496, 0.729]
model0.7–0.8390.7490.590[0.434, 0.729]
model0.8–0.9430.8330.907[0.784, 0.963]
model0.9–1.0110.9240.818[0.523, 0.949]not a data point
market0.0–0.12890.0430.073[0.048, 0.108]
market0.1–0.21140.1480.219[0.153, 0.304]
market0.2–0.3890.2370.281[0.198, 0.382]
market0.3–0.4710.3500.479[0.367, 0.593]
market0.4–0.51330.4540.556[0.472, 0.638]
market0.5–0.6850.5500.553[0.447, 0.654]
market0.6–0.7580.6390.638[0.509, 0.750]
market0.7–0.8500.7460.760[0.626, 0.857]
market0.8–0.9360.8360.889[0.747, 0.956]
market0.9–1.00———not a data point
How this is computed

Measured, not asserted. Every range is one that stays sensible near 0% and 100%, taken at 95% (Wilson interval), and a bin under 30 observations is drawn hollow and marked in its row rather than read as a rate.