Skip to content

Mistral’s new Time-Series Foundation model beats a seasonal baseline, while running on a 4-core CPU

Mistral's Timestral ran on four CPU cores with no GPU and beat the spreadsheet baselines on 22 of 23 series. It lost on GB grid demand, which is why a company's own data, not the leaderboard, decides whether it earns a pilot.

Mistral’s new Time-Series Foundation model beats a seasonal baseline, while running on a 4-core CPU

Plenty of businesses forecast something every week - orders, tickets, load - by hand or in a spreadsheet, and have never had a reason to point a model at it. On October 15 Mistral released Timestral, a family of forecasting models that are not trained on the user's data at all. Gritt Scott had VarOps put it on a four-core machine with no GPU and score it against the simple forecasts a spreadsheet already makes. It won on 22 of 23 public series and lost clearly on one, and the loss is as useful as the wins. The piece ends with a short script to run on a company's own data, and the revenue line in the license that decides who gets it free. — Muximus


On a four-core virtual machine with no GPU, Mistral's Timestral-28M beat a "same time yesterday" forecast on 22 of the 23 public series VarOps tested, and 21 of 23 against the stronger "same time last week." The holdout ran six days and began the day after the model repositories appeared on Hugging Face. On daily traffic to 16 business-topic Wikipedia articles, its error was about a third lower than a same-weekday-last-week forecast. Install took about 30 seconds plus a six-second weight download. Forecasting all 16 series took a quarter of a second.

Worth an afternoon. Any series a business already forecasts by hand or by spreadsheet deserves that afternoon's test against Timestral, and the test, not the leaderboard, decides whether it earns a pilot. The bench's one clear loss shows why: on Great Britain's electricity demand, both simple baselines beat it.

What Timestral is

Timestral, released October 15, is Mistral's first family of time-series foundation models, in four sizes: 5M, 28M, 123M and 209M parameters. "Zero-shot" means it is not trained on the user's data. It reads a history of up to 32,768 steps and returns a forecast as a range of 21 quantiles rather than a single number, and it can take known-future inputs such as a holiday calendar or a production schedule. The inference code is Apache 2.0 and installs with pip. The open weights carry a different license, covered below.

Disclosure: VarOps runs on Claude, made by Anthropic, which competes with Mistral in language models, not in time-series forecasting.

The bench

An Ubuntu 22.04 virtual machine with four arm64 cores and 3.9 GB of RAM, running Python 3.10.12, PyTorch 2.14.1 (CPU build) and Timestral's October 15 release.

The first problem with testing any pretrained forecaster is that it may already have seen the answer. Mistral does not disclose its training corpora or data cutoff, so a public benchmark series could be in the training set. Every test therefore held out October 15 to 20, 2026. The model repositories were created on Hugging Face on October 14, the day before the holdout began, and the weight files were last committed at 15:22 UTC on October 15, part-way through its first day.

Three keyless public data sets stood in for business data:

  • Daily: pageviews for 16 English Wikipedia articles such as Invoice, Payroll, Inventory and Cash flow, with three years of history and a six-day holdout.
  • Hourly: total traffic to six Wikipedias, with 15 weeks of history and a 144-hour holdout.
  • Half-hourly: Great Britain electricity demand from Elexon, with 19 weeks of history and a 286-step holdout.

Each model went up against two seasonal-naive forecasts - "same time yesterday" and "same time last week" (for daily data they are the same thing) - and against AutoETS, a standard statistical model from the statsforecast library. The score below is each model's error divided by the "same time yesterday" error, combined across series as a geometric mean: under 1.0 beats that baseline. It rests on one week of one October, and the 16 daily series all come from the same website in the same week, so they are not 16 independent trials.

model daily pageviews (16) hourly traffic (6) GB demand (1)
Seasonal naive, same time yesterday 1.00 1.00 1.00
Seasonal naive, same time last week 1.00 0.85 0.96
AutoETS, automatic selection 0.78 0.99 2.38*
Seasonal ETS, specified by hand - - 0.96
Timestral-5M 0.71 0.64 1.17
Timestral-28M 0.67 0.63 1.12
Timestral-123M 0.66 0.58 1.18
Timestral-209M 0.65 0.60 1.15

*On the half-hourly data, AutoETS's automatic model selection picked a non-seasonal model. Specifying a seasonal one, ETS(A,N,A) with a 48-step season, scores 0.96. VarOps ran that fit after the main bench, on the same data and holdout.

The small model is the one to run

Bigger bought very little. On the daily series, the 209M was 3.5% more accurate than the 28M. On the hourly series it was 5% more accurate, and the 123M was best of the four. That margin costs a model about eight times larger on disk, with five times the latency and four times the memory. The 28M beat the daily baseline on all 16 articles, though three of those wins were by less than 10%.

Its ranges held up too. On the daily and hourly sets, between 76% and 88% of actual values landed inside the 10th-to-90th percentile band, close to the 80% a calibrated forecast should give. A planner can size safety stock or staffing headroom from that band.

Speed and footprint

Mistral says a one-day forecast from three weeks of 15-minute data takes 10 ms (5M) to 140 ms (209M) on "a standard server CPU with 8 threads." On the VarOps box's four arm64 cores, the same task took 18 ms (5M), 53 ms (28M), 174 ms (123M) and 277 ms (209M) - roughly double Mistral's figures, on half the threads and a different chip. That is not a test of Mistral's claim. Mistral's ratios held or were beaten: the 28M ran 5.2 times faster than the 209M (Mistral says five), and the 123M took 63% of the 209M's time (Mistral says three quarters).

Peak memory ran from 295 MB for the 5M to 1.9 GB for the 209M, about half the VM.

Where it lost

GB electricity demand. Every Timestral size did 12% to 18% worse than "same half-hour yesterday." "Same half-hour last week" and a hand-specified seasonal ETS model both did better still, scoring 0.96. The bands failed as well: only 26% to 35% of actual values fell inside the 80% range.

The miss was a level error, and it was there from the first day. Over the first four holdout days, the 28M forecast ran 2.3 to 2.6 GW below actual demand each day, about 9% to 10% low, while the "yesterday" baseline was about as close on October 15 and closer on the next three. Then demand jumped. October 19 and 20 averaged 14% above the previous Monday and Tuesday (the data ends at 23:00 UTC on October 20), and Timestral's gap widened to 3.3 and 4.3 GW. On October 20 it was closer than either naive forecast; on October 19, last week's values were closer.

The bench pulled no weather data, so we do not know why demand rose. Shortening the history to 56, 28 or 14 days did not remove the bias. Mistral lists weather forecasts among the known-future inputs the model can use, but none was tested here, so whether temperature would have closed the gap is open. The only covariate tried, day-of-week flags, added nothing and made forecasts 14 to 18 times slower.

How quiet was last week on the series you are testing? If the answer is "unusually," the holdout should cover more than one week before anyone trusts a single result, this one included.

What this bench cannot settle

One virtual machine, one week of holdout, 23 series, one run each. Pageviews and grid demand are stand-ins for orders and tickets, which carry promotions, stock-outs and price changes this data does not. Fine-tuning and Chronos-2 went untested. The three data sets were chosen before the run; the GB context check and the hand-specified ETS fit were not.

The benchmark claims, checked once

Mistral says the 209M ranks first among pretrained, zero-shot models on GIFT-Eval, TIME and fev-bench. Its results were added to all three benchmarks on October 16; the TIME date comes from the submission threads on the Real-TSF/TIME-Output dataset, not from Mistral.

VarOps recomputed the GIFT-Eval table from the leaderboard's own published results and code, using the Space version last updated October 17. Among 77 pretrained or zero-shot entries flagged for no test-data leakage, Timestral-209M is first on the probabilistic score (CRPS 0.446) and on average rank. On aggregate point error (MASE) it is second: JP Morgan Chase's Morpheus-2.0, added on October 16 and listed with no model link or replication code, scores 0.646 against Timestral's 0.658. Six entries labeled agentic beat Timestral-209M on both measures. The 28M does beat Amazon's Chronos-2 on GIFT-Eval MASE, 0.678 to 0.698, as Mistral says. We could not check the TIME and fev-bench rankings.

The license line

The weights ship under what Mistral calls a "Modified MIT" license. The modification is the second clause: no rights at all "if the global consolidated monthly revenue of your company (or that of your employer) exceeds $20 million (or its equivalent in another currency) for the preceding month." That is $240 million a year at an even pace, a line many mid-market companies sit above. The clause covers derivatives and fine-tunes and ships with all four sizes. The announcement and docs use the "Modified MIT" label without stating it.

Below the line, the model is free to run in production. Above it, the license names two routes: a commercial license from sales@mistral.ai, granted "at its sole discretion," or Mistral's hosted services. Mistral's docs page for the 209M, checked on October 21, lists no API endpoint or price; the announcement offers the models through Mistral Forge.

A third route is a different model. Amazon's Chronos-2 is Apache 2.0, has 120M parameters, runs on CPU and installs with pip install "chronos-forecasting>=2.0". VarOps did not run it on this data. Google's TimesFM-3, which Mistral benchmarks against, is licensed for non-commercial use only, but its predecessor TimesFM-2.5 is Apache 2.0.

The fast route

Two installs: pip install --index-url https://download.pytorch.org/whl/cpu torch, then pip install pandas git+https://github.com/mistralai/timestral.git (the script below needs pandas, which Timestral does not install). Export one series as a CSV with date and value columns and run this:

import sys, numpy as np, pandas as pd
from timestral import TimestralForecaster
y = pd.read_csv(sys.argv[1], parse_dates=["date"]).sort_values("date")["value"].to_numpy(float)
H, m = 28, 7
ctx, test = y[:-H], y[-H:]
model = TimestralForecaster.from_pretrained("mistralai/Timestral-28M")
f = model.forecast(ctx, prediction_length=H)
naive = np.tile(ctx[-m:], H // m + 1)[:H]
print("Timestral MAE", np.abs(test - np.ravel(f.median)).mean(), "| seasonal-naive MAE", np.abs(test - naive).mean())

It holds out the last four weeks of a daily series and compares the 28M with the same weekday a week earlier. On the Invoice series it ran in 1.6 seconds: mean error 14.9 views a day against the baseline's 22.9. Those weeks mostly predate the weights, so that run shows the script working, not a clean result. Swap the model id for mistralai/Timestral-209M to run the largest size.

The go/no-go is three checks.

Beat the stronger baseline. For hourly data, run the script with m set to 24 and again to 168 and keep whichever scores better. Where an analyst already maintains a classical model such as seasonal ETS, it belongs in the comparison too; on GB demand it beat every Timestral size.

Win by a visible margin, over more than one week. The bench's wins were error cuts of 29% to 42% against the "yesterday" baseline, and the loss was 12% to 18% the other way, so a win of a few percent is noise. A model that clears both checks earns a pilot alongside the current forecast for one planning cycle. One that fails does not, as it stands; adding a known driver such as temperature or a promotion calendar is the next thing to try, not a guaranteed fix.

Check the revenue line before production. The company's monthly revenue decides whether Timestral can be used free, under a commercial license from Mistral, or replaced by an Apache-licensed model that has to pass the same test.

From thinking to doing.
CTA Image

From founder thinking to company building.

Keeping up with AI is one thing. Putting it to work is another. VarOps helps companies turn the capabilities that matter into real operational advantages, without chasing every new model or tool.

Put AI to Work →

Sources

Add VarOps on Google