PHASE 6 — Joint paths (Stage B) — 2026-11-03
What was run (configs/ablations.yaml, model mrpt_small_copula, M3U96b)
Stage A: MRPT-S with the Student-t head, 4 000 steps (same budget and seed as the ablation reference mrpt_small_b4k),
best validation NLL −6.4509. Stage B: low-rank (k = 4) + diagonal Gaussian copula head over the 60 future minutes,
trained for 600 steps on the copula log-likelihood of the PITs with the marginals frozen (64 s); best validation copula
NLL −2.5e-5 per observed dimension, i.e. indistinguishable from independence (the likelihood at R = I is exactly 0).
Prediction on the 986 468 development-test origins with 200 correlated draws (joint) and with 200 independent draws
of the same marginals (indep); path scores computed per origin and bootstrapped by trading day
(results/metrics/ablations/path_scores_mrpt_small_copula_test.json).
Results (H4)
| Score (per origin, 60-minute paths) | Joint (copula) | Independent | Joint − independent (95 % CI) |
|---|---|---|---|
| Energy score | 3.4903e-3 | 3.4904e-3 | −9.2e-8 [−2.3e-7, +5.0e-8] (−0.003 %) |
| Variogram score (p = 0.5) | 1.51132e-4 | 1.51136e-4 | −3.8e-9 [−1.0e-8, +2.2e-9] (−0.002 %) |
| CRPS of maximum drawdown | 1.4632e-3 | 1.4633e-3 | −1.8e-7 [−6.2e-7, +2.8e-7] (−0.01 %) |
| CRPS of realised variance | 1.1881e-5 | 1.1869e-5 | +1.2e-8 [−2.8e-9, +3.0e-8] (+0.10 %) |
| Cumulative-return CRPS at H = 60: joint 0.4194, independent 0.4191 (scaled), i.e. no gain either. |
H4 is rejected: once the Student-t marginals are conditioned on the 390-bar history, the probability-integral transforms of consecutive future minutes are essentially uncorrelated, the learned factor loadings stay near zero, and coherent sampling changes no path score by more than a hundredth of a percent. Diffusion decoders were therefore not attempted (the brief asked for them only if a dependence-aware decoder demonstrably helped).
Validation of the machinery (so that the null is not an implementation artifact)
tests/numerical/test_copula.py: sampling reproduces the marginals; the sampled correlation matches the implied correlation under strong loadings; the copula NLL is minimised at independence for independent data; PIT round trip.tests/numerical/test_scores.py::test_energy_score_prefers_true_dependence: the energy score does reward correct dependence when it exists.- The synthetic smoke run (independent t returns by construction) also learned ≈ 0 correlation, as it should.
Go / no-go
Stage B remains in the package as a documented null; the paper reports it in the ablation section.