diff --git a/docs/project-layout.md b/docs/project-layout.md index 8f25a79..e52aba1 100644 --- a/docs/project-layout.md +++ b/docs/project-layout.md @@ -93,28 +93,34 @@ per-session consent. 2. **Claude** (via the skills pipeline) writes `nodes/third-candle-long/`, 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 - **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.) + --from 2020 --to 2024` → the strategy produces a broker-independent, unsized + **bias stream** (one signed, bounded `f64 ∈ [-1,+1]` per cycle — sign = direction, + magnitude = optional conviction). A downstream **risk-based executor** (stop-rule → + position-management, in **R**, the protective stop defining 1R) turns the bias into + tracked trades, and the **R-evaluator** integrates the per-trade R-outcomes into an + **R-expectancy / R-curve** — the signal's *quality*, measured account- and + instrument-agnostically in **R** (E[R], SQN), not currency. Optionally compose a + **cost model** — a C9 graph of cost nodes, in R (`net R = gross R − cost-in-R`) — to + draw the **net-R** curve beside the gross one. The run yields an R-metrics table + a + run record (manifest + metrics) under `runs/`. (Contract C10.) Money, a real broker, + and a currency curve are a later **live/deploy-edge** concern (the only reliable ground + truth, measured forward — never an authored historical "realistic broker"); the legacy + `SimBroker` pip yardstick survives only as an optional dual readout, not the model. 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 - strategies × these 3 instruments × {sim-optimal, pepperstone}". The matrix is - plain Rust loops, not a config schema (C20). `aura run experiments/compare` + strategies × these 3 instruments × {fixed-stop, vol-stop} risk-executors". The + matrix is plain Rust loops, not a config schema (C20). `aura run experiments/compare` bootstraps the matrix, fans the disjoint sims over all cores (C1), and writes the comparable runs to `runs/`. 5. **Compose:** "combine it with `momentum-filter` as a weighted sum" → Claude writes a composite node (fractal, C9). 6. **Walk-forward:** another experiment kind (rolling in-sample optimize + out-of-sample test) → an out-of-sample verdict. -7. **Freeze:** `aura freeze nodes/strategy-y --broker pepperstone - --out bots/strategy-y` → a standalone, statically-linked bot (C13). +7. **Freeze:** `aura freeze nodes/strategy-y --out bots/strategy-y` → a standalone, + statically-linked bot (C13); the live broker connection (e.g. cTrader Open API) is + bound at this **deploy edge** — the only place account money appears, measured forward + against a real venue, never an authored historical broker. 8. **Explore — `aura play`.** The playground plays *any* harness and shows what your **sinks** recorded (C22): live equity/signal streams while a run executes, and recorded traces + meta-views afterwards — stitched walk-forward