generate_series
generators when provided) and returned in
long format, mirroring utilsforecast.data.generate_series.
Series are spread evenly across the generator list from the front, so
when n_series is smaller than the pool only the first n_series
generators contribute. The default pool is ordered round-robin across
its behavioral niches, so a small panel still spans distinct behaviors:
the first 15 generators cover all 15 niches.
Parameters:
Returns:
balanced_pool
generate_series with n_series < 42 — therefore still get a
behaviorally diverse panel.
Parameters:
Returns:
Examples:
pretraining_pool
balanced_pool. It
adds the diversity-targeted meta-generators that balanced_pool
deliberately excludes — TSIGenerator (randomized trend/seasonal/
irregular composition), TCMGenerator (random temporal causal graphs),
and KernelSynthGenerator (samples from randomly composed GP kernels).
Each resamples a fresh configuration per series, so a handful of instances
spans a very wide distribution. By default it also includes the full
balanced_pool so the corpus carries interpretable single-mechanism
behaviors alongside the meta-generators.
Unlike balanced_pool, the default length range is wide
(256-1024 steps), matching the longer contexts typical of pretraining.
Parameters:
Returns:
Examples:
Multivariatizer
Bases: BaseModel
Wrap a univariate :class:BaseGenerator to produce correlated channels.
generate(n_series) draws n_series independent series of one
shared length from the wrapped generator, standardizes them, applies the
configured couplings, then restores each channel’s original level and
scale. The output is the same long-format frame the wrapped generator
produces (its id_col/time_col/target_col and engine).
Couplings (both may compose; mixing is applied first):
"mixing"(cotemporaneous): channels become instantaneous linear combinationsZ @ L.Tof the standardized bases, whereLis the Cholesky factor of a random well-conditioned correlation targetC = (1 - s) I + s Q.Qis the correlation matrix of a random Gaussian Gram matrix ands(the mixing strength, drawn frommixing_strength_range) directly sets the magnitude of the induced cross-correlations;s < 1keepsCpositive definite, soLis well conditioned."leadlag"(sequential): each non-root channel becomes, with probability 0.5 (at least one always does), a lagged, sign-flipped, noise-perturbed copy of an earlier channel:z_j = sign * roll(z_src, lag) + sigma * epswithlagfromlag_range(clamped below the series length, circular wrap so all channels share the same timestamps) andsigmafromnoise_scale_range. Per-channel scaling comes from the level/scale restore.
|x| < 1e8 and
std > 1e-8; violating draws are redrawn up to 5 times, then replaced
by unit Gaussian noise.
Seeding: the multivariatizer’s own seed fully determines the output.
The wrapped generator is copied and reseeded from the multivariatizer’s
rng on every generate call, so the base generator’s own seed and rng
state never influence the result and the original object is not mutated.
The last sampled coupling recipe (mixing strength/matrix, lead-lag
pairs with their lags) is exposed as last_recipe for introspection.
Parameters:
Multivariatizer.generate
unique_id in the
long-format output.
Parameters:
Returns:

