fieldtest: World/C21 milestone — 4 examples, 9 findings (functional promise holds)

Milestone-close validation of the World/C21 blueprint-data family surface, run
from the PUBLIC interface only (design ledger + op-script grammar; blueprints
authored as a consumer via `aura graph build`, no crates/ source read). Binary
built from 4710fcc.

The milestone's FUNCTIONAL PROMISE HOLDS (3 working findings): a consumer-authored
blueprint round-trips the whole verb family (graph build → list-axes → sweep →
rank → reproduce; walkforward → reproduce; mc → reproduce); all three FamilyKinds
(Sweep 4/4, MonteCarlo 5/5, WalkForward 3/3) reproduce bit-identically through the
one shared content-addressed store (the C18 core promise); list-axes→sweep→rank
composes and self-corrects.

Findings surfaced for follow-on (NOT fixed here — filed to the tracker): 2 bugs
(aura run on an open blueprint PANICS exit 101 instead of a clean exit-2 like mc;
closed→walkforward --axis prints the rejection twice), 2 friction (sweep-side
closed error terser than mc's exemplary message; mc reproduce lines omit the
seed), 2 spec-gaps (every open knob is mandatory on sweep but the docs frame
list-axes as a menu; the whole blueprint-data verb family is invisible from
`--help` / no README — empirically confirms #159). Detail per finding in the spec.

fieldtests/world-c21-milestone/ carries the op-scripts, authored blueprints,
captured outputs, and run_all.sh (regenerates the gitignored runs/ telemetry).

refs #170
This commit is contained in:
2026-07-01 17:00:54 +02:00
parent 4710fccf32
commit 780d823067
52 changed files with 358 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
# Milestone fieldtest — World/C21: run + orchestrate harness FAMILIES from
# blueprint-data. Driven entirely from the public surface (design ledger C24/C18/
# C21 + glossary + the documented op-script grammar). No source was read.
#
# Build first: cargo build --workspace (binary: target/debug/aura)
# Then: ./run_all.sh
set -u
BIN="${AURA_BIN:-../../target/debug/aura}"
echo "===================================================================="
echo "Scenario 1 — discover -> sweep -> list -> rank (OPEN blueprint)"
echo "===================================================================="
$BIN graph build < w1_open_crossover.ops.json > w1_open_crossover.bp.json
$BIN sweep w1_open_crossover.bp.json --list-axes # discover the 3 open knobs
# NOTE: every open knob is MANDATORY; a subset -> MissingKnob (see w4_4f).
$BIN sweep w1_open_crossover.bp.json \
--axis graph.fast.length=2,3 --axis graph.slow.length=5,10 --axis graph.bias.scale=0.5 \
--name w1_cross_sweep
$BIN runs families
$BIN runs family w1_cross_sweep-0 rank sqn_normalized
$BIN reproduce w1_cross_sweep-0 # 4/4 bit-identical
echo "===================================================================="
echo "Scenario 2 — walk-forward -> reproduce (CAPSTONE, OPEN blueprint)"
echo "===================================================================="
$BIN walkforward w1_open_crossover.bp.json \
--axis graph.fast.length=2,3 --axis graph.slow.length=5,10 --axis graph.bias.scale=0.5 \
--select argmax --name w2_wf
$BIN reproduce w2_wf-0 # 3/3 bit-identical
echo "===================================================================="
echo "Scenario 3 — monte-carlo -> reproduce (CLOSED blueprint)"
echo "===================================================================="
$BIN graph build < w3_closed_crossover.ops.json > w3_closed_crossover.bp.json
$BIN sweep w3_closed_crossover.bp.json --list-axes # empty: fully bound
$BIN mc w3_closed_crossover.bp.json --seeds 5 --name w3_mc
$BIN reproduce w3_mc-0 # 5/5 bit-identical
echo "===================================================================="
echo "Scenario 4 — cross-verb coherence + error actionability"
echo "===================================================================="
$BIN sweep w3_closed_crossover.bp.json --axis graph.fast.length=2,3 # 4a closed->sweep
$BIN mc w1_open_crossover.bp.json --seeds 3 # 4b open->mc (exemplary err)
$BIN walkforward w3_closed_crossover.bp.json --axis graph.fast.length=2,3 # 4c (dup diagnostic)
$BIN sweep w1_open_crossover.bp.json --axis graph.nonesuch.length=2 \
--axis graph.slow.length=5 --axis graph.bias.scale=0.5 # 4d unknown axis
$BIN reproduce no-such-family-99 # 4e unknown family
$BIN run w1_open_crossover.bp.json # 4 BUG: PANICS (exit 101)
@@ -0,0 +1 @@
{"family_id":"w1_cross_sweep-0","kind":"Sweep","members":4}
@@ -0,0 +1,3 @@
graph.fast.length:I64
graph.slow.length:I64
graph.bias.scale:F64
@@ -0,0 +1 @@
{"format_version":1,"blueprint":{"name":"graph","nodes":[{"primitive":{"type":"SMA","name":"fast"}},{"primitive":{"type":"SMA","name":"slow"}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias"}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}]}}
@@ -0,0 +1,12 @@
[
{"op": "source", "role": "price", "kind": "F64"},
{"op": "add", "type": "SMA", "name": "fast"},
{"op": "add", "type": "SMA", "name": "slow"},
{"op": "feed", "role": "price", "into": ["fast.series", "slow.series"]},
{"op": "add", "type": "Sub", "name": "sub"},
{"op": "connect", "from": "fast.value", "to": "sub.lhs"},
{"op": "connect", "from": "slow.value", "to": "sub.rhs"},
{"op": "add", "type": "Bias", "name": "bias"},
{"op": "connect", "from": "sub.value", "to": "bias.signal"},
{"op": "expose", "from": "bias.bias", "as": "bias"}
]
@@ -0,0 +1,4 @@
{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":0.2146800000000105,"max_drawdown":0.19279999999999503,"bias_sign_flips":2,"r":{"expectancy_r":0.515750880540302,"n_trades":3,"win_rate":0.6666666666666666,"avg_win_r":1.1439327691362082,"avg_loss_r":-0.7406128966515102,"profit_factor":3.089151631866538,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":0.6231985130629969,"sqn_normalized":0.6231985130629969,"net_expectancy_r":0.515750880540302,"conviction_terciles_r":[2.0771328641652427,0.21073267410717364,-0.7406128966515102]}}}
{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":3}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.0023866666666611386,"max_drawdown":0.208293333333331,"bias_sign_flips":2,"r":{"expectancy_r":0.03753199703966933,"n_trades":3,"win_rate":0.3333333333333333,"avg_win_r":1.127161364109783,"avg_loss_r":-0.5072826864953875,"profit_factor":1.1109795328290115,"max_r_drawdown":0.2739524763392649,"n_open_at_end":1,"sqn":0.0668754310632922,"sqn_normalized":0.0668754310632922,"net_expectancy_r":0.03753199703966933,"conviction_terciles_r":[-0.2739524763392649,1.127161364109783,-0.7406128966515102]}}}
{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":10}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.20921999999999025,"max_drawdown":0.34265999999999847,"bias_sign_flips":1,"r":{"expectancy_r":-0.34908675226620095,"n_trades":2,"win_rate":0.5,"avg_win_r":0.5474739899790243,"avg_loss_r":-1.2456474945114262,"profit_factor":0.4395095662226312,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":-0.389362076452283,"sqn_normalized":-0.389362076452283,"net_expectancy_r":-0.34908675226620095,"conviction_terciles_r":[0.0,0.0,0.0]}}}
{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":3}],["graph.slow.length",{"I64":10}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.339953333333338,"max_drawdown":0.3845266666666764,"bias_sign_flips":1,"r":{"expectancy_r":-0.34908675226620095,"n_trades":2,"win_rate":0.5,"avg_win_r":0.5474739899790243,"avg_loss_r":-1.2456474945114262,"profit_factor":0.4395095662226312,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":-0.389362076452283,"sqn_normalized":-0.389362076452283,"net_expectancy_r":-0.34908675226620095,"conviction_terciles_r":[0.0,0.0,0.0]}}}
@@ -0,0 +1,5 @@
w1_cross_sweep-0 member graph.fast.length=2, graph.slow.length=5, graph.bias.scale=0.5 reproduced: bit-identical
w1_cross_sweep-0 member graph.fast.length=2, graph.slow.length=10, graph.bias.scale=0.5 reproduced: bit-identical
w1_cross_sweep-0 member graph.fast.length=3, graph.slow.length=5, graph.bias.scale=0.5 reproduced: bit-identical
w1_cross_sweep-0 member graph.fast.length=3, graph.slow.length=10, graph.bias.scale=0.5 reproduced: bit-identical
reproduced 4/4 members bit-identically
@@ -0,0 +1 @@
aura: MissingKnob("graph.bias.scale")
@@ -0,0 +1,4 @@
{"family_id":"w1_cross_sweep-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":0.2146800000000105,"max_drawdown":0.19279999999999503,"bias_sign_flips":2,"r":{"expectancy_r":0.515750880540302,"n_trades":3,"win_rate":0.6666666666666666,"avg_win_r":1.1439327691362082,"avg_loss_r":-0.7406128966515102,"profit_factor":3.089151631866538,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":0.6231985130629969,"sqn_normalized":0.6231985130629969,"net_expectancy_r":0.515750880540302,"conviction_terciles_r":[2.0771328641652427,0.21073267410717364,-0.7406128966515102]}}}}
{"family_id":"w1_cross_sweep-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":10}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.20921999999999025,"max_drawdown":0.34265999999999847,"bias_sign_flips":1,"r":{"expectancy_r":-0.34908675226620095,"n_trades":2,"win_rate":0.5,"avg_win_r":0.5474739899790243,"avg_loss_r":-1.2456474945114262,"profit_factor":0.4395095662226312,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":-0.389362076452283,"sqn_normalized":-0.389362076452283,"net_expectancy_r":-0.34908675226620095,"conviction_terciles_r":[0.0,0.0,0.0]}}}}
{"family_id":"w1_cross_sweep-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":3}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.0023866666666611386,"max_drawdown":0.208293333333331,"bias_sign_flips":2,"r":{"expectancy_r":0.03753199703966933,"n_trades":3,"win_rate":0.3333333333333333,"avg_win_r":1.127161364109783,"avg_loss_r":-0.5072826864953875,"profit_factor":1.1109795328290115,"max_r_drawdown":0.2739524763392649,"n_open_at_end":1,"sqn":0.0668754310632922,"sqn_normalized":0.0668754310632922,"net_expectancy_r":0.03753199703966933,"conviction_terciles_r":[-0.2739524763392649,1.127161364109783,-0.7406128966515102]}}}}
{"family_id":"w1_cross_sweep-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":3}],["graph.slow.length",{"I64":10}],["graph.bias.scale",{"F64":0.5}]],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.339953333333338,"max_drawdown":0.3845266666666764,"bias_sign_flips":1,"r":{"expectancy_r":-0.34908675226620095,"n_trades":2,"win_rate":0.5,"avg_win_r":0.5474739899790243,"avg_loss_r":-1.2456474945114262,"profit_factor":0.4395095662226312,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":-0.389362076452283,"sqn_normalized":-0.389362076452283,"net_expectancy_r":-0.34908675226620095,"conviction_terciles_r":[0.0,0.0,0.0]}}}}
@@ -0,0 +1,4 @@
w2_wf-0 member graph.fast.length=2, graph.slow.length=5, graph.bias.scale=0.5 reproduced: bit-identical
w2_wf-0 member graph.fast.length=2, graph.slow.length=5, graph.bias.scale=0.5 reproduced: bit-identical
w2_wf-0 member graph.fast.length=2, graph.slow.length=10, graph.bias.scale=0.5 reproduced: bit-identical
reproduced 3/3 members bit-identically
+4
View File
@@ -0,0 +1,4 @@
{"family_id":"w2_wf-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[25,36],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","selection":{"selection_metric":"sqn_normalized","n_trials":4,"raw_winner_metric":0.8444293887137961,"mode":"Argmax","deflated_score":0.8444293887137961,"overfit_probability":0.000999000999000999,"n_resamples":1000,"block_len":5,"seed":3740379117},"topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.029682254132962535,"max_drawdown":0.0442303121080338,"bias_sign_flips":2,"r":{"expectancy_r":0.01050668114243935,"n_trades":3,"win_rate":0.6666666666666666,"avg_win_r":0.09881344876754977,"avg_loss_r":-0.1661068541077815,"profit_factor":1.1897576327998223,"max_r_drawdown":0.1661068541077815,"n_open_at_end":1,"sqn":0.11861590656751105,"sqn_normalized":0.11861590656751105,"net_expectancy_r":0.01050668114243935,"conviction_terciles_r":[0.11079586598682767,-0.1661068541077815,0.08683103154827189]}}}}
{"family_id":"w2_wf-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":5}],["graph.bias.scale",{"F64":0.5}]],"window":[37,48],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","selection":{"selection_metric":"sqn_normalized","n_trials":4,"raw_winner_metric":-2.17811914776625,"mode":"Argmax","deflated_score":-2.2204163800380603,"overfit_probability":1.0,"n_resamples":1000,"block_len":5,"seed":3740379117},"topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.07698666016143554,"max_drawdown":0.07698666016143554,"bias_sign_flips":2,"r":{"expectancy_r":-0.3935692692179748,"n_trades":3,"win_rate":0.3333333333333333,"avg_win_r":0.38656029975355716,"avg_loss_r":-0.7836340537037407,"profit_factor":0.24664592989963363,"max_r_drawdown":0.7927601270548278,"n_open_at_end":1,"sqn":-1.0088923276440807,"sqn_normalized":-1.0088923276440807,"net_expectancy_r":-0.3935692692179748,"conviction_terciles_r":[0.38656029975355716,-0.7927601270548277,-0.7745079803526537]}}}}
{"family_id":"w2_wf-0","report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[["graph.fast.length",{"I64":2}],["graph.slow.length",{"I64":10}],["graph.bias.scale",{"F64":0.5}]],"window":[49,60],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","selection":{"selection_metric":"sqn_normalized","n_trials":4,"raw_winner_metric":-0.43277394607057,"mode":"Argmax","deflated_score":-1.0185052275567759,"overfit_probability":1.0,"n_resamples":1000,"block_len":5,"seed":3740379117},"topology_hash":"597d719b7ac607158cda3e68cd497387620397a5e93087e23da512876dafba9a"},"metrics":{"total_pips":-0.02907021601207918,"max_drawdown":0.02907021601207918,"bias_sign_flips":0,"r":{"expectancy_r":-0.5505542307007089,"n_trades":1,"win_rate":0.0,"avg_win_r":0.0,"avg_loss_r":-0.5505542307007089,"profit_factor":-0.0,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":0.0,"sqn_normalized":0.0,"net_expectancy_r":-0.5505542307007089,"conviction_terciles_r":[0.0,0.0,0.0]}}}}
{"walkforward":{"oos_r":{"avg_loss_r":-0.5709822980539929,"avg_win_r":0.1947290657628856,"conviction_terciles_r":[0.0,0.0,0.0],"expectancy_r":-0.24282028498961644,"max_r_drawdown":1.8105378609141427,"n_open_at_end":0,"n_trades":7,"net_expectancy_r":-0.24282028498961644,"profit_factor":0.25578165876580955,"sqn":-1.3720083218957762,"sqn_normalized":-1.3720083218957762,"win_rate":0.42857142857142855},"param_stability":[{"mean":2.0,"p25":2.0,"p5":2.0,"p50":2.0,"p75":2.0,"p95":2.0},{"mean":6.666666666666667,"p25":5.0,"p5":5.0,"p50":5.0,"p75":7.5,"p95":9.5},{"mean":0.5,"p25":0.5,"p5":0.5,"p50":0.5,"p75":0.5,"p95":0.5}],"stitched_total_pips":0.0,"windows":3}}
@@ -0,0 +1 @@
{"format_version":1,"blueprint":{"name":"graph","nodes":[{"primitive":{"type":"SMA","name":"fast","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":2}}]}},{"primitive":{"type":"SMA","name":"slow","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":4}}]}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias","bound":[{"pos":0,"name":"scale","kind":"F64","value":{"F64":0.5}}]}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}]}}
@@ -0,0 +1,12 @@
[
{"op": "source", "role": "price", "kind": "F64"},
{"op": "add", "type": "SMA", "name": "fast", "bind": {"length": {"I64": 2}}},
{"op": "add", "type": "SMA", "name": "slow", "bind": {"length": {"I64": 4}}},
{"op": "feed", "role": "price", "into": ["fast.series", "slow.series"]},
{"op": "add", "type": "Sub", "name": "sub"},
{"op": "connect", "from": "fast.value", "to": "sub.lhs"},
{"op": "connect", "from": "slow.value", "to": "sub.rhs"},
{"op": "add", "type": "Bias", "name": "bias", "bind": {"scale": {"F64": 0.5}}},
{"op": "connect", "from": "sub.value", "to": "bias.signal"},
{"op": "expose", "from": "bias.bias", "as": "bias"}
]
+6
View File
@@ -0,0 +1,6 @@
{"family_id":"w3_mc-0","seed":1,"report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,60],"seed":1,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":-0.08581949682071963,"max_drawdown":0.1782160409053034,"bias_sign_flips":16,"r":{"expectancy_r":-0.12761687270091654,"n_trades":17,"win_rate":0.29411764705882354,"avg_win_r":0.9422351195309215,"avg_loss_r":-0.5733885361308491,"profit_factor":0.684697969583447,"max_r_drawdown":5.084202573801676,"n_open_at_end":1,"sqn":-0.5709680662988649,"sqn_normalized":-0.5709680662988649,"net_expectancy_r":-0.12761687270091654,"conviction_terciles_r":[-0.5315147387933803,0.07491264421171377,0.006435165463506309]}}}}
{"family_id":"w3_mc-0","seed":2,"report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,60],"seed":2,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":-0.09465506366012477,"max_drawdown":0.14566471662215458,"bias_sign_flips":21,"r":{"expectancy_r":-0.1955399496066683,"n_trades":23,"win_rate":0.2608695652173913,"avg_win_r":0.8069365813559868,"avg_loss_r":-0.5493551958287819,"profit_factor":0.5184280562437801,"max_r_drawdown":5.678578478310644,"n_open_at_end":1,"sqn":-1.256408534576408,"sqn_normalized":-1.256408534576408,"net_expectancy_r":-0.1955399496066683,"conviction_terciles_r":[-0.14554052889979213,-0.3686624230732036,-0.0661669692586496]}}}}
{"family_id":"w3_mc-0","seed":3,"report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,60],"seed":3,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":-0.1458394558178947,"max_drawdown":0.18901416622571146,"bias_sign_flips":17,"r":{"expectancy_r":-0.19288571424888643,"n_trades":18,"win_rate":0.2777777777777778,"avg_win_r":0.6783848238535024,"avg_loss_r":-0.5279897673651899,"profit_factor":0.49417101631666377,"max_r_drawdown":5.505838374215854,"n_open_at_end":1,"sqn":-1.1554023132748366,"sqn_normalized":-1.1554023132748366,"net_expectancy_r":-0.19288571424888643,"conviction_terciles_r":[-0.10609643833726563,-0.3594422393970695,-0.11311846501232425]}}}}
{"family_id":"w3_mc-0","seed":4,"report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,60],"seed":4,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":-0.007137445429146379,"max_drawdown":0.0743086741823305,"bias_sign_flips":15,"r":{"expectancy_r":-0.07823191112894709,"n_trades":16,"win_rate":0.3125,"avg_win_r":1.09899031269056,"avg_loss_r":-0.6133329219559956,"profit_factor":0.8144696515391392,"max_r_drawdown":3.291640293181073,"n_open_at_end":1,"sqn":-0.31198614113195705,"sqn_normalized":-0.31198614113195705,"net_expectancy_r":-0.07823191112894709,"conviction_terciles_r":[-0.03355532359322373,-0.09249635589718175,-0.10357536343518768]}}}}
{"family_id":"w3_mc-0","seed":5,"report":{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,60],"seed":5,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":-0.05516687451601755,"max_drawdown":0.10049029278117855,"bias_sign_flips":21,"r":{"expectancy_r":-0.13824742850239835,"n_trades":22,"win_rate":0.36363636363636365,"avg_win_r":0.7288739517681235,"avg_loss_r":-0.6337453600855538,"profit_factor":0.6572030775170173,"max_r_drawdown":3.882156009122663,"n_open_at_end":1,"sqn":-0.7376556894251807,"sqn_normalized":-0.7376556894251807,"net_expectancy_r":-0.13824742850239835,"conviction_terciles_r":[-0.23289767226966626,-0.013422680153997594,-0.16465012001088963]}}}}
{"mc_aggregate":{"bias_sign_flips":{"mean":18.0,"p25":16.0,"p5":15.2,"p50":17.0,"p75":21.0,"p95":21.0},"max_drawdown":{"mean":0.1375387781433357,"p25":0.10049029278117855,"p5":0.07954499790210011,"p50":0.14566471662215458,"p75":0.1782160409053034,"p95":0.18685454116162986},"total_pips":{"mean":-0.07772366724878062,"p25":-0.09465506366012477,"p5":-0.1356025773863407,"p50":-0.08581949682071963,"p75":-0.05516687451601755,"p95":-0.016743331246520624}}}
@@ -0,0 +1,6 @@
w3_mc-0 member reproduced: bit-identical
w3_mc-0 member reproduced: bit-identical
w3_mc-0 member reproduced: bit-identical
w3_mc-0 member reproduced: bit-identical
w3_mc-0 member reproduced: bit-identical
reproduced 5/5 members bit-identically
@@ -0,0 +1 @@
{"manifest":{"commit":"4710fccf320e1f1fb4811c061b1ea0390d8b17ba","params":[],"window":[1,18],"seed":0,"broker":"sim-optimal+risk-executor(pip_size=0.0001)","topology_hash":"c485dfbd2a24f896f97dd05750c1237843dc324400d350dbe8a5de8447a67d39"},"metrics":{"total_pips":0.34185000000002036,"max_drawdown":0.11139999999998655,"bias_sign_flips":2,"r":{"expectancy_r":1.2710005136982836,"n_trades":3,"win_rate":1.0,"avg_win_r":1.2710005136982836,"avg_loss_r":0.0,"profit_factor":0.0,"max_r_drawdown":0.0,"n_open_at_end":1,"sqn":3.141496526818299,"sqn_normalized":3.141496526818299,"net_expectancy_r":1.2710005136982836,"conviction_terciles_r":[0.9285858482198718,2.0771328641652427,0.8072828287097363]}}}
@@ -0,0 +1 @@
aura: UnknownKnob("graph.fast.length")
@@ -0,0 +1 @@
2
@@ -0,0 +1 @@
aura: mc requires a closed blueprint (no free parameters); 3 free knob(s) — bind them or use `aura sweep --axis`
@@ -0,0 +1 @@
2
@@ -0,0 +1,2 @@
aura: UnknownKnob("graph.fast.length")
aura: UnknownKnob("graph.fast.length
@@ -0,0 +1 @@
2
@@ -0,0 +1 @@
aura: UnknownKnob("graph.nonesuch.length")
@@ -0,0 +1 @@
2
@@ -0,0 +1 @@
aura: no such family 'no-such-family-99'
@@ -0,0 +1 @@
2
@@ -0,0 +1 @@
aura: MissingKnob("graph.bias.scale")
@@ -0,0 +1 @@
2
@@ -0,0 +1,4 @@
thread 'main' (1296536) panicked at crates/aura-cli/src/main.rs:3107:10:
signal binds + wraps to a valid harness: ParamArity { expected: 3, got: 0 }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
@@ -0,0 +1 @@
run-open EXIT 101
@@ -0,0 +1,22 @@
Add
And
Bias
CarryCost
ConstantCost
Delay
EMA
EqConst
FixedStop
Gt
Latch
LongOnly
Mul
PositionManagement
Resample
RollingMax
RollingMin
Sizer
SMA
Sqrt
Sub
VolSlippageCost