Common uses
- Testing a forecasting pipeline on data whose true process you know, before trusting it on real series.
- Augmenting a small panel so a global model has more to learn from β see SynAugment.
- Pretraining foundation models on a diverse corpus no single real dataset provides.
- Sharing a reproducible example without exposing proprietary data.
1. Generate a panel in one line
generate_series draws from a balanced pool of generators spanning
trends, seasonality, volatility clustering, counts, and more, then
returns a panel you can hand straight to any Nixtla forecaster.
The Nixtla long format Every SynForecast output uses three columns βunique_id(series id),ds(timestamp), andy(value) β the schemastatsforecast,mlforecast, andneuralforecastall expect, so no adapter is needed. The defaultengine="pandas"returns a pandas frame; passengine="polars"(as here) for Polars.

with_generator_col=True to record
which generator produced each series:
2. Choose a generator when you need control
generate_series is the fast default. When you need a known process β
for example, to confirm your model recovers an upward trend β
instantiate a generator and set its parameters explicitly. Here, a
random walk with positive drift and moderate volatility.

drift, the jaggedness is the volatility.
Change seed for fresh draws, or the parameters to reshape the process.
Every generatorβs full parameter set is listed in the generator
reference.
3. Inject real-world patterns
Real series are rarely clean. Any generator can add anomalies, level shifts, and missing values, so you can measure how a model copes with them β and because everything is seeded, the messy series is reproducible.
Each pattern has its own guide The knobs above are the quick version. Fine-grained control lives in the capability guides: anomalies, changepoints, and missingness. To attach exogenous regressors, see exogenous.
4. Combine generators into one dataset
A realistic panel mixes behaviors.SynSet composes several generators
into a single long-format dataset, with each generator contributing a
batch of series under its own ids.

Reproducibility and the alpha API
Generation is fully seeded: the same inputs produce the same panel
across runs and regardless of n_jobs. SynForecast is in alpha, so
seed-identical outputs may change between releases β pin a version if
you depend on exact values.
Where to go next
- Generators β 31 generator classes from SARIMA, ETS, and GARCH to Gaussian processes and the KernelSynth pretraining recipe. Start with random walk or seasonal.
- Augmentation β expand a small
real panel with
SynAugmentor TSMixup. - Balanced pool β what
generate_seriesdraws from by default, and how to tailor it. - Integrations β end-to-end workflows with statsforecast, mlforecast, and neuralforecast.

