dff99c93e4
Milestone-close gate for "Cost-model graph (in R)" (#148). The fieldtester exercised the milestone capability end-to-end from the public CLI only (no implementation source), on the stage1-r harness, against ledger C10 + the glossary. Roll-up: friction_found — 0 capability bugs; the milestone promise is empirically delivered: - bare gross-R run is clean (net == gross, no cost forced); - per-trade cost: gross pinned, net drops strictly/monotonically, net_r_equity tap persists; - the capstone per-held-cycle carry BLEEDS the net-R curve continuously over a hold (the gross-net gap grows 0.367 -> 0.734 -> 1.101 -> 1.468 across one hold, vs the per-trade run's flat 0.367) — the holding-cost shape change, observable end-to-end; - composition is exact-additive (the composed drag equals the sum of the single-cost drags to the last ULP) and `aura chart` renders the real net_r_equity series. Evidence under fieldtests/milestone-cost-model-graph/ (run_scenarios.sh + captured_outputs.txt + traces/ + the charted bleed + FINDINGS.md). Non-blocking findings filed forward (none gates the close): - cost-flag CLI ergonomics — units hint, negative-rate diagnostic, non-R-harness no-op + a C10 spec_gap -> #153; - docs/project-layout.md describes the retired `aura backtest --broker` path and omits the cost flags -> folded into #151. refs #148
28 lines
1.6 KiB
Plaintext
28 lines
1.6 KiB
Plaintext
### Scenario 1 — bare gross-R, NO cost model (the zero-cost floor)
|
|
"expectancy_r":1.2710005136982836
|
|
"net_expectancy_r":1.2710005136982836
|
|
|
|
### Scenario 2 — flat per-trade cost (ConstantCost, deduct AT CLOSE)
|
|
# gross expectancy_r is fixed; net_expectancy_r drops monotonically with cost:
|
|
--cost-per-trade 0.0001 -> "expectancy_r":1.2710005136982836 "net_expectancy_r":1.240221293571332
|
|
--cost-per-trade 0.001 -> "expectancy_r":1.2710005136982836 "net_expectancy_r":0.9632083124287688
|
|
--cost-per-trade 0.01 -> "expectancy_r":1.2710005136982836 "net_expectancy_r":-1.8069214989968643
|
|
|
|
### Scenario 3 — per-HELD-CYCLE carry (CarryCost, ACCRUE over the hold) — the capstone
|
|
"expectancy_r":1.2710005136982836
|
|
"net_expectancy_r":-0.2679604926492904
|
|
|
|
### Scenario 4 — compose all three costs into ONE net-R curve
|
|
slip-vol-mult 0.5 alone -> "expectancy_r":1.2710005136982836 "net_expectancy_r":0.5539636994248766
|
|
cost-per-trade 0.001 alone -> "expectancy_r":1.2710005136982836 "net_expectancy_r":0.9632083124287688
|
|
carry-per-cycle 0.001 alone -> "expectancy_r":1.2710005136982836 "net_expectancy_r":-0.2679604926492904
|
|
ALL THREE composed -> "expectancy_r":1.2710005136982836 "net_expectancy_r":-1.2927895081922123
|
|
|
|
### Chart the bleed (self-contained HTML, series baked in):
|
|
./target/debug/aura chart carry_cost --tap net_r_equity > chart_carry_net_r_equity.html
|
|
|
|
### Probes (robustness + foot-guns)
|
|
negative carry rate -> exit=2 (guard: refused)
|
|
cost flag on --harness sma (no R block) -> "total_pips":-0.13000000000001358
|
|
^ exit=0, cost flag SILENTLY IGNORED (no net block, no warning)
|