Demand planning, server traffic, and equipment sensors often start with a seasonal naive model or ARIMA. The data is small, interpretability matters, and standing up a new model is expensive. Time-series foundation models change that calculation: pretrain on many domains, then forecast a new series without training on it.
Mistral released Timestral on October 15. Its largest model has only 209M parameters, and the company says it ranks first among pretrained, zero-shot models on GIFT-Eval, TIME, and fev-bench. The family comes in four sizes: 5M, 28M, 123M, and 209M, all sharing one architecture.
That is where most summaries stop: a small model beat larger ones. The practical questions are different. Does it beat a seasonal naive baseline on your series? Are its prediction intervals calibrated? Can your CPU meet the latency budget? This article uses the official announcement, model card, and repository to build a protocol for answering those questions.
What was released: inputs and outputs matter more than size
Timestral is a causal, patch-based transformer. The 209M model has 24 layers, an embedding dimension of 768, and 32 time steps per patch. It accepts up to 32,768 historical steps and forecasts up to 1,024 steps in a single forward pass. Longer horizons are generated block by block, with each block's median appended to the context.
The output is not a single point. It is a set of 21 quantiles: 0.01, 0.05, 0.1, and so on through 0.9, 0.95, and 0.99. That gives you an uncertainty band instead of a point estimate, which is useful for alert thresholds and risk-based planning.
Inputs are split into three roles:
- Target variates: what you forecast
- Past-only covariates: known only over the context window
- Known-future covariates: known over both the context and the forecast horizon
Covariates send information to targets, never the other way around. A target's future values are not visible to the model. You can feed a holiday calendar, a weather forecast, or a production schedule, but only values that are genuinely available at forecast time. That is a data-pipeline constraint as much as a model feature.
The licensing is split. The repository code is Apache 2.0. The weights are on Hugging Face under a modified MIT license, with a condition that you must not use them in a way that infringes third-party rights.
How to read the benchmark table
The Mistral blog and the 209M model card report the following numbers. All are zero-shot: no additional training on the evaluation data. Mistral presents the top ten of 83 comparable pretrained and zero-shot entries on GIFT-Eval, the top ten of 35 leaderboard entries on TIME, and the top ten of 37 on fev-bench.
| Benchmark | Metric | Timestral-209M | t0-gamma | TimesFM-3 | Toto-2.0-2.5B | Chronos-2 |
|---|---|---|---|---|---|---|
| GIFT-Eval | MASE ↓ | 0.658 | 0.661 | 0.667 | 0.696 | 0.698 |
| GIFT-Eval | CRPS ↓ | 0.446 | 0.452 | 0.456 | 0.476 | 0.485 |
| TIME | MASE ↓ | 0.626 | 0.637 | 0.640 | 0.642 | 0.662 |
| TIME | CRPS ↓ | 0.522 | 0.534 | 0.536 | 0.539 | 0.556 |
| fev-bench | SQL skill ↑ | 50.39 | 49.42 | 48.99 | 44.42 | 47.28 |
| fev-bench | MASE skill ↑ | 39.49 | 37.99 | 37.82 | 32.54 | 35.50 |
MASE divides mean absolute error by the error of a seasonal naive baseline. A value below 1 beats the baseline; lower is better. CRPS measures probabilistic forecast quality; lower is better. The fev-bench skill scores measure improvement over a baseline; higher is better. For a general guide to reading benchmarks, see How to read an AI benchmark.
One caveat: the Mistral blog labels the GIFT-Eval probabilistic metric as GMean WQL, while the model card lists CRPS. Both evaluate probabilistic forecasts, but they are not the same metric. Do not place the blog chart and the model card table on the same axis without checking. This article cites the model card table.
The four sizes also need to be read together.
| Benchmark | Metric | 5M | 28M | 123M | 209M |
|---|---|---|---|---|---|
| GIFT-Eval | MASE ↓ | 0.705 | 0.678 | 0.659 | 0.658 |
| GIFT-Eval | CRPS ↓ | 0.479 | 0.461 | 0.448 | 0.446 |
| TIME | MASE ↓ | 0.652 | 0.638 | 0.628 | 0.626 |
| TIME | CRPS ↓ | 0.545 | 0.534 | 0.525 | 0.522 |
| fev-bench | SQL skill ↑ | 46.19 | 48.42 | 50.18 | 50.39 |
| fev-bench | MASE skill ↑ | 34.54 | 37.27 | 39.19 | 39.49 |
The table does not say "bigger is always better." The GIFT-Eval MASE gap between 123M and 209M is 0.001, which is effectively indistinguishable. The 28M model is 0.020 worse than 209M on GIFT-Eval MASE, yet Mistral says it beats Chronos-2, which is about four times larger, on GIFT-Eval and TIME. Even the 5M model reaches 46.19 SQL skill on fev-bench.
What "a small model ranks first" actually means
Mistral says the 209M model beats the previous state of the art "with only two-thirds of the model parameters." Check what is being compared. Toto-2.0-2.5B is, by name, a 2.5-billion-parameter-class model. That is more than twelve times the size of 209M. I did not confirm the exact parameter counts of TimesFM-3 and Falcon-2.0 here, but Mistral claims the 209M model beats them with fewer parameters.
Latency is more practical. Mistral says that on a standard server CPU with eight threads, forecasting one day ahead (96 steps) from three weeks of 15-minute history (2,016 steps) takes 10 ms with the 5M model and 140 ms with the 209M model. The 28M model is five times faster than 209M, and the 123M model comes within 0.2% of the 209M score at three quarters of its latency. CPU latency depends on core count, memory bandwidth, and batch size, so treat these as conditional.
The decision rule is straightforward. Is the extra accuracy worth double the latency? If 209M is 0.001 better than 123M but 33% slower, most real-time monitoring systems are better served by 123M or 28M. For offline batch forecasting, the extra cost may not matter.
What the architecture suggests for practitioners
Three design choices are worth borrowing, even if you never run Timestral.
First, Decoupled Horizon Forecasting (DHF). A conventional causal decoder masks the values it is supposed to forecast. Those values then disappear from the context for later predictions. DHF keeps the full history in the sequence and lets separate forecast tokens read the preceding history. Every observed value serves as both target and context, while true gaps stay marked as missing. Training horizon length and missing-data augmentation can be tuned independently.
Second, covariate roles. Known-future covariates are visible across the whole window, while targets remain causal. Information flows only from covariates to targets. This forces the data schema to separate "known in advance" from "unknown in advance." Before adopting the model, check whether your pipeline already makes that distinction.
Third, synthetic-first training. Mistral says most training data was synthetic. It generated univariate processes with trends, seasonality, and varied noise, then used a multivariate synthesizer to inject nonlinear dependencies. It then post-trained on a mix of real and synthetic data with a context four times longer. The loss is a pinball loss over 21 quantiles. Synthetic-first training helps when domain data is scarce, but you still need to verify how well it reflects structural breaks in your data.
A minimal evaluation protocol
A benchmark ranking is not a ranking on your series. At minimum, check the following. This is a protocol based on the public model card and standard forecasting evaluation practice, not a set of results I measured. Benchmark interpretation pitfalls are covered in AI benchmark reward hacking.
- Split train, validation, and test by time. Random splits leak future information.
- Build a seasonal naive baseline. For daily data, use the value from seven days earlier; for hourly data, use the value from 24 hours earlier.
- Compute MASE. The baseline scores 1. The model should be below it.
- For probabilistic forecasts, compute WQL or CRPS and check the empirical coverage of the 80% interval. A value between 0.75 and 0.85 is a reasonable calibration check.
- Measure p50 and p95 latency. A mean alone hides tail behavior.
- Check missing values, mixed frequencies, multivariate alignment, and known-future leakage.
- Record the zero-shot result first, then fine-tune only if needed.
A simple pass/fail table:
| Item | Minimum bar | If it fails |
|---|---|---|
| MASE | Below seasonal naive, ideally by 5% or more | Keep the baseline or evaluate another model |
| 80% interval coverage | 0.75 to 0.85 | Recalibrate quantiles or revisit the model |
| p95 latency | Inside the service SLA | Drop to a smaller size or batch the work |
| Missing data | NaN masks work, no crash | Fix the preprocessing pipeline |
| Covariate leakage | No values unknown at forecast time | Redesign features |
| Reproducibility | Same input gives same output | Pin seed, version, and device |
The official usage example is below. It is quoted from the README and was not executed for this article.
import numpy as np
from timestral import TimestralForecaster
forecaster = TimestralForecaster.from_pretrained("mistralai/Timestral-209M")
context = np.random.randn(2, 1, 2000).cumsum(-1) # (series, variates, time); NaN = missing
forecast = forecaster.forecast(context, prediction_length=96)
forecast.quantiles.shape # (2, 1, 96, 21)
forecast.median # (2, 1, 96)
forecast.quantile(0.9) # (2, 1, 96)
The context accepts (B, V, T), (B, T), or (T,) shapes, and NaN marks missing values. Contexts longer than 32,768 steps are truncated to the most recent steps. Forecasts beyond 1,024 steps run block by block, with each block's median appended to the next context.
Where it fits, and where it does not
Timestral is a good fit when:
- You have many related series, such as sensor telemetry
- Demand or traffic has recurring seasonality and you have both past and known-future covariates
- You need a small model that runs on CPU without a GPU
- Uncertainty intervals matter more than a single point forecast
- Data is scarce and you want a zero-shot baseline before investing in training
Be careful when:
- Series are very short, irregularly sampled, or full of structural breaks
- Future covariates are not actually known at forecast time
- You need a single interpretable equation for regulatory or accounting purposes
- You have to force series with different frequencies into one model
- You need horizons far beyond 1,024 steps and cannot tolerate block-by-block error accumulation
Fine-tuning is available through Mistral Forge, which is a company training pipeline, not the open repository. Mistral says it supports on-premises, VPC, and air-gapped deployment. The weights use a modified MIT license, so check the terms before commercial use. The technical report is not yet public, and the benchmark results have been submitted to leaderboards. Independent verification is still pending.
Conclusion: the ranking is a starting point; your baseline is the test
The real news is not that 209M beat larger models. It is that time-series foundation models are now small enough to run on CPU, handle probabilistic forecasts and covariates by default, and come in four sizes that let you trade accuracy for cost. That lowers the barrier to adopting a forecasting model.
The decision still belongs to your data. Start with 28M, compare it with seasonal naive, and check whether the 80% interval actually contains about 80% of outcomes. Move to 123M or 209M only if the result justifies the extra latency. The benchmark table helps you prioritize that experiment. It does not make the decision for you.
References
- Introducing Timestral (Mistral, Oct 15, 2026)
- Timestral-209M model card (Hugging Face)
- mistralai/timestral (GitHub, Apache 2.0 code)
- GIFT-Eval leaderboard
- TIME leaderboard
- fev-bench leaderboard
Go deeper with a course
Forecasting projects are usually decided by data splits, baselines, interval calibration, and latency measurements rather than by model choice alone. Running a small model yourself and comparing it with a baseline on your own work data builds the judgment to read benchmark tables.