research: Arc 1 — trend regime vs H1 breakout, campaign path, results page
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.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# 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` (id `490d14df…`) — 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` (id `da886931…`) — 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
|
||||
|
||||
1. **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.
|
||||
2. **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.
|
||||
3. **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.
|
||||
Reference in New Issue
Block a user