Tempered-Stable Volatility Clock for Sequence Diffusion
Implementation & benchmark of arXiv:2607.19218 — Denoising Subordinated Probabilistic Models: Diffusion with a Tempered-Stable Volatility Clock, and What the Noise Mechanism Actually Controls
Source paper: Denoising Subordinated Probabilistic Models: Diffusion with a Tempered-Stable Volatility Clock, and What the Noise Mechanism Actually Controls arXiv:2607.19218 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace independent Gaussian diffusion noise across sequence positions with a positive, persistent variance chain and conditionally Gaussian perturbations. This gives the denoiser exposure to heavy tails and volatility clustering without requiring a more expressive neural architecture; keep the denoiser blind to the realized variance when the goal is for generated samples to retain this structure.
Formulas
Mathematical statement
The paper defines a tempered-stable innovation \(\eta\sim\mathrm{TS}(\alpha,\theta,\delta)\), with \(0<\alpha<1\), \(\theta>0\), and Laplace transform \(\mathbb{E}[e^{-u\eta}]=\exp(-\delta[(\theta+u)^\alpha-\theta^\alpha])\). Its cumulants are \(\kappa_n(\eta)=\delta\alpha\,\Gamma(n-\alpha)\theta^{\alpha-n}/\Gamma(1-\alpha)\). The variance clock is the stationary positive AR(1) process \(A_i=\varphi A_{i-1}+\eta_i\), where \(0\leq\varphi<1\), the \(\eta_i\) are iid, and \(\delta=(1-\varphi)\theta^{1-\alpha}/\alpha\), which ensures \(\mathbb{E}[A_i]=1\). For diffusion timestep \(t\), use \(x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\,\mathrm{diag}(A)^{1/2}z\), with \(z\sim\mathcal N(0,I)\). From the AR(1) recursion, \(\mathrm{Var}(A_i)=v_A=\kappa_2(\eta)/(1-\varphi^2)=(1-\alpha)/(\theta(1+\varphi))\). If \(\varepsilon_i=\sqrt{A_i}z_i\), its excess kurtosis is \(K=3v_A\), and its lag-one squared-noise autocorrelation is \(\rho_{r^2}(1)=\varphi v_A/(2+3v_A)=\varphi K/[3(K+2)]\), implying the feasibility bound \(\rho_{r^2}(1)<K/[3(K+2)]\). Thus one can estimate \(\varphi=3(K+2)\rho_{r^2}(1)/K\), then choose \(\alpha,\theta\) so that \(3(1-\alpha)/[\theta(1+\varphi)]=K\).
Implementation notes
1. Integration point: modify the forward-noise sampler of a 1D sequence diffusion model, trajectory diffusion model, or spectrogram diffusion model. For each training example, treat the sequence axis of length \(d\) as the volatility-clock axis. Do not change the U-Net or Transformer initially and do not provide \(A\) as a denoiser input; the model receives only \(x_t\), timestep \(t\), and the usual conditioning. 2. Pseudocode: estimate target excess kurtosis \(K\) and lag-one squared-return correlation \(r=\rho_{r^2}(1)\) from training sequences; set \(\varphi=3(K+2)r/K\), clip it to \([0,0.99]\), choose \(\alpha\in(0,1)\), set \(\theta=3(1-\alpha)/(K(1+\varphi))\), and set \(\delta=(1-\varphi)\theta^{1-\alpha}/\alpha\). For every minibatch item, burn in \(A_0\) and iterate A[i] = phi*A[i-1] + sample_TS(alpha,theta,delta) for \(i=1,...,d\); sample z ~ Normal(0,1); form eps=sqrt(A)*z; form x_t=sqrt(alpha_bar[t])*x0 + sqrt(1-alpha_bar[t])*eps; train the standard epsilon-prediction loss against eps. At generation time sample the same clock and use it in the reverse transition or score scaling. 3. Compute from the paper: the Laplace transform, cumulants, normalization of \(A\), and calibration identities. Estimate empirically: \(K\) and \(r\) from data, and validate that generated \(\operatorname{Var}(A)\), kurtosis, and squared-noise autocorrelation match. A production implementation needs a positive tempered-stable sampler; for the MVP use numerical inverse-CDF sampling from the specified Laplace transform or a reliable tempered-stable routine, and compare against a moment-matched Gamma-innovation ablation. 4. First experiment: train a small 1D temporal U-Net or Transformer diffusion model on synthetic stochastic-volatility sequences and on a financial-return benchmark, comparing ordinary iid Gaussian noise, iid per-coordinate variance mixtures, globally shared Student-t scale, and the proposed AR-tempered-stable clock at equal training steps and parameter count. Measure held-out likelihood or denoising loss, marginal excess kurtosis, lag-one through lag-20 squared-return autocorrelation, and calibration under a volatility-shock intervention. Success is lower denoising loss or better sample likelihood at equal FLOPs together with generated squared-noise autocorrelation that follows the predicted geometric decay \(\rho_{r^2}(h)=\varphi^hK/[3(K+2)]\), rather than the iid baseline's zero clustering.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Not reproduced ✗
Stage 2 · Practical benchmark result: Inconclusive
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 9/10
Built a tempered-stable AR(1) volatility-clock sampler, forward-noise constructor, analytic verification harness, and blind toy denoiser comparison. The Laplace transform, stationary mean and variance, excess kurtosis, and geometric squared-noise autocorrelation matched theory across parameter sweeps. The denoiser showed a small favorable signal, but this is not evidence of a decisive modeling win.
- Agent confidence
- 9/10
- Baseline
- IID Gaussian: K=-0.0085, lag-1 squared-noise ACF=-0.0013, toy held-out MSE=0.5250 +/- 0.0025.
- Idea
- Clock: observed K=0.7783 versus predicted 0.7721, lag-1 ACF=0.0698 versus predicted 0.0650, toy held-out MSE=0.5176 +/- 0.0042.
Limitations: The denoiser test is a small synthetic blind noise-prediction task, not a full diffusion reverse-sampling, likelihood, financial-data, or multi-seed evaluation. Efficiency under difficult tempered-stable parameters and GPU acceleration were not tested.
How to run: python3 volatility_clock.py && /home/maxwelhelp/main/bin/python3 denoiser_compare.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.19218)
No significant difference vs. the tuned baseline (+1.9%, p=0.1657, wins 2 / 8 paired seeds).
- Benchmark
- Sequence modeling
- Model
- transformer_tiny
- Paired seeds
- 8
- Baseline mean
- 0.7383
- Idea mean
- 0.7526
- Effect (Δ)
- 0.0143 (+1.9%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1657 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Not confirmed ✗
- Practical effect
- Inconclusive
- Baseline tuning
- swept over 0 configs
Only the built-in sequence forecast track was tested, using 400 training examples, 400 test examples, and 5 epochs. Reverse diffusion sampling, likelihood, financial data, and larger architectures were not tested.
How to run: python3 bench_stage2.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 9/10
Implemented blind tempered-stable persistent volatility-clock augmentation with the canonical transformer_tiny and train_model path. Across 8 paired seeds, baseline test MSE was 0.73829 and idea MSE was 0.75255, giving paired delta +0.01426 and permutation p=0.1657. This is not a significant win, and the mechanism signature was not confirmed.
- Baseline
- sequence/transformer_tiny: MSE 0.73829 +/- 0.05677; best lr=0.0015, weight_decay=0.0001
- Idea
- blind volatility-clock augmentation: MSE 0.75255 +/- 0.05306; paired delta +0.01426, permutation p=0.1657
Benchmark result
No significant difference vs. the tuned baseline (+1.9%, p=0.1657, wins 2 / 8 paired seeds).
- Benchmark
- Sequence modeling
- Model
- transformer_tiny
- Paired seeds
- 8
- Baseline mean
- 0.7383
- Idea mean
- 0.7526
- Effect (Δ)
- 0.0143 (+1.9%; negative = idea better)
- Wins
- 2 / 8 paired seeds
- p-value
- 0.1657 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Not confirmed ✗
- Practical effect
- Inconclusive
- Baseline tuning
- swept over 0 configs
Only the built-in sequence forecast track was tested, using 400 training examples, 400 test examples, and 5 epochs. Reverse diffusion sampling, likelihood, financial data, and larger architectures were not tested.
How to run: python3 bench_stage2.py
Artifacts
- bench_report.json 5.4 KB View Raw
- bench_stage2.py 5.9 KB View Raw
- denoiser_compare.py 2.0 KB View Raw
- denoiser_results.json 0.2 KB View Raw
- report.md 1.3 KB View
- report_bench_2026-08-31T123515.md 3.1 KB View
- results.json 2.8 KB View Raw
- volatility_clock.py 4.5 KB View Raw