Currency metrics + net_currency_pnl ranking (+ serde(default) back-compat) #121
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Extend
RunMetrics(aura-engine/src/report.rs) with currency-aware fields, computed as a post-run reduction over the new currency-equity tap + the position-event table:net_currency_pnl(last currency-equity value)currency_max_drawdownn_trades(true round-trip count from the position-event table — the real turnover signal that supersedes theexposure_sign_flipsproxy)total_cost(sum of spread + commission)Mandatory back-compat fix: every new field gets
#[serde(default)].Registry::load(aura-registry/src/lib.rs:72) parses every historicalruns.jsonlline intoRunMetrics; without#[serde(default)]a bare new field breaks deserialization of all existing run records (C18). The existing compat module only rewrites the params wire-shape, so the default attribute is the actual fix.Add a
metric_cmparm (aura-registry) sooptimize/rank_byacceptnet_currency_pnl(higher-is-better). Keep the sim-optimal pip metrics unchanged for signal-quality comparison.Not in this issue: flipping the optimizer DEFAULT objective to net-currency is a separate, explicitly-ratified step (audit-drift event under C18) — keep
total_pipsthe default,net_currency_pnlopt-in.depends on: derive (I3, for n_trades), RealisticBroker (I4, for currency equity)
context: delivers "optimize net of real cost" — the milestone's motivation.
Superseded by the 2026-06-28 C10 rework (ledger commit
29cdc8c): the realistic-broker / currency model is retired (real friction is not historically knowable). Cost in research is now a composable cost-model graph in R (the net-R curve); money / a real broker move to a separate live/deploy edge. See #116 (summary), #148 (cost-model graph), #149 (live/deploy edge). Closing as superseded.