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.
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 ETNFL 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.
| Series | Bin | n | Forecast | Realized | Wilson 95% | |
|---|---|---|---|---|---|---|
| model | 0.0–0.1 | 235 | 0.049 | 0.102 | [0.070, 0.147] | |
| model | 0.1–0.2 | 142 | 0.147 | 0.232 | [0.171, 0.308] | |
| model | 0.2–0.3 | 134 | 0.250 | 0.269 | [0.201, 0.349] | |
| model | 0.3–0.4 | 95 | 0.351 | 0.474 | [0.376, 0.573] | |
| model | 0.4–0.5 | 83 | 0.446 | 0.530 | [0.424, 0.634] | |
| model | 0.5–0.6 | 80 | 0.547 | 0.512 | [0.405, 0.619] | |
| model | 0.6–0.7 | 63 | 0.647 | 0.619 | [0.496, 0.729] | |
| model | 0.7–0.8 | 39 | 0.749 | 0.590 | [0.434, 0.729] | |
| model | 0.8–0.9 | 43 | 0.833 | 0.907 | [0.784, 0.963] | |
| model | 0.9–1.0 | 11 | 0.924 | 0.818 | [0.523, 0.949] | not a data point |
| market | 0.0–0.1 | 289 | 0.043 | 0.073 | [0.048, 0.108] | |
| market | 0.1–0.2 | 114 | 0.148 | 0.219 | [0.153, 0.304] | |
| market | 0.2–0.3 | 89 | 0.237 | 0.281 | [0.198, 0.382] | |
| market | 0.3–0.4 | 71 | 0.350 | 0.479 | [0.367, 0.593] | |
| market | 0.4–0.5 | 133 | 0.454 | 0.556 | [0.472, 0.638] | |
| market | 0.5–0.6 | 85 | 0.550 | 0.553 | [0.447, 0.654] | |
| market | 0.6–0.7 | 58 | 0.639 | 0.638 | [0.509, 0.750] | |
| market | 0.7–0.8 | 50 | 0.746 | 0.760 | [0.626, 0.857] | |
| market | 0.8–0.9 | 36 | 0.836 | 0.889 | [0.747, 0.956] | |
| market | 0.9–1.0 | 0 | — | — | — | 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.