The Lab
Every trading day at 9:25 ET the Lab forecasts where SPY will be at 10:00, noon, 2:00 and the close, then learns from what actually happened. The bar it has to clear is the simplest honest forecast: the latest pre-market price holds.
Skill at the close +1.6% ± 1.1% · promising, not proven
Edge hit rate 63% direction beyond the latest price, 60 leaned days
Range coverage 71% target 68%
Days learned 130 first 15 are warmup and not counted
Call
Thu, May 28, 2026 Graded 1 input missingClose target $750.21, range $746.42 to $754.02, 48% chance of closing above the prior close ($750.46). Closed at $754.60.
This call was made without everything it normally sees. Each one was read as an average day (no signal), so the call leaned on the rest:
- Put skew missing
| Checkpoint | P(up) | Target | Range | Actual | In range | vs naive |
|---|---|---|---|---|---|---|
| 10:00 | 44% | $750.07 | $747.70 – $752.44 | $749.62 | Yes | Beat (0.215 vs 0.244) |
| Noon | 46% | $750.08 | $747.03 – $753.14 | $753.25 | No | Lost (0.500 vs 0.499) |
| 2:00 | 46% | $750.09 | $746.43 – $753.77 | $754.31 | No | Lost (0.568 vs 0.559) |
| Close | 48% | $750.21 | $746.42 – $754.02 | $754.60 | No | Beat (0.509 vs 0.521) |
pushes downpushes up
- Baseline lean
- VIX futures (VIXY) yesterday
- Short vs long realized vol
- Put/call ratio (log)
- SPY last 5 days
- Room to call wall vs put wall
- Long bonds (TLT) yesterday
Track record
-10.0%-5.0%+0.0%+5.0%+10.0%
naive+1.6%
May 22Jul 17Sep 8Oct 29
40%60%80%100%
68% target75%
May 22Jul 17Sep 8Oct 29
- Kalman: everything, slow memory 13%
- Gaps keep going 12%
- Kalman: options positioning 11%
- Analog days (10 nearest) 11%
- Yesterday's move reverses 9%
- Everyone else 44%
0%50%100%
Apr 27Jun 29Aug 28Oct 29
0%50%100%
23
16
15
19
42
0%25%50%75%100%
Leaderboard
Average CRPS at the close in sigma units (lower is better), and each expert's edge over "latest price holds". Weight is how much the ensemble listens to it today.
| Expert | CRPS | vs naive | Weight | Verdict |
|---|---|---|---|---|
| Kalman: everything, slow memory | 0.4689 | +0.0063 ± 0.0096 | 13.2% | ~957 more days to confirm |
| Gaps keep going | 0.4700 | +0.0052 ± 0.0074 | 11.6% | ~824 more days to confirm |
| Kalman: options positioning | 0.4711 | +0.0040 ± 0.0077 | 11.3% | ~1537 more days to confirm |
| Yesterday's move reverses | 0.4742 | +0.0010 ± 0.0043 | 9.3% | ~9207 more days to confirm |
| Latest price holds (random walk) | 0.4752 | — | 9.2% | the benchmark |
| Analog days (10 nearest) | 0.4753 | -0.0001 ± 0.0079 | 10.6% | no edge so far |
| Kalman: price action | 0.4769 | -0.0017 ± 0.0093 | 7.0% | no edge so far |
| Kalman: Jev text reads | 0.4782 | -0.0031 ± 0.0035 | 7.6% | no edge so far |
| Dealer hedging drift | 0.4807 | -0.0055 ± 0.0046 | 6.6% | no edge so far |
| Yesterday's direction continues | 0.4830 | -0.0079 ± 0.0045 | 6.3% | no edge so far |
| Kalman: everything, fast memory | 0.4871 | -0.0119 ± 0.0147 | 3.5% | no edge so far |
| Gaps fade | 0.4962 | -0.0210 ± 0.0078 | 3.7% | no edge so far |
By checkpoint
| Checkpoint | Skill | From range | From edge | Coverage | Edge hit rate |
|---|---|---|---|---|---|
| 10:00 | +10.4% ± 1.8% | +2.4% | +8.1% | 74% | 76% (71) |
| 12:00 | +1.6% ± 1.0% | +0.8% | +0.8% | 70% | 66% (38) |
| 14:00 | +2.1% ± 0.9% | +1.9% | +0.2% | 71% | 52% (31) |
| Close | +1.6% ± 1.1% | +0.8% | +0.7% | 71% | 63% (60) |
How it learns
- Senses. Options positioning from the 9:25 snapshot, yesterday's moves in stocks, bonds, credit, the dollar and VIX, and Jev's reads of the morning headlines and WSB.
- Experts. Simple fixed hypotheses ("gaps fade"), Kalman filters whose weights drift slowly with the market, and an analog expert that asks what happened on the most similar past days.
- Ensemble. Experts earn weight by forecasting better (Hedge), and every expert keeps a small share so one that fell out of favor can come back when the market changes.
- Range. The range widens after a close lands outside it and narrows after one lands inside, so over time about 68% of closes fall inside it.