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.