Every foundational time-series model needs a sidecar, for now
Want to race foundational time-series models? Go for it, but add the Laplace sidecar.
Scored on a fair reconstruction of their quantiles, the strongest of them are level with a small online ensemble on economic change-series at the median. Of the four sandwiches, the portfolio is the one that makes any of them safe to run; the two wraps that repaired the tight reconstruction cost accuracy on a fair base (the section on the fair bases below).
Two generations The sections through "Why this shape" report the arms built on the tight nine-decile reconstruction, where cell counts differ between arms. The fair-base section reports the same four arms on the native-level and generous bases, with every arm paired to its standalone run.
The setup
Five foundation models (TimesFM 2.5, TiRex, Chronos, Sundial, FlowState) are run zero-shot on the
one-step change series: a fixed 128-length context window, predict the next change, no fitting,
each model in its own environment. Every predictive is turned into the same Dist
object and scored against laplace on the identical series and windows. The corpus is
the cached FRED universe (about 9,500 series) split into strata by frequency and regime
(daily / weekly / monthly economic, daily price, and the M4-hourly seasonal set). Wins, draws and
losses are decided per series by a Diebold–Mariano test on the log-score differential with a
HAC long-run variance and an explicit draw band. Everything derives from one canonical per-step
store, so log-likelihood, CRPS, coverage and the draw counts all read from the same source.
Three versions of each model are compared against Laplace:
- raw: the model's own predictive, as shipped.
- @lap: Laplace forecasting the model's normal scores. Map each observation to
its normal score under the model,
z = Φ⁻¹(F(y)), let Laplace forecast that z-series online, then invert. The model's full shape is kept, and Laplace supplies the location and scale of the z-series step by step, which fixes coverage and also tracks error dynamics the model missed. That is more than a recalibration map, so this arm flatters the model. - &lap: a distribution-level, long-only online portfolio of Laplace and the
model's
@lapwrap, weighted by realised score and started tilted toward Laplace, the trusted incumbent.
The apparent symptom: over-confidence
A calibrated 90% interval should contain the outcome 90% of the time. Scored through the tight
nine-decile reconstruction of their quantiles, the raw models cover far less. Most of the
shortfall belongs to the reconstruction. Fed the exact deciles of a calibrated normal, it
covers 0.81, and the same forecasts through the generous reconstruction cover 0.82 to 0.90 on
this stratum, against Laplace's 0.892. The @lap wrap, built on the tight base,
pulls each model to nominal either way. (Seasonal stratum, M4-hourly.)
| model | raw, tight reconstruction | raw, generous reconstruction | @lap (tight base) |
|---|
Bars span 0.60–1.00; the orange line marks the 0.90 target. Laplace covers 0.892 on this stratum. Central-90% coverage of the reconstructed density in every column; a perfectly calibrated model reads 0.81 under the tight reconstruction and 0.88 under the generous one.
What the gap is
An earlier version of this page read the log-likelihood gap as a forecasting deficit. Most
of it is the reconstruction. Under the tight reconstruction the raw gap on this stratum is
half a nat to nearly a nat. The same forecasts under the generous reconstruction sit within
0.05 nats of Laplace at the median. The @lap wrap on the tight base recovers only
a sliver of the tight gap, because it recalibrates the reconstruction's probability integral
transform: that fixes coverage and leaves the shape of the density alone. The recovered
column therefore measures what a marginal recalibration buys. A sidecar built on the
generous reconstruction has not been scored.
| model | raw gap, tight | raw gap, generous | after @lap (tight base) | recovered by @lap | share of tight gap |
|---|
Median per-series Δ log-likelihood versus Laplace, in nats (negative means worse than Laplace), M4-hourly. Under the generous reconstruction no model's median is more than 0.05 nats from Laplace here, and on weekly and monthly series TimesFM and TiRex are level or ahead. Each model's page has the full table.
The coverage-score
plane at conformalprediction.net makes the geometry explicit: a remap slides a model
sideways toward nominal coverage, and only a better conditional model climbs. The
@lap arms slide far and climb little (the small lift is Laplace's z-forecasting);
the vertical distance that remains is the information gap.
@lap: a long slide toward nominal coverage, a short climb in
score. Under the generous reconstruction the raw points instead sit at coverage 0.82 to 0.90
and within 0.05 nats of zero, next to Laplace's own point.
The fix: turn losses into draws
Hold Laplace and the @lap wrap together and weight them online by how well each has
actually been scoring, with Laplace favoured at the start. Where the model adds nothing the blend
collapses to Laplace; where it genuinely helps, the seasonal case, the weight tilts across. The
raw models lose to Laplace on roughly half the seasonal series; the portfolio loses almost none
and beats Laplace outright on one series in eight.
Does it hold everywhere?
Mostly. The portfolio's loss rate against Laplace is near zero on the seasonal stratum, in
single digits on prices and monthly, 14% on weekly, and 32% on daily economic. Outside
daily:econ the losing margins are a few hundredths of a nat.
| stratum | portfolio loss rate vs Laplace |
|---|
The holdout stratum
On daily:econ the portfolio still loses to Laplace on about a third of the series
(48% early in the run, 32% now across 1,264 series), though by small margins (median −0.08
nats). Laplace dominates that stratum so thoroughly that even
a light tilt toward the model costs a little. The fix under test is a stronger incumbent prior, so
the model has to earn more evidence before it moves the blend; more data will show whether that
closes the gap or whether the drag is structural. A claim of "never worse" cannot ship with a
stratum losing a third of its series, so the run keeps churning.
Why this shape
Laplace combines its own candidate forecasters by their means and lets a terminal leaf supply the calibrated scale and tails. A foundation model dropped straight into that trunk would lose its shape, since only its mean would survive. So the model's full distribution has to be combined one level up, at the distribution level, which is what the portfolio does. The normal-score step matters because a raw, over-confident model makes a poor portfolio member: its tail misses drag the blend. Wrapped first, it contributes cleanly.
The reusable form is a streaming sidecar: any third-party model that can emit a per-step predictive can be wrapped and portfolioed against Laplace. Never-worse is the design target; three of five strata sit at or under a 7% loss rate, with weekly at 14% and daily economic the holdout. The model runs wherever it likes and streams its forecasts; the sidecar stays a few lines of pure Laplace.
On the fair bases
The arms above were built on the tight reconstruction, and part of what they repaired was the
reconstruction. The same four sandwiches have now been run on the fair bases: Timestral-209M and
t0-gamma on their native 21 levels, and TimesFM 3.0, TimesFM 2.5, TiRex and Chronos through the
generous reconstruction, plus the PyMC-forecast challenger (a Student-t regression on lagged
changes, fit by ADVI) on the monthly stratum. Each arm is paired with its standalone run on
identical series and windows; ~lap and @lap need a longer warm-up
window, so their series counts are smaller. Median per-series Δ log-likelihood against
Laplace, in nats, positive meaning better than Laplace, with the number of series:
| stratum | base | standalone | +lap | ~lap | @lap | &lap |
|---|---|---|---|---|---|---|
| economic change-series, weekly | Timestral | +0.044 (3,013) | +0.019 (3,013) | -0.283 (3,011) | +0.005 (3,011) | +0.028 (3,011) |
| economic change-series, weekly | t0-gamma | -0.012 (3,013) | -0.044 (3,013) | -0.358 (3,011) | -0.031 (3,011) | +0.021 (3,011) |
| economic change-series, weekly | TimesFM3 | +0.001 (3,013) | -0.136 (3,013) | -0.263 (3,011) | -0.096 (3,011) | -0.007 (3,011) |
| economic change-series, weekly | TimesFM | -0.030 (2,920) | -0.244 (2,920) | -0.343 (2,918) | -0.124 (2,918) | -0.014 (2,918) |
| economic change-series, weekly | TiRex | -0.143 (2,920) | -0.239 (2,920) | -0.343 (2,918) | -0.114 (2,918) | -0.020 (2,918) |
| economic change-series, weekly | Chronos | -0.218 (2,930) | -0.302 (2,930) | -0.349 (2,928) | -0.094 (2,928) | -0.018 (2,928) |
| economic change-series, monthly (annual cycle) | Timestral | +0.105 (5,576) | +0.047 (5,576) | -0.214 (5,195) | +0.057 (5,195) | +0.031 (5,195) |
| economic change-series, monthly (annual cycle) | t0-gamma | +0.061 (5,576) | +0.029 (5,576) | -0.274 (5,195) | +0.020 (5,195) | +0.016 (5,195) |
| economic change-series, monthly (annual cycle) | TimesFM3 | +0.046 (5,576) | -0.057 (5,576) | -0.246 (5,195) | -0.002 (5,195) | +0.003 (5,195) |
| economic change-series, monthly (annual cycle) | TimesFM | -0.011 (2,920) | -0.103 (2,920) | -0.235 (2,700) | -0.055 (2,700) | -0.011 (2,700) |
| economic change-series, monthly (annual cycle) | TiRex | -0.001 (2,920) | -0.097 (2,920) | -0.263 (2,700) | -0.048 (2,700) | -0.008 (2,700) |
| economic change-series, monthly (annual cycle) | Chronos | -0.069 (2,930) | -0.121 (2,930) | -0.292 (2,710) | -0.069 (2,710) | -0.016 (2,710) |
| economic change-series, monthly (annual cycle) | PyMC-forecast | -0.067 (471) | -0.067 (471) | -0.356 (354) | -0.101 (354) | -0.016 (354) |
With no reconstruction defect to repair, the wraps mostly cost accuracy. Replacing the model's
scale with Laplace's residual scale (~lap) lowers the median in 19 of 19
economic cells, by -0.35 (t0-gamma, weekly) to
-0.12 nats (Chronos, daily econ). Forecasting the model's normal
scores (@lap) lowers it in 17 of 19, from -0.14
(TimesFM, daily econ) to +0.12
(Chronos, weekly): it still helps the weakest base and costs the
strongest. The standalone fair bases cover 0.82 to 0.91 at the 90% level;
@lap pushes that to 0.93 to 0.96, past the target, and
&lap sits at 0.91 to 0.94. Loss rate against Laplace,
standalone → &lap:
| stratum | Timestral | t0-gamma | TimesFM3 | TimesFM | TiRex | Chronos | PyMC-forecast |
|---|---|---|---|---|---|---|---|
| economic change-series, business-daily | 27% → 31% | 33% → 32% | 28% → 32% | 32% → 31% | 35% → 31% | 44% → 31% | – |
| economic change-series, weekly | 24% → 15% | 29% → 15% | 21% → 16% | 24% → 15% | 31% → 16% | 38% → 16% | – |
| economic change-series, monthly (annual cycle) | 7% → 5% | 10% → 5% | 11% → 5% | 15% → 6% | 12% → 6% | 19% → 6% | 23% → 7% |
| M4 hourly, strongly seasonal | 10% → 0% | 27% → 0% | 31% → 0% | 25% → 0% | 22% → 0% | 30% → 0% | – |
| asset prices and returns, daily | 4% → 4% | 1% → 5% | 3% → 5% | 5% → 6% | 5% → 6% | 13% → 6% | – |
The portfolio lowers the loss rate in 24 of 31 base-stratum cells; the exceptions are Timestral on daily econ; TimesFM3 on daily econ; Timestral on price; t0-gamma on price; TimesFM3 on price; TimesFM on price; TiRex on price. Its median moves by -0.07 (Timestral, monthly) to +0.20 nats (Chronos, weekly) against the standalone base: a strong base gives up part of its lead for the lower loss rate, a weak base is pulled most of the way back to Laplace. The reading for the strongest base is on Timestral's page: no sandwich improves it at the median, and the portfolio is the safe way to run it. Each model's page carries the full per-stratum table with loss rates and coverage.
The reverse sandwich was also run: laplace as the base, with the PyMC regression forecasting laplace's own normal scores and its posterior mixture inverted through laplace's predictive. An earlier version of the home-page figure showed this construction edging laplace, from a July study with a frozen pre-test fit and a typed speed table. Through the canonical protocol, paired against laplace on the first 500 series of each economic stratum, the median is below zero on every stratum: daily econ -0.052 (61W/248D/191L of 500); weekly -0.012 (83W/355D/61L of 499); monthly -0.015 (81W/321D/69L of 471). That claim is withdrawn.
Open items
- The
daily:econdrag, above. Prior strength versus a structural cause. - Convergence: cell counts are still growing, especially for the slower portfolio arms.