File size: 4,044 Bytes
bd581df | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | # generator_v2 β SARIMA-compositional + chaotic + long-memory cascade generator
A cascade data generator that keeps the strong **SARIMA-compositional** backbone
of `new_generator` and adds the two classes of dynamics that backbone
structurally cannot produce, plus a bilinear nonlinear-AR family. It is a
genuine *capability* upgrade β new mechanisms, not just re-weighted knobs.
## What's inside
| file | purpose |
|------|---------|
| `generator.py` | `class Generator(DataGenerator)` β the entrypoint |
| `config.json` | length band, SARIMA caps, **core-family weights**, enrichment probs |
| `requirements.txt` | hash-locked, allowlisted deps (`numpy`, `scipy`) |
## Core families (selected per series by `core_weights`)
1. **SARIMA-compositional** *(dominant, best single scorer)* β regime-switching
`SARIMA(p,d,q)(P,D,Q)_s` with stochastic volatility, fat tails, integration.
2. **Chaotic dynamical systems** *(new)* β continuous chaotic flows integrated
by RK4 (Lorenz, RΓΆssler, Thomas, Chen, driven Van der Pol) plus the
Mackey-Glass delay system. Motivated by **DynaMix (NeurIPS'25)**: a TSFM
trained purely on a small library of chaotic attractors generalises zero-shot
to real traffic/weather. These give deterministic-but-complex, broadband,
long-range structure no ARMA prior contains.
3. **Long-memory / fractional** *(new)* β (i) power-law `1/f^Ξ²` colored-noise
spectral synthesis (Ξ²β[-1,3]: anti-persistent β pink β Brownian), and
(ii) **ARFIMA(p,d,0)** via truncated fractional-differencing (Hosking)
coefficients. Fills the gap between SARIMA's I(0) and I(1) with genuine
long-range dependence (Hurst β 0.5).
4. **Bilinear nonlinear-AR** *(new)* β `y_t = Ο y_{t-1} + b y_{t-1} e_{t-1} +
ΞΈ e_{t-1} + e_t`: bursty multiplicative autocorrelation distinct from
SETAR/GARCH.
Every core then flows through the **same** enrichment stack as before β
additive nested-calendar seasonality, trends, level shifts, spikes, nonlinear
marginal warps, TSMixup and finalisation β so the new dynamics inherit the full
compositional breadth.
## Performance & stability
- The chaotic cores use a **bounded scalar recursion** capped at
`chaos_max_steps` (default 1200) integration steps and then resample to the
target length, so cost stays linear and small even at length 4096.
- Any core that diverges or returns non-finite falls back **deterministically**
to the SARIMA core; the final series is rescaled and hard-clipped to
`max_abs_value`.
- SARIMA AR/MA roots are guaranteed outside the unit circle (Levinson-Durbin on
reflection coefficients); ARFIMA uses `d < 0.5` for stationarity.
## Determinism
The corpus is a pure function of `(seed, n_series)` via
`np.random.SeedSequence` sub-seeds. The chaotic/bilinear scalar recursions are
ordinary deterministic float arithmetic. No `hash()`, wall-clock, or unseeded
global RNG.
## Verify
```bash
# from the cascade repo root, with deps installed and cascade importable
cascade verify ../generator_v2
```
## Config knobs (`config.json`)
- `min_length` / `max_length` β per-series length band.
- `core_weights` β probability mass over `sarima` / `chaotic` / `longmem` /
`bilinear` cores. SARIMA is kept dominant (strongest single scorer).
- `chaos_min_steps` / `chaos_max_steps` β chaotic integration-step budget
(bounds cost; trajectories are resampled to the series length).
- `max_ar` / `max_ma` / `max_seasonal_ar` / `max_seasonal_ma` β SARIMA caps.
- `d_weights` / `seasonal_d_weights` β integration-order probability mass.
- `seasonal_prob` / `student_t_prob` / `stoch_vol_prob` β SARIMA innovations.
- `regime_prob` / `max_regimes` β regime-switching frequency and count.
- `trend_prob` / `calendar_prob` / `level_shift_prob` / `spike_prob` β components.
- `warp_prob` / `mixup_prob` β nonlinear marginal warp / TSMixup probabilities.
- `standardize` β z-normalise each series (default `false`).
- `max_abs_value` β hard magnitude clip to keep output trainer-safe finite.
|