cascade-fullctx-stability-v22
A NumPy/SciPy full-context generator derived directly from the live king
cascade9 (cascade-fullctx-spectral-v12). The only change from the king is a
new 5% conditional_stability family, funded by shaving 1% each from the five
largest dynamics families (trend_seasonal_ar, regime_shift, ar2,
integrated, ou_stochastic_vol). Every dynamic family is retained.
What v22 changes and why
The pre-eval analysis showed cascade9 forecasts movement everywhere, so it loses to last-value persistence on near-flat horizons — stable rates, flat sensor stretches, sparse channels, healthcare pageviews, npm downloads. The fix is to teach regime-aware persistence: read the current regime from the 4096-point context and hold the level when the recent past is calm, but still move when it is not.
conditional_stability emits series that alternate between calm (held-level,
optionally exactly constant) and dynamic (spliced seasonal / AR / smooth-GP /
random-walk) regimes, with segment lengths of 128–1024 steps so that a calm
stretch supplies many fully-flat next-64 windows while transitions still teach
calibrated breakouts. Measured on 400 sampled rows: ~28% of horizon windows are
near-flat and ~42% are clearly dynamic, with no degenerate all-flat rows —
so the family adds a "predict no change when appropriate" signal without
narrowing forecasts on genuinely dynamic series. Generator throughput is
essentially unchanged from cascade9 (~9.2M points/s, <1% penalty).
Design (inherited from cascade9)
- Emits only 4096-point series, matching the 128-patch training/eval geometry and minimizing the one non-target context patch paid per series.
- Samples trend as total end-to-end excursion, so trend strength is independent of series length.
- Mixes fourteen families: trend/seasonality, structural regimes, multiplicative series, AR/integrated/nonlinear dynamics, smooth spectral GP, power-law long memory, physical sensors, seasonal counts, intermittent demand, and outliers.
- Replaces the predecessor's slow 48-pass random-Fourier GP with one batched inverse FFT and adds persistent/anti-persistent spectral paths.
- Adds a small regime-switching mean-reverting family with bounded clustered volatility, heavy-tailed innovations, transient shocks, and seasonal means.
- Executes the OU recurrence with SciPy's compiled linear filter instead of a 4095-step Python loop.
- Executes AR(1) and AR(2) recurrences with compiled SciPy filters; local microbenchmarks were 4–12× faster than scanning time in Python.
- Adds batched cadence-seasonal Poisson and gamma-mixed Poisson counts with signed trends and decaying bursts, preserving positive integer structure.
- Adds weekday/weekend interactions to a minority of count rows and piecewise spectral slopes to long-memory rows, covering calendar effects and scale-dependent roughness without another FFT.
- Gives 40% of trend-seasonal rows a low-innovation mode, teaching sharp, stable periodic reconstruction while retaining noisy seasonal coverage.
- Anchors most mixture mass on the five-seed-tested full-context core (trend/seasonal, regimes, multiplicative, AR2, and integrated paths), while retaining each newer prior at a conservative share.
- Uses published TempoPFN ablations to strengthen OU/SDE-like dynamics, spectral/long-memory paths, and transient events without letting one family dominate the corpus.
- Adds slowly modulated amplitude and phase to a minority of seasonal components; stationary cycles remain the majority. Multiplicative paths use the same full cadence bank instead of a four-period subset.
- Extends structural/event coverage with piecewise-affine regime trends, decaying shock recovery, event plateaus, and genuine held-constant runs.
- Applies low-rate reversal, censoring, quantization, and sample-and-hold artifacts to bridge clean priors to real measurement pipelines.
- Extends seasonality through 365/672/730-step cycles and adds a small generic physical-sensor family (smooth, bounded, pressure-like, and skewed-positive) without adopting the competitor's private-pool-shaped weather weighting.
- Generates lazy 2048-row random-family chunks, keeping every stream prefix mixed while amortizing Python dispatch. Local profiling found this about 6% faster than 1024 rows; 4096 rows regressed slightly.
- Evaluates optional seasonal components only for active rows while preserving the fixed RNG draw sequence, and caches the fixed cadence sine/cosine basis, reducing trigonometric work without narrowing the prior.
- Draws jump, shock, and heavy-tail values only where those sparse branches are active instead of allocating dense arrays whose values are mostly discarded.
On this VPS, an 8192-series benchmark improved from a v11 pre-optimization median of 9.40M points/s to 11.38M points/s after v12 prefetching. The generator is now well above the mainnet contract's 3.7M reference throughput in isolation; end-to-end token completion also includes model training and stream handoff.
An end-to-end isolation run found that synchronous generation left training
blocked on data for 21.9% of its wall (2.13M point-passes/s). A deterministic
one-chunk producer thread now overlaps NumPy/SciPy generation with GPU work,
cutting data wait to 3.9% and raising training throughput to 2.43M
point-passes/s (+14.4%) on the A100. The same short contract budget then
completed without a deadline hit. Cached rows reached 2.74M, confirming the
remaining gap to the live L40S reference is mostly model/device throughput.
A controlled 120-second parameter screen then compared the baseline mixture
with seasonal-, spectral-, and dynamics-heavy variants under the same model,
pool, budget, and seeds. Dynamics-heavy won all three validation seeds, reducing
mean local synthetic-pool geomean from 0.19097 to 0.18431 (3.5%; lower is
better). The applied weights increase AR(2), integrated, threshold-AR, chaotic,
regime-shift, and OU coverage while reducing stationary seasonal, spectral, and
sparse/count families. This remains a directional local result, not a live
validator verdict.
Local training result
The v10 corpus was trained under the mainnet chain.toml contract on an A100
for the full 3-hour wall. It scored 0.13679 on the 64-window local synthetic
smoke pool (lower is better), improving from 0.15429 at the 30-minute heat
budget, while reaching 55% of the token budget. The optimized dynamics-heavy
v11 heat reached 59% (3.90B / 6.66B) and scored 0.15424. The v12 prefetch
isolation test then cut data wait from 21.9% to 3.9% and raised end-to-end
throughput from 2.13M to 2.43M point-passes/s. These scores are directional
and are not live-validator verdicts; the A100 remains below the contract's
L40S-calibrated 3.7M reference.
Validate
python -m cascade.miner.cli verify ./cascade-v2 --chain-toml chain.toml
Contract validity and CPU throughput do not establish forecasting quality. Run a production-faithful GPU A/B score against the current king before deploying this candidate.