Runs the two surviving threads (H1 breakout, vol-normalized H1 momentum) across the 21-instrument gapless universe under the wide-stop regimes, beside an always-long beta control on the same matrix. The breakout dies everywhere (beta on trending assets, significantly negative on FX); momentum shows a one-sided positive cross-sectional tail with five double-regime flags, of which FRA40 (both regimes) and NatGas (k6) beat the no-signal baseline outright — the only control-beating cells of the whole program. Includes the engine performance envelope (single run 2.97 s vs Arc-0 ~3 s; 11-13 s/cell; executor fan-out findings refs Brummel/Aura#268, data-gap abort refs Brummel/Aura#264).
5.2 KiB
Arc 4 — breadth and beta controls: what survives 21 instruments and a no-signal baseline?
Date: 2026-07-13
Engine: aura @ 84e1075 (release build)
Campaigns: research/campaign-arc4-breadth-{bo-h1,mom-vnorm}.json,
research/campaign-control-always-long{,-breadth}.json
Method
The two threads that survived Arcs 2–3 — the H1 breakout (XAUUSD cell) and vol-normalized H1 momentum (US500 cell) — run across every archive instrument with gapless 2018–2026 m1 coverage (21 instruments: 4 Arc-1 originals + US30, NAS100, UK100, JPN225, HK50, FRA40, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD, EURAUD, XAGUSD, NatGas, BTCUSD, ETHUSD; Copper dropped — its archive is missing 2018-01..2018-10), under the two wide-stop regimes (vol{60, k6}, vol{60, k12}), slippage cost, Arc-1 pipeline.
Beside them ran the beta control: a constant bias=+1 blueprint (no signal at all) on the same matrix. Every candidate cell is read against always-long on the same (instrument, regime): a "positive" that does not beat the no-signal baseline is long-beta in a trending market, not signal.
Findings
-
The breakout does not survive the control anywhere. Its breadth flags (pooled WF-OOS gross, P(E[R]≤0) < 0.15: ETHUSD, JPN225, XAUUSD both regimes; XAGUSD, BTCUSD, US30 at k12) are all on assets that trended — and on the metals and crypto the always-long baseline crushes it (XAUUSD: control +0.78–0.81 at P 0.002–0.003 vs candidate +0.12–0.14 at P 0.08). FX is the mirror image: the breakout is significantly negative on EURUSD and EURAUD (P(≤0) up to 0.995). Verdict: the H1 channel breakout, in every variant this project has tried (trend gate, vol gate, H4 port, four stop regimes, costed and gross), is beta at best and anti-signal on FX. This thread is closed.
-
Vol-normalized momentum shows a real cross-sectional lean. 12 of 42 cells flag at P < 0.15 — five instruments flag at P < 0.05 in both regimes (USDJPY 0.000/0.010, ETHUSD 0.000/0.019, NatGas 0.017/0.020, FRA40 0.018/0.024, US500 0.036/0.044) — while the negative tail is empty (worst cell P = 0.845). Chance at this threshold across ~21 effective tries produces roughly one such pair, not five with a one-sided tail.
-
Two momentum cells beat the no-signal baseline outright — the only ones in the whole program:
- FRA40, both regimes: candidate +0.140 (P 0.018) / +0.099 (P 0.024) vs always-long −0.065 (P 0.670) / +0.051 (P 0.368). On an index whose buy-and-hold R-stream is flat, the timing itself generates the expectancy.
- NatGas at k6: +0.131 (P 0.017) vs +0.073 (P 0.338). The other flags (USDJPY, ETHUSD, US500, NatGas k12) are "mixed": more consistent than beta (lower P) but smaller per trade — with no benchmark-relative stage in the pipeline (Brummel/Aura#263) they are not distinguishable from diluted beta plus short-side noise.
-
Classification: candidate, not edge. The FRA40/NatGas result is gross of constant spread costs (slippage-only; per-instrument constant costs on a 21-instrument matrix are inexpressible, Brummel/Aura#260), the OOS bootstrap is gross-only (Brummel/Aura#259), and the effect is two instruments out of 21. What it has earned is a focused follow-up arc: per-instrument costed campaigns for the five double-flagged instruments, a long-only vs long-short decomposition (does the short side contribute?), and sensitivity outside the {24,72,120} grid.
Performance (is the engine in its expected envelope?)
All numbers from this session's serial campaign loops on a 24-core box,
engine 84e1075 release:
| workload | measured | baseline / expectation |
|---|---|---|
single aura run, 8.5 y m1, GER40 |
2.97 s | Arc 0: "~3 s" ✓ |
| campaign cell (9-member grid + 90/30 WF + 1000-resample MC) | 11–13 s | Arc 1: 9.5 s/cell (no cost nodes) — +15–25 % with cost model, linear across 16 campaigns ✓ |
| FX cells vs index cells | ~2× | matches ~1.6× larger m1 files (tick density) ✓ |
| 42-cell breadth campaign | 493–495 s | linear ✓ |
| 42-cell one-member control | 98 s | streaming+WF dominates over member count |
Not in the expected envelope, filed as engine findings: the executor averages ~14 of 24 cores with a thread count oscillating 1 ↔ 240 (unbounded per-sim fan-out bursts, multi-second 10-thread plateaus, single-threaded valleys — Brummel/Aura#268, with NFS/page-cache re-paging measured and ruled out: ~15 MB/s syscall reads vs ~73 KB/s on the wire, 1.4 GB archive in ~12 GB page cache). A 21-instrument campaign also aborts wholesale minutes into the run when one instrument has a data gap (Copper), which the data-free validate cannot catch — evidence attached to Brummel/Aura#264.
Verdict
The exploration closes honest: every breakout variant is dead (beta or anti-signal), four of six new families are nulls, and one family — vol-normalized H1 momentum — leaves with a genuine, replicated, control-beating candidate on FRA40 (and NatGas at k6) plus a one-sided positive tail across the universe. Next work, in order of information per compute: costed per-instrument reruns of the five double-flagged momentum cells; a short-side decomposition; then, only if both hold, parameter robustness beyond the coarse grid.