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:
2026-07-13 16:23:51 +02:00
parent 221c408ac7
commit cdd4503164
10 changed files with 1414 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
{
"format_version": 1,
"kind": "campaign",
"name": "arc1-curves",
"description": "Trace companion to arc1-breakout-trend: both variants at their default parameters (channel 24/24, EMA 12/48) over the full window, persisting equity/exposure/r_equity curves for the results page. Default params isolate the gate's effect on the curve shape.",
"seed": 0,
"data": {
"instruments": ["GER40", "US500", "EURUSD", "XAUUSD"],
"windows": [ { "from_ms": 1514764800000, "to_ms": 1782863999999 } ]
},
"risk": [ { "vol": { "length": 3, "k": 2.0 } } ],
"strategies": [
{
"ref": { "content_id": "82515a31bfe58ae087b4bd09eb4adb032cc2cabddd71a2761c543066bd237d3d" },
"axes": { "channel_hi.length": { "kind": "I64", "values": [24] } }
},
{
"ref": { "content_id": "82d61d13bf21984068d6fd3ae9de9766fe99edb5163ea50ffb3485bfae9f56bc" },
"axes": { "channel_hi.length": { "kind": "I64", "values": [24] } }
}
],
"process": { "ref": { "content_id": "476752f5af365c85be3e5bd6265e5503040fc691ac548c0bd42e67714110e05f" } },
"presentation": { "persist_taps": ["equity", "exposure", "r_equity"], "emit": [] }
}
+30
View File
@@ -0,0 +1,30 @@
{
"format_version": 1,
"kind": "campaign",
"name": "arc1-breakout-trend",
"description": "Arc 1 experiment intent: does an EMA trend regime reshape the H1 breakout's R-distribution? Both variants run over the identical data/window/risk/seed matrix; the comparison is per-cell.",
"seed": 0,
"data": {
"instruments": ["GER40", "US500", "EURUSD", "XAUUSD"],
"windows": [ { "from_ms": 1514764800000, "to_ms": 1782863999999 } ]
},
"risk": [ { "vol": { "length": 3, "k": 2.0 } } ],
"strategies": [
{
"ref": { "content_id": "82515a31bfe58ae087b4bd09eb4adb032cc2cabddd71a2761c543066bd237d3d" },
"axes": {
"channel_hi.length": { "kind": "I64", "values": [24, 48, 96] },
"channel_lo.length": { "kind": "I64", "values": [24, 48, 96] }
}
},
{
"ref": { "content_id": "82d61d13bf21984068d6fd3ae9de9766fe99edb5163ea50ffb3485bfae9f56bc" },
"axes": {
"channel_hi.length": { "kind": "I64", "values": [24, 48, 96] },
"channel_lo.length": { "kind": "I64", "values": [24, 48, 96] }
}
}
],
"process": { "ref": { "content_id": "41863fcae9300b334056c6f2a899e8c2672ecb29387d294e9a6e58f159ef51b4" } },
"presentation": { "persist_taps": [], "emit": ["selection_report"] }
}
+9
View File
@@ -0,0 +1,9 @@
{
"format_version": 1,
"kind": "process",
"name": "curves-sweep",
"description": "Trace producer: a terminal selection-free sweep whose members persist their tap curves (equity, exposure, r_equity) for the results page.",
"pipeline": [
{ "block": "std::sweep" }
]
}
+12
View File
@@ -0,0 +1,12 @@
{
"format_version": 1,
"kind": "process",
"name": "screen-wf-mc-generalize",
"description": "Arc 1 methodology: full-window screen (deflated argmax on sqn_normalized), 90/30-day rolling walk-forward refit, pooled-OOS R-bootstrap, cross-instrument generalization floor.",
"pipeline": [
{ "block": "std::sweep", "metric": "sqn_normalized", "select": "argmax", "deflate": true },
{ "block": "std::walk_forward", "in_sample_ms": 7776000000, "out_of_sample_ms": 2592000000, "step_ms": 2592000000, "mode": "rolling", "metric": "sqn_normalized", "select": "argmax" },
{ "block": "std::monte_carlo", "resamples": 1000, "block_len": 5 },
{ "block": "std::generalize", "metric": "expectancy_r" }
]
}