Files
Brummel f95de8fcc2 fieldtest: milestone verb-dissolution — 3 scenarios, 8 findings
Milestone-close fieldtest for "Verb dissolution" (#210), authored from the
public interface only. Three end-to-end scenarios over the real GER40/USDJPY
2025 archive:
  1. all four dissolved verbs on the r-sma real path (sweep via blueprint;
     generalize/walkforward/mc via --strategy) — correct + deterministic;
  2. reach-through — `aura generalize` auto-registers a campaign+process
     document and `aura campaign run <id>` reproduces worst_case byte-for-byte;
  3. a hand-authored 2-instrument × 2-window × 2-regime matrix (8 cells → 4
     generalizations) no verb can express — regimes compared, never argmax'd.

Result: 0 bugs; the core promise holds empirically (behaviour preservation,
campaign-substrate reach-through, and the risk-regime axis all confirmed).
Residual findings are discoverability/ergonomics follow-ups, filed as #216
(risk-axis discoverability), #217 (verb knob asymmetry), #218 (no-project
store litter). The friction-and-bug spec stays a git-ignored working file.
2026-07-07 10:48:17 +02:00

4 lines
3.8 KiB
Plaintext

{"family_id":"18844db5-0-GER40-w0-r0-s0-1","report":{"manifest":{"commit":"2a7caa6e38bbd7768ad8ef1a4bc5a745f1122e34","params":[["sma_signal.fast.length",{"I64":5}],["sma_signal.slow.length",{"I64":20}],["stop_length",{"I64":14}],["stop_k",{"F64":2.0}]],"window":[1735689600000000000,1751328000000000000],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=1)","instrument":"GER40","topology_hash":"546f4838aca6b0bf67140b5868b4aba18fdc53be57e6cca28bf23588fbf68027","project":{"namespace":"mvd_lab","dylib_sha256":"5d344b782a69518e1dcdaec3dc7de1c674f0a4cc8b381b3200f22b20681107c5","commit":"2a7caa6e38bbd7768ad8ef1a4bc5a745f1122e34-dirty"}},"metrics":{"total_pips":18233000.000000946,"max_drawdown":31101689.99998994,"bias_sign_flips":9458,"r":{"expectancy_r":0.020714763278940063,"n_trades":11954,"win_rate":0.3347833361218002,"avg_win_r":1.9163637943202063,"avg_loss_r":-0.9333077998784003,"profit_factor":1.0333650637863112,"max_r_drawdown":275.50659414385825,"n_open_at_end":1,"sqn":1.0064752069572405,"sqn_normalized":0.09205480352174625,"net_expectancy_r":0.020714763278940063,"conviction_terciles_r":[0.021638082552302703,0.05122661182958574,-0.010720172846380115]}}}}
{"family_id":"18844db5-0-USDJPY-w0-r0-s0-1","report":{"manifest":{"commit":"2a7caa6e38bbd7768ad8ef1a4bc5a745f1122e34","params":[["sma_signal.fast.length",{"I64":5}],["sma_signal.slow.length",{"I64":20}],["stop_length",{"I64":14}],["stop_k",{"F64":2.0}]],"window":[1735689600000000000,1751328000000000000],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.01)","instrument":"USDJPY","topology_hash":"546f4838aca6b0bf67140b5868b4aba18fdc53be57e6cca28bf23588fbf68027","project":{"namespace":"mvd_lab","dylib_sha256":"5d344b782a69518e1dcdaec3dc7de1c674f0a4cc8b381b3200f22b20681107c5","commit":"2a7caa6e38bbd7768ad8ef1a4bc5a745f1122e34-dirty"}},"metrics":{"total_pips":-54188.85299999609,"max_drawdown":58066.20499999583,"bias_sign_flips":11638,"r":{"expectancy_r":-0.02015289368686083,"n_trades":14927,"win_rate":0.34353855429758157,"avg_win_r":1.7575394349373088,"avg_loss_r":-0.9504525427515395,"profit_factor":0.9677003547760925,"max_r_drawdown":397.3583054736529,"n_open_at_end":1,"sqn":-1.0814412470315609,"sqn_normalized":-0.08851495715635345,"net_expectancy_r":-0.02015289368686083,"conviction_terciles_r":[0.02290410840773472,-0.028150331805494457,-0.0552038047283186]}}}}
{"campaign_run":{"campaign":"18844db5ee31af117fa9f3ed405a11e62f8d99f9795097d22e4f8b4002c4317e","process":"87851fd8c2fd1a42fe48f921c44db6026b67d67a50d3a708783e454552f677ce","run":1,"seed":0,"cells":[{"strategy":"546f4838aca6b0bf67140b5868b4aba18fdc53be57e6cca28bf23588fbf68027","instrument":"GER40","window_ms":[1735689600000,1751328000000],"stages":[{"block":"std::sweep","family_id":"18844db5-0-GER40-w0-r0-s0-1","selection":{"winner_ordinal":0,"params":[["fast.length",{"I64":5}],["slow.length",{"I64":20}]],"selection":{"selection_metric":"expectancy_r","n_trials":1,"raw_winner_metric":0.020714763278940063,"mode":"Argmax"}}}]},{"strategy":"546f4838aca6b0bf67140b5868b4aba18fdc53be57e6cca28bf23588fbf68027","instrument":"USDJPY","window_ms":[1735689600000,1751328000000],"stages":[{"block":"std::sweep","family_id":"18844db5-0-USDJPY-w0-r0-s0-1","selection":{"winner_ordinal":0,"params":[["fast.length",{"I64":5}],["slow.length",{"I64":20}]],"selection":{"selection_metric":"expectancy_r","n_trials":1,"raw_winner_metric":-0.02015289368686083,"mode":"Argmax"}}}]}],"generalizations":[{"strategy_ordinal":0,"window_ordinal":0,"regime_ordinal":0,"generalization":{"selection_metric":"expectancy_r","n_instruments":2,"worst_case":-0.02015289368686083,"sign_agreement":1,"per_instrument":[["GER40",0.020714763278940063],["USDJPY",-0.02015289368686083]]},"winners":[["GER40",[["fast.length",{"I64":5}],["slow.length",{"I64":20}]]],["USDJPY",[["fast.length",{"I64":5}],["slow.length",{"I64":20}]]]]}]}}