Edge research: prove a real tradeable edge
Why this milestone exists (motivation)
Aura can do a lot on paper — deterministic, massively-parallel backtests,
fractal composition, sweep / Monte-Carlo / walk-forward validation — but
none of it had ever been pointed at its actual purpose: finding a
genuinely profitable algorithmic strategy. The user has spent years
without a single live-profitable bot; every attempt failed live. The
working thesis behind Aura is that those failures were backtests that
lied — overfit, look-ahead leakage, cost-blind, one-regime flukes — and
that Aura's structural guarantees (look-ahead made impossible per C2,
determinism + walk-forward + Monte-Carlo) make it a lie-detector for
backtests: it cannot manufacture alpha, but it can give a truthful
verdict fast.
This milestone is the first real-world test of that thesis on two levels at
once: use Aura to search candidate strategies and either prove an edge or
honestly kill it, and in doing so test whether Aura itself is fit for
its purpose (a real-world shake-out of the engine).
Success is not a guaranteed profit. Success is a truthful per-candidate
verdict with look-ahead structurally impossible and out-of-sample
validation. A candidate that survives OOS + Monte-Carlo + costs across
several symbols is a real signal; most candidates will fail honestly, and
that is the apparatus working — not a setback.
Tradeable universe (low transaction cost only — user-set)
DAX = GER40, Nasdaq = NAS100, FX majors EURUSD, GBPUSD, USDJPY,
USDCHF, USDCAD, NZDUSD (AUDUSD is absent from the data server). All other
server symbols may be read as signal inputs but never traded. Data: M1
(ZIP-packed .bin), ~12 y for the indices (2014-08 → 2026-06), ~15 y for
the FX majors (2011-03 → 2026-06).
Methodology — the discipline that breaks the 5-year pattern
- Out-of-sample from the start — never tune on the test set.
- Walk-forward + Monte-Carlo as the default, not the exception.
- Few parameters, large data — every knob is an overfit dimension.
- Cross-symbol / cross-regime generalization is the killer test — a real
structural effect appears (directionally) across several instruments and
periods; an edge that pops in one symbol / one window / one param cell is
noise. (This already caught a GER40-only artifact — see the run log.) - Multiple-comparisons control — a sweep over K params × M symbols selects
the best-looking cell on noise; OOS + MC + cross-symbol consistency is the
control. - R first, currency/costs second — Stage-1 frictionless R signal quality
(ledger C10); Stage-2 (realistic broker, costs, equity feedback — the
existing broker milestone) is the gate a survivor then passes (E[R] > 0
before Stage 2).
Plan / phases
- Phase 0 — calibrate the null (DONE): the existing stage1-r SMA-cross toy
isE[R] ≈ 0/ slightly negative, frictionless, across the 4 wired symbols
— a clean honest null that proved the apparatus produces sane R-metrics on
real data end-to-end. See the run log. - Enabling tooling: CLI-griddable signal/stop timescales (DONE, shipped);
OOS validation harness (walk-forward + MC for R candidates, not just the
SMA sample — issue); register the remaining tradeable instruments
(issue). - Phase 1/2 — candidate search, OOS-validated from the start (live lead:
the index-trend hypothesis — issue). - Phase 3 — survivor → Stage 2 (costs / realistic broker, the existing
broker milestone) → eventual deploy / real-world test.
Current blocker (resume here)
A single multi-member sweep over full M1 history uses ~2 GiB per member
and nearly exhausts RAM + swap (measured: an ungated 9-member EURUSD sweep
peaked at 18.5 GiB RSS, drove swap to 30/31 GiB, dropped free RAM to 2.7 GiB,
and SIGKILL-137'd the original screen run). It must be fixed before the
walk-forward OOS phase, which multiplies sweep memory across windows. The
BLOCKER issue is the next item; the research resumes once it is fixed.