Skip to main content
All results are out-of-sample (OOS). The OOS window is never used to fit hyperparameters — it is a blind evaluation on data the models have not seen.

Current results

Phase 17.3 — May 2026

Performance history


Score formula

The optimizer maximizes a single composite score that balances return against risk:
A score improvement of ≥ 2% over baseline is required to commit new models. This prevents the pipeline from committing marginal or noise-driven improvements. A new week’s baseline is the score recorded at the end of the previous week’s run.

OOS validation methodology

1

Data split

The dataset is split into in-sample (IS) and out-of-sample (OOS) segments. The IS window is used for training and Optuna tuning. The OOS window is never touched during training.
2

Sweep on first 70%

The config sweep (scripts/sweep.py) runs only on the first 70% of the OOS window. This is the “search” OOS.
3

Final eval on full OOS

After the best config is identified, the full OOS window is backtested. The last 30% of OOS data — the true holdout — is never seen during the sweep.
4

Rollback check

If the full-OOS score does not beat the stored baseline by ≥ 2%, all models and configs roll back to the previous version.
Always use python backtest.py --oos-only for realistic validation. Avoid generic lookback backtests — they are subject to in-sample contamination.

Reading the backtest output

Key output fields:

Hardware note

Backtest results shown here used:
  • Spread: 14.00 pts (RoboForex BTCUSD typical)
  • Leverage: 500
  • Starting balance: 500 USC
  • Swap: enabled (RoboForex applies overnight swap)
Results on other brokers or with different spread/swap will differ. Historical results through Apr 2026 were on RoboForex BTCUSD (14.59 pts spread, no swap).