Two std-vocabulary blueprints (bo_h1 donchian-style H1 breakout; bo_h1_trend adds a post-latch EMA 12/48 regime gate). First real use of the campaign path: process + campaign documents registered and run as executable intent (screen 490d14df.., curves da886931.. with persisted taps). Finding: the gate reshapes the R-distribution per instrument (GER40 flips sign, EURUSD deteriorates); no deployable edge (best P(E[R]<=0)=0.08, generalization floor negative, sign agreement 0/4, all gross of costs). site/: build.py bakes a fully static index.html from the runs/ registry (aura.css embedded verbatim, inline SVG, zero external requests); adversarially verified — all baked figures re-derived from the registry.
3.1 KiB
Arc 1 — does a trend regime reshape the H1 breakout's R-distribution?
Date: 2026-07-13
Engine: aura @ 1ebb94c (release build)
Results page: site/index.html (build: python3 site/build.py)
Hypothesis
Following the orthogonal confirm/refute research model: a lone signal is not
expected to be profitable; the question is whether a conditioner B reshapes
the R-distribution of a base signal A. Here A = an H1 donchian-style breakout
(blueprints/bo_h1.json), B = an EMA(12)/EMA(48) trend regime that gates the
held breakout state post-latch (blueprints/bo_h1_trend.json) — a held
breakout is cut the moment the regime flips against it.
Method (campaign path, first real use)
Everything ran as registered research documents — no ad-hoc verb flags:
research/process-screen.json— sweep (deflated argmax on sqn_normalized) → 90/30-day rolling walk-forward refit → 1000-resample block-5 R-bootstrap pooled over WF OOS trades → cross-instrument generalize (expectancy_r).research/campaign-arc1.json(id490d14df…) — both variants × 4 instruments (GER40, US500, EURUSD, XAUUSD) × window 2018-01-01..2026-06-30, channel axes {24,48,96}², risk Vol{3, 2.0}, seed 0. 8 cells, 76 s wall.research/campaign-arc1-curves.json(idda886931…) — both variants at default params, taps persisted (equity, exposure, r_equity) for the page.
No cost block: all R figures are gross (net == gross).
Findings
- The gate reshapes the R-distribution, instrument-dependently (pooled
WF-OOS bootstrap, mean E[R] and P(E[R] ≤ 0)):
- GER40 flips sign: −0.151 (P≤0 = 0.90) → +0.139 (P≤0 = 0.18)
- US500 improves: +0.193 (0.10) → +0.205 (0.08)
- EURUSD deteriorates sharply: −0.150 (0.88) → −0.204 (0.99)
- XAUUSD roughly flat: +0.170 (0.14) → +0.124 (0.15) This is the conditional effect the research model looks for: B is not a uniform improvement, it is a per-instrument reshaping.
- No deployable edge. Best cell P(E[R] ≤ 0) ≈ 0.08 (US500 gated) — not significant against 8 comparisons; generalization worst-case is deeply negative for both variants with sign agreement 0/4; and all of it is gross of costs.
- Selection instability. The full-window IS argmax picks asymmetric channels (e.g. hi=96/lo=24) that wander across WF windows — the deflation and param-stability records show the screen overfitting the grid, which the WF/MC stages correctly deflate.
Verdict
Honest null on deployability; positive on the machinery and on the research question's shape: the conditional framing (B reshapes A) is measurable with the recorded artifacts alone (MC quantile bands per cell). Arc 2 candidates: a costed rerun (constant + vol-slippage cost blocks) to see what survives gross-to-net, an orthogonal conditioner (time-of-day / volatility tercile), or the same pair on coarser bars (H4).
Engine friction
None. The campaign path (process/campaign documents, three-tier validate,
aura campaign run as executor, persist_taps traces) carried the whole arc
on its first real use.