Overview
Two champions, neither discarded — high-drawdown robots are labeled, not hidden.
Tier champions
| steady | xauusd_base_seed_0ff1c86bfe88 | $3,834 | 9.54% |
A search tunes 11 genes across generations, scores every robot on history it never saw, and ranks the survivors. Every number here is measured, not promised.
Chronological and never shuffled. The held-out slice — and only it — produces the number on the board, so a robot that memorised the past scores nothing here.
Every cycle runs the full evolutionary loop. Survivors breed the next generation; every specimen keeps its place in the archive.
Each strategy carries a genome of 11 genes — entry, trend, volatility, session, risk, stops, targets, confirmation. Mutating a gene rewrites behaviour. Decoding the genome shows why a specimen wins.
Public-safe research view from the local reference engine. Not an MT5 Strategy Tester run, not a trading signal, not a profit guarantee.
Two champions, neither discarded — high-drawdown robots are labeled, not hidden.
| steady | xauusd_base_seed_0ff1c86bfe88 | $3,834 | 9.54% |
The lab turns tuning a trading robot into a competition. You overclock a robot on your own machine, submit what you found, and it is re-scored against everyone else — on a slice of history no one can tune to.
Every robot is a catalogued organism, ranked by profit across the XAUUSD · daily · 10-year category. Dataset 6086b7de9fd83cbf · 2016-07-05 to 2026-06-30
Showing RAVEN-6. Regenerate with --generate-specimen-screen --candidate-id <id> to profile another robot.
Every figure below is measured on the held-out slice this robot could not tune to. High drawdown does not disqualify it — it is labeled.
Engine notes: use_session_filter_not_simulated_on_daily_bars
The whole pinned history, in-sample and held-out together, as the robot actually traded it.
Eleven genes. Every one of them is simulated.
Best year 2024 at 23.45%, worst 2022 at -8.26%. A robot that earned in one year and gave it back is not the same as one that earned steadily.
| 2016 | -2.13% | |
| 2017 | -6.01% | |
| 2018 | -5.62% | |
| 2019 | +3.34% | |
| 2020 | +16.45% | |
| 2021 | -5.94% | |
| 2022 | -8.26% | |
| 2023 | -2.15% | |
| 2024 | +23.45% | |
| 2025 | +2.35% | |
| 2026 | +9.11% |
Profitable in 2 of 5 consecutive windows. A genuine edge holds across regimes; a fluke wins one window and collapses.
| window 1 | 2016-07-05 .. 2018-07-05 | $-1,289 | 12.89% |
| window 2 | 2018-07-06 .. 2020-07-02 | $1,193 | 5.24% |
| window 3 | 2020-07-06 .. 2022-06-30 | $-832 | 8.93% |
| window 4 | 2022-07-01 .. 2024-07-01 | $-276 | 13.76% |
| window 5 | 2024-07-02 .. 2026-06-30 | $3,928 | 9.54% |
Every robot on the board today sits in the steady tier, so this compares the top 3 by rank. When a wilder robot appears, it takes a column here automatically.
out_of_sample_official · dataset gold-daily-v1 · 2016-07-05 .. 2026-06-30
RAVEN-6 steady | QUASAR-V steady | VANTA-V9 steady | |
| Net return | $3,834BEST | $979 | $261 |
| Max drawdown | 9.54% | 2.19%BEST | 7.76% |
| Profit factor | 1.67BEST | 1.66 | 1.09 |
| Robustness | 0.4 | 0.4 | 0.6BEST |
| Win rate | 38.36% | 43.48%BEST | 36.99% |
| Trades | 73 | 23 | 73 |
8 of 11 genes differ. The shared ones explain nothing about why these robots diverged, so they are dimmed.
| •ATR_period | 14 | 21 | 14 |
| •ADX_min | 25 | 30 | 25 |
| •TP_R | 3.0 | 2.5 | 2.0 |
| •SL | 500.0 | 350.0 | 350.0 |
| •risk_percent | 1.0 | 1.0 | 0.25 |
| •use_session_filter | on | on | on |
| •use_grid | off | off | off |
| •use_martingale | off | off | on |
| •lot_multiplier | 1.0 | 1.0 | 1.5 |
| •break_even | on | on | on |
| •trailing_stop | on | off | off |
What the search did to each of the 11 genes across 8 generations. Selection swept trailing_stop through the population: a gene that starts in almost nobody and ends in almost everybody is one the search kept choosing.
The exploration width does not narrow, and that is a choice, not an oversight. Mutation keeps a constant width by default, so the search looks just as widely in the last generation as in the first. Annealing it was measured: it does make the population converge, but on this data a converging search settles for a steadier, smaller champion while the constant-width one stumbles onto the lucky outlier — and the ranking policy says a lucky winner is a winner. Annealing is a lever a competitor can pull (--annealing-rate), not the house setting.
Convergence is not proof. A gene can sweep because every survivor inherited it from one lucky ancestor, not because it is good. That is what the held-out slice and the walk-forward windows are for.
From the seed to the champion in 3 steps, across 8 generations and 97 evaluations. Profits shown are in-sample, because that is all the search ever saw.
dataset gold-daily-v1 · search scope in_sample_only · seed $-1,924 → champion $47,315
Every robot ever submitted lands here, winners and failures alike. The record is the archive, not the showroom.
How a robot earns its place on the board, and what the numbers on it do not mean.
Every rule stated here is read from the code that enforces it. This page cannot drift from the engine.
A robot is 11 numbers and switches — a genome. Nothing you send is ever executed. The engine validates each gene against its allowed range and refuses the submission if any falls outside. This is why the lab can accept robots from strangers.
The search only ever sees the first 75% of the pinned history. The last 25% is held out, and that held-out slice — and only it — produces the number you see on the leaderboard. A robot that memorised the past scores nothing here.
Chronological, never shuffled. The held-out slice is the most recent quarter of history, so a robot is judged on time it never saw.
One good window can be luck. The robot is re-run across 5 consecutive walk-forward windows, and the fraction it wins becomes its robustness score. A genuine edge holds across regimes; a fluke wins one window and collapses. Both numbers are shown. Neither is hidden.
0.4 won two windows of five — the leaderboard says so.Winning by luck is still winning. A robot with an enormous profit and a frightening drawdown stays on the board, next to the steadier ones, with its drawdown printed in full. We classify. We do not hide, and we do not delete.
| steady | Steady (DD <= 10%) |
| balanced | Balanced (DD 10-25%) |
| wild | Wild (DD 25-50%) |
| extreme | Extreme (DD > 50%) |
Spread and slippage are charged on entry and on exit. A strategy that only works with free trading does not work.
25.0 points · slippage 5.0 points charged on entry and exit · commission 0.0 per unitIf tomorrow's bar changed the dataset, every proof issued today would stop verifying tomorrow. So the history is pinned to a fixed window that has already ended, with an expected bar count and a checksum. The loader recomputes the checksum and refuses to score anything on data that does not match.
gold-daily-v1 · 2016-07-05 → 2026-06-30 · 2510 barsSame pinned dataset, same engine, same cost model, same genome, same result — and the same anchor hash. A regression guard runs the whole chain on every commit and fails loudly if any scoring rule moves, because a silent change would break every proof ever issued.
--check-reproducibility re-scores a frozen genome and asserts the exact anchor hash. It exits non-zero on drift.This matters more than anything above.
A champion's result is reduced to one sha256 hash over its anchored core — genome, dataset identity, cost model, scores. Anyone can recompute that hash from public data; when it is anchored to a public blockchain, nobody — including us — can quietly rewrite history.
The anchored core names everything that produced the result. Change any of it and the hash changes with it.
| Candidate | xauusd_base_seed_e462fc267479 |
| Symbol | XAUUSD |
| Dataset | 6086b7de9fd83cbf |
| Dataset sha256 | 6086b7de9fd83cbf2fda95a05e7541d10a8de307216cc750c699ba41c76bd0ef |
| Engine | local_reference_engine le-1..le-8 |
No trust required. The verification is offline and uses the same code that produced the hash, so the two can never drift apart.
The anchor payload is prepared for the Polygon Amoy testnet as a zero-value self-transaction whose calldata is the hash. Broadcasting is the operator's own wallet step — this software never sees a signing key, never spends, and has not broadcast.