Findings / Life of a forecast
The life of a forecast
A published price reference absorbs information continuously, not all at once. This traces that process twice: how the pre-game line finishes moving before tip, and how in-game accuracy sharpens as the game resolves toward its outcome. The page reports the published line-movement and Brier measurements.
Before tip: when the line stops moving
soccer_intl completes half its pre-game line motion by 2.7h before tip; nba not until 4.8h. tennis, wnba move most of their line >6h before tip.
Move-pair counts are dense samples inside a ~30-day line-history window (2026-06-18 to 2026-07-17), not a season.
| Sport | Half-life (h) | Frac. by 6h | by 3h | by 1h | Final-hour share | Move-pairs |
|---|---|---|---|---|---|---|
| Soccer (Intl) | 2.75 | 0.3212 | 0.4656 | 0.7365 | 0.261 | 164,072 |
| MLB | 3.67 | 0.3356 | 0.5474 | 0.8143 | 0.1813 | 1,307,128 |
| NBA | 4.76 | 0.4305 | 0.5982 | 0.6794 | 0.3247 | 182,054 |
| Tennis | >6.0 | 0.5426 | 0.7314 | 0.8902 | 0.107 | 809,986 |
| WNBA | >6.0 | 0.6441 | 0.7653 | 0.8827 | 0.1176 | 333,540 |
Scroll horizontally for all columns.
Fractions are cumulative share of total absolute line motion completed by that many hours before tip (0..1, not a percent).
During the game: when the forecast sharpens
The honest headline: the market's Brier score falls steadily as each game resolves, and stays BELOW the model's the whole way -- market_minus_model_brier is negative at every checkpoint shown here. The market is ahead of us throughout the game, not just at the opening line. See reliability for the same story pregame.
MLB
| Checkpoint | n | Market Brier | Model Brier | Naive Brier | Market - Model |
|---|---|---|---|---|---|
| 1 | 3,589 | 0.2382 | 0.2502 | 0.2464 | -0.0121 |
| 2 | 2,803 | 0.2023 | 0.2377 | 0.22 | -0.0353 |
| 3 | 3,097 | 0.1778 | 0.1998 | 0.192 | -0.0221 |
| 4 | 3,034 | 0.1719 | 0.1958 | 0.1788 | -0.0239 |
| 5 | 3,139 | 0.1288 | 0.1408 | 0.1459 | -0.012 |
| 6 | 3,579 | 0.1179 | 0.1298 | 0.1388 | -0.0119 |
| 7 | 3,447 | 0.101 | 0.1124 | 0.134 | -0.0114 |
| 8 | 2,833 | 0.0778 | 0.0829 | 0.129 | -0.0051 |
| 9 | 1,110 | 0.061 | 0.062 | 0.137 | -0.001 |
| 10 | 46 | 0.1607 | 0.2392 | 0.225 | -0.0785 |
| 11 | 6 | 0.1095 | 0.2273 | 0.25 | -0.1179 |
Scroll horizontally for all columns.
Soccer (Intl)
| Checkpoint | n | Market Brier | Model Brier | Naive Brier | Market - Model |
|---|---|---|---|---|---|
| 0 | 150 | 0.1177 | 0.2448 | 0.23 | -0.1271 |
| 5 | 213 | 0.1278 | 0.2758 | 0.2399 | -0.148 |
| 10 | 203 | 0.1227 | 0.276 | 0.2354 | -0.1533 |
| 15 | 208 | 0.127 | 0.2758 | 0.2269 | -0.1488 |
| 20 | 192 | 0.1359 | 0.269 | 0.2247 | -0.1331 |
| 25 | 195 | 0.1585 | 0.2918 | 0.2295 | -0.1333 |
| 30 | 192 | 0.1608 | 0.3032 | 0.2256 | -0.1424 |
| 35 | 173 | 0.1673 | 0.2939 | 0.2267 | -0.1266 |
| 40 | 189 | 0.1709 | 0.3123 | 0.2228 | -0.1414 |
| 45 | 402 | 0.1512 | 0.2835 | 0.2185 | -0.1323 |
| 50 | 189 | 0.2128 | 0.3371 | 0.2084 | -0.1243 |
| 55 | 192 | 0.2326 | 0.3361 | 0.2189 | -0.1036 |
| 60 | 189 | 0.2235 | 0.329 | 0.2124 | -0.1055 |
| 65 | 154 | 0.2625 | 0.3888 | 0.2253 | -0.1263 |
| 70 | 152 | 0.3042 | 0.4427 | 0.224 | -0.1384 |
| 75 | 132 | 0.2411 | 0.4011 | 0.2062 | -0.1601 |
| 80 | 127 | 0.2407 | 0.4122 | 0.1906 | -0.1715 |
| 85 | 98 | 0.264 | 0.4452 | 0.1748 | -0.1811 |
| 90 | 33 | 0.2209 | 0.3258 | 0.1778 | -0.1048 |
Scroll horizontally for all columns.
Confounds / notes
- bucket_move sums ABSOLUTE per-tick moves -> this is churn/activity, not net price travel; back-and-forth noise and correlated consensus books inflate it.
- Only 4 coarse horizon buckets, so the 0.50 crossing is linearly interpolated.
- soccer EXCLUDED: all mass in the 6h+ bucket with mean_abs_move 0.0 (timestamp-coverage artifact).
- nba is bimodal (early motion + a real 0-1h spike, final_hour_share 0.3247) which a single half-life hides -- read alongside the final_hour_movement_share column.
- Sports whose crossing falls inside the open-ended 6h+ bucket cannot be pinned (reported as '>6h', half_life_hours=null).
- Measured over the short observation_window of the scraped line-history feed (see observation_window); the large n_move_pairs are dense snapshots inside that window, NOT a season or multi-season history.
- In-game checkpoints are per-inning (MLB) or per-5-minute-bucket (soccer) Brier on modest n in the late buckets -- e.g. MLB checkpoint 11 has n=18 -- so late-game values above are noisy, not a smooth trend.
- All results are descriptive Brier and line-movement measurements from the stated windows.
The product measures calibration against the close. The Brier checkpoints show the model and reference values on the same published corpus.