design(C10): reframe strategy output to intent/exposure stream; position table becomes a derived layer
The DAG expresses exactly one state at time t and a node emits at most one record per eval (C8), so a *sequence* of position events — where one decision instant (a stop-and-reverse) needs a close AND an open at the same event_ts — cannot be the DAG's per-cycle output without violating C8. The state the DAG can express faithfully is the desired exposure (one value per cycle); the buy/sell/close events are its first difference, a derived consequence. C10 is reframed accordingly: the strategy's primary, backtestable output is an intent/exposure stream (one signed, bounded f64 in [-1,+1] per cycle). Signal quality is measured by the sim-optimal broker integrating exposure*return into a synthetic pip-equity curve. The broker-independent position-event table survives as a decoupled, derivable, downstream position-management layer (computed table, not a per-eval output) feeding realistic broker nodes for viability/deploy — no longer the DAG output nor the signal-quality measure. Touches the ledger contract (INDEX.md C10 + provenance/milestone/C20 ancillary), the always-loaded summary (CLAUDE.md invariant #7), the glossary (broker, equity stream, position table, realistic broker, signal, sim-optimal broker, strategy reframed + new exposure-stream entry), and the north-star layout doc. Sealed specs/plans (0001-0006) left as historical record. refs #4 #5 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -77,13 +77,14 @@ per-session consent.
|
||||
implements `schema` + `eval` against `aura-core`.
|
||||
3. **Backtest:** `aura backtest nodes/third-candle-long --symbol GER40
|
||||
--from 2020 --to 2024` → the strategy produces a broker-independent
|
||||
**position table** (open/close events); the default **sim-optimal broker**
|
||||
projects it into a synthetic **pip**-equity, yielding a metrics table
|
||||
(trades, hit-rate, pip-P&L, max-DD, Sharpe) + a run record (manifest +
|
||||
metrics) under `runs/`. Brokers are consumer **nodes**, and several can be
|
||||
attached at once: add `--broker pepperstone` to get a realistic currency
|
||||
curve *alongside* the default sim-optimal pip curve — two comparable equity
|
||||
curves from the same position table. (Contract C10.)
|
||||
**exposure stream** (one bounded signed value per cycle = intent); the default
|
||||
**sim-optimal broker** integrates `exposure·return` into a synthetic
|
||||
**pip**-equity — the signal's *quality* — yielding a metrics table
|
||||
(pip-P&L, max-DD, Sharpe) + a run record (manifest + metrics) under `runs/`.
|
||||
Brokers are consumer **nodes**: the sim-optimal one reads the exposure stream
|
||||
directly, while a realistic broker reads the *derived* position-event table —
|
||||
add `--broker pepperstone` to get a realistic currency curve *alongside* the
|
||||
sim-optimal pip curve, two comparable equity curves. (Contract C10.)
|
||||
4. **Sweep / Monte-Carlo / matrix — a Rust experiment.** Anything beyond a
|
||||
single backtest is an *experiment* in `experiments/` (Rust, builder API): a
|
||||
parameter sweep, Monte-Carlo over seeds, or a structural matrix like "these 10
|
||||
|
||||
Reference in New Issue
Block a user