Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Time-series forecasters

All 11 models here read a numeric context (past values) and a horizon (how many future steps to predict), and write back an OpenAI-compatible forecast object. zsfm <model> infer --help always shows the exact request shape for that model.

Two request shapes are used, depending on the model:

  • Univariate: {"context": [...], "horizon": N} — one flat array of numbers.
  • Batch (Toto, Moirai, Moirai-2): {"context": [[...], [...]], "horizon": N} — a list of series, forecast independently. These three also accept a multivariate form ([[[v0_t0, ...], [v1_t0, ...]], ...]) for genuinely multi-channel input.

Response shape is always:

{
  "id": "forecast-...",
  "object": "forecast",
  "model": "<model-name>",
  "choices": [
    {"index": 0, "forecast": {"point": [...], "quantiles": {...}}}
  ]
}

Not every model produces quantiles — point-forecast-only models (noted below) only fill in "point".

Each row below is the original model, not a reimplementation with a different architecture — zsfm convert downloads the exact published weights and this workspace’s inference code is verified bit-exact (or numerically equivalent within float tolerance) against the original PyTorch implementation. Links go to the original HuggingFace weights, the original authors’ source repo, and the paper.

Bold licenses have real usage restrictions beyond plain permissive — see Licensing before relying on Moirai or TiRex weights for anything beyond research/internal use.

Toto-2

Paper: Toto 2.0: Time Series Forecasting Enters the Scaling Era.

zsfm toto convert
echo '{"context": [[1,2,3,4,5,6,7,8]], "horizon": 4}' | zsfm toto infer --gguf gguf/toto-2.5b-f16.gguf

Batch and multivariate input supported (see table above). --context-length on infer overrides how much of the context window is fed to the model (default: last 4096 steps, must be divisible by the patch size, 32). --f64 runs the forward pass in double precision to match PyTorch’s numerical accuracy more closely, at ~2x memory.

Chronos-2

Paper: Chronos-2: From Univariate to Universal Forecasting.

zsfm chronos convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm chronos infer --gguf gguf/chronos-f16.gguf

Univariate only. Full quantile levels in the response; "point" is the median (q0.5).

TimesFM 2.5

Paper: A decoder-only foundation model for time-series forecasting (ICML 2024).

zsfm timesfm convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm timesfm infer --gguf gguf/timesfm.gguf

Univariate only. Fixed architecture — no --config flag needed at inference time (everything’s embedded in the GGUF).

Sundial

Paper: Sundial: A Family of Highly Capable Time Series Foundation Models (ICML 2025 Oral).

zsfm sundial convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm sundial infer --gguf gguf/sundial-f16.gguf

Flow-matching model, point-forecast only. --steps on infer overrides the ODE solver’s step count (default: from GGUF metadata, typically 50); 10-20 is usually enough and latency scales linearly with this value.

TTM

Paper: TinyTimeMixers (NeurIPS 2024).

zsfm ttm convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm ttm infer --gguf gguf/ttm-f32.gguf

Univariate, point-forecast only. Small and fast (~3MB as F32).

Lag-Llama

Paper: Lag-Llama: Towards Foundation Models for Probabilistic Time Series Forecasting.

zsfm lag-llama convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm lag-llama infer --gguf gguf/lag_llama-f32.gguf

Univariate, point-forecast only. Downloads a raw PyTorch Lightning .ckpt and reads it directly — no Python needed for conversion.

MOMENT

Paper: MOMENT: A Family of Open Time-series Foundation Models (ICML 2024).

zsfm moment convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm moment infer --gguf gguf/moment-f32.gguf

Univariate, point-forecast only.

Moirai 1.0 / Moirai 2.0

Papers: Unified Training of Universal Time Series Forecasting Transformers (Moirai 1.0), Moirai 2.0: When Less Is More for Time Series Forecasting (Moirai 2.0).

zsfm moirai convert   # or: zsfm moirai2 convert
echo '{"context": [[1,2,3,4,5,6,7,8]], "horizon": 4}' | zsfm moirai infer --gguf gguf/moirai-f32.gguf

Point-forecast only, channel-independent across variates (each variate forecast independently, computed in parallel via rayon). Batch and multivariate input supported. Moirai-2 is the newer, smaller (R-small) checkpoint.

Both checkpoints are CC-BY-NC-4.0 — non-commercial use only. See Licensing.

FlowState-R1

Paper: FlowState: Sampling Rate Invariant Time Series Forecasting.

zsfm flowstate convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm flowstate infer --gguf gguf/flowstate-r1-f16.gguf

Univariate. Full quantile levels; "point" is the median.

TiRex

Paper: TiRex: Zero-Shot Forecasting Across Long and Short Horizons with Enhanced In-Context Learning. Built on xLSTM.

zsfm tirex convert
echo '{"context": [1,2,3,4,5,6,7,8], "horizon": 4}' | zsfm tirex infer --gguf gguf/tirex-f32.gguf

Univariate. Full quantile levels; "point" is the median. Downloads a raw .ckpt directly, like Lag-Llama.

Licensed under the NXAI Community License (modeled on Meta’s Llama community license): free to use and redistribute, including commercially, unless your organization’s consolidated annual revenue exceeds €100M and you’re incorporating TiRex into a commercial product or service — in which case NXAI requires a separate commercial license. See Licensing.