YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
new_generator β compositional SARIMA-backbone cascade generator
A self-contained cascade data generator that uses a SARIMA(p,d,q)(P,D,Q)_s process as its dynamical backbone and layers the ingredients that modern synthetic-data priors for time-series foundation models rely on. A pure SARIMA corpus is classic but narrow (linear, near-Gaussian, stationary bar the integration); this generator keeps SARIMA's well-behaved, guaranteed-stationary recursion as the core and enriches it toward the SOTA recipe.
What's inside
| file | purpose |
|---|---|
generator.py |
class Generator(DataGenerator) β the entrypoint |
config.json |
length band, SARIMA order caps, enrichment probabilities |
requirements.txt |
hash-locked, allowlisted deps (numpy, scipy) |
The recipe
SARIMA backbone. Each segment is a draw from SARIMA(p,d,q)(P,D,Q)_s:
(p,q) non-seasonal AR/MA, d integration (stochastic trends), (P,D,Q)_s
seasonal terms coupling seasonality with autocorrelation.
SOTA enrichments layered on top:
- Regime switching β a series is 1β3 concatenated segments, each its own SARIMA parameterisation, stitched with level continuity β structural breaks in dynamics a single stationary ARMA can't produce.
- Stochastic volatility β innovations are modulated by an AR(1) log-variance process (vectorised) β volatility clustering, on top of Gaussian or Student-t (fat-tailed) shocks.
- Compositional components β additive nested-calendar seasonality, smooth trends, structural level shifts and sparse spikes/outliers, each scaled relative to the core (KernelSynth-style composition).
- Nonlinear warps β optional invertible transform (asinh tail-compression, exp/softplus positivity, signed power) β non-Gaussian / positive / multiplicative marginals, like real demand, price and count series.
- TSMixup β with some probability two independent draws are convex-combined (the Chronos augmentation), broadening the corpus beyond any single prior.
Why this is stronger than plain SARIMA
Plain SARIMA teaches a narrow, linear-Gaussian forecaster. The enrichments add
exactly the dynamics the leading TSFM synthetic priors exploit and that real
held-out series exhibit β regime breaks, volatility clustering, fat tails,
non-Gaussian/positive marginals, compositional multi-scale structure, and mixed
series. It is not a claim of a leaderboard win (SOTA is empirical β measure it
with cascade score), but the prior now spans the space those recipes cover.
Stability & determinism
AR/MA coefficients (regular and seasonal) are drawn as reflection coefficients in
(-1, 1) and mapped to lag polynomials by Levinson-Durbin, guaranteeing all
roots outside the unit circle β the scipy.signal.lfilter recursion never
diverges. Integration is de-meaned first; warp exponents are clipped; each series
is rescaled to a sampled target scale and hard-clipped to max_abs_value.
Everything is fully vectorised (no per-timestep Python loops), so generation
is linear-time and CPU-only. The corpus is a pure function of (seed, n_series)
via np.random.SeedSequence sub-seeds β no hash(), wall-clock, or unseeded RNG.
Verify
# from the cascade repo root, with deps installed and cascade importable
cascade verify ../new_generator
Config knobs (config.json)
min_length/max_lengthβ per-series length band.max_ar/max_ma/max_seasonal_ar/max_seasonal_maβ SARIMA order caps.d_weights/seasonal_d_weightsβ integration-order probability mass.seasonal_probβ probability a series carries seasonal structure.student_t_prob/stoch_vol_probβ fat-tailed / volatility-clustered innovations.regime_prob/max_regimesβ regime-switching frequency and segment count.trend_prob/calendar_prob/level_shift_prob/spike_probβ additive components.warp_probβ probability of a nonlinear marginal warp.mixup_probβ probability of TSMixup convex combination.standardizeβ z-normalise each series (defaultfalse).max_abs_valueβ hard magnitude clip to keep output trainer-safe finite.
- Downloads last month
- 47