Timestral is a family of time series foundation models for zero-shot forecasting, available in 5M, 28M, 123M, and 209M parameter versions. This repository contains the 209M checkpoint.
Timestral supports univariate and multivariate forecasting, past-only and known-future covariates, and probabilistic predictions across 21 quantiles. It accepts up to 32,768 historical time steps and forecasts up to 1,024 steps in a single forward pass.
We’re releasing the source code in our GitHub repository to make it easy to run Timestral and reproduce our benchmark results.
Timestral-209M achieves state-of-the-art zero-shot accuracy across three major forecasting benchmarks: GIFT-Eval, TIME, and 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 |
| CRPS ↓ | 0.446 | 0.452 | 0.456 | 0.476 | 0.485 | |
| TIME | MASE ↓ | 0.626 | 0.637 | 0.640 | 0.642 | 0.662 |
| CRPS ↓ | 0.522 | 0.534 | 0.536 | 0.539 | 0.556 | |
| fev-bench | SQL skill score ↑ | 50.39 | 49.42 | 48.99 | 44.42 | 47.28 |
| MASE skill score ↑ | 39.49 | 37.99 | 37.82 | 32.54 | 35.50 |
| Benchmark | Metric | Timestral-5M | Timestral-28M | Timestral-123M | Timestral-209M |
|---|---|---|---|---|---|
| GIFT-Eval | MASE ↓ | 0.705 | 0.678 | 0.659 | 0.658 |
| CRPS ↓ | 0.479 | 0.461 | 0.448 | 0.446 | |
| TIME | MASE ↓ | 0.652 | 0.638 | 0.628 | 0.626 |
| CRPS ↓ | 0.545 | 0.534 | 0.525 | 0.522 | |
| fev-bench | SQL skill score ↑ | 46.19 | 48.42 | 50.18 | 50.39 |
| MASE skill score ↑ | 34.54 | 37.27 | 39.19 | 39.49 |
The Pareto-front plot below illustrates the trade-off between model size and forecasting performance across the Timestral family.

Set up your environment:
pip install git+https://github.com/mistralai/timestral.git # Python >= 3.10, torch >= 2.4
Or from a clone with uv, using the versions pinned in uv.lock:
git clone https://github.com/mistralai/timestral.git && cd timestral
uv sync --frozen
source .venv/bin/activate
Here is a simple example using synthetic data.
import numpy as np
import torch
from timestral import TimestralForecaster
model = TimestralForecaster.from_pretrained(
"mistralai/Timestral-209M",
device="cuda" if torch.cuda.is_available() else "cpu"
)
# Synthetic example: one series with 1,000 historical observations.
context = np.random.default_rng(42).standard_normal(1000).cumsum()
forecast = model.forecast(context, prediction_length=96)
median = forecast.median
lower, upper = forecast.quantile(0.1), forecast.quantile(0.9)
Check out our GitHub repository for more details!
Models have been released under a Modified MIT license: See here.
You must not use this model in a manner that infringes, misappropriates, or otherwise violates any third party’s rights, including intellectual property rights