Edge research: prove a real tradeable edge

New Issue

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
    is E[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.

No due date
100% Completed