Skip to main content
balanced_pool() returns 42 pre-configured generator instances, built from 15 of SynForecast’s 31 generator classes with one class per behavioral niche. The niches span ARMA and exponential smoothing, long-range memory, volatility clustering, intermittent demand, deterministic chaos, counts, and bounded and heavy-tailed processes. It is the default corpus behind generate_series, and a bias-free starting point for benchmarking or pretraining: generators are allocated proportionally to each niche’s behavioral range, so no single domain dominates the pool. The list is ordered round-robin across the niches, so any prefix spans as many distinct behaviors as possible: a generate_series panel smaller than the pool still gets one niche per series.
What’s in, and what’s deliberately out The pool draws from interpretable, single-mechanism generators — each slot is one named data-generating process. The meta-generators (TSIGenerator, TCMGenerator, KernelSynthGenerator) are excluded on purpose: they already randomize across many behaviors internally, so folding them in would blur the one-niche-one-mechanism design. Use the pretraining_pool() preset for maximal breadth in foundation-model pretraining; it bundles those meta-generators, with balanced_pool included by default.

Generate a balanced dataset

Create 42 generators and generate one series per generator.

Generator names

Each generator has a descriptive name indicating its type and configuration.

Overview: all 42 series

A compact grid showing every series in the balanced pool.

Niche deep-dives

Each behavioral niche contributes a different number of generators. Below we group them by niche and plot the variants side by side.

Summary statistics

Compare key statistics across all 42 series to see how the balanced pool spans different value ranges and variabilities.

Scaling up

Generate multiple series per generator for a larger dataset.
Plot five series from a single generator to see intra-generator variation.

Pretraining pool

pretraining_pool() is the breadth-maximizing counterpart to balanced_pool(). It keeps the 42 single-mechanism instances above and adds independently-seeded copies of the three meta-generators balanced_pool deliberately leaves out — TSIGenerator, TCMGenerator, and KernelSynthGenerator. Each of those resamples a fresh trend/seasonal, causal-graph, or GP-kernel configuration per series, so a handful of instances already spans a very wide distribution — the goal when pretraining a foundation model rather than benchmarking one named process. The default length range is wider too (256-1024 steps), matching typical pretraining contexts. Two knobs control the mix: n_meta_variants sets how many independently-seeded copies of each meta-generator to add (default 3), and include_balanced=False drops the single-mechanism generators for a purely procedural corpus.
Whether pretraining on a synthetic corpus like this actually helps depends on the target data and the amount of real history available. See when synthetic data helps for a paired, multi-seed benchmark that reports where it wins, where it is neutral, and where the edge reverses.