Smarter than manual tuning
Stop guessing lookback windows and multipliers. Bayesian optimization systematically explores your parameter space and converges on the best configuration.
Build a Docker image of your NautilusTrader backtest, configure parameter ranges in the dashboard, and let Bayesian optimization find the best settings.
Why HyperOptimizer for NautilusTrader?
Stop guessing lookback windows and multipliers. Bayesian optimization systematically explores your parameter space and converges on the best configuration.
Run multiple Nautilus backtests simultaneously. Each trial gets its own container; no contention, no shared state. Results come in faster.
Your Nautilus strategy runs inside an isolated container. We never see your source code, trading logic, or historical data. Only the metric lines you print.
Leaderboard ranked by Sharpe, PnL, or any custom metric. Convergence plots and Pareto frontiers for multi-objective experiments like return vs. drawdown.
How it works
Package your Nautilus engine, strategy, data, and dependencies in a Docker image. Set the default command to your backtest script.
Read --hpo-* flags, run engine.run(), and print metrics from engine.get_result().
We run parallel trials, use Bayesian optimization to explore the parameter space, and surface the best strategy configurations in the dashboard.
Example
result = engine.get_result()
metrics = {
"total_pnl": float(result.stats_pnls.get("PnL", 0)),
"total_orders": result.total_orders,
"elapsed_time": result.elapsed_time,
}
for key, value in metrics.items():
print(f"hpo.metrics.{key}={json.dumps(value, default=str)}")More integrations
Follow the NautilusTrader integration guide for a step-by-step walkthrough with full code examples.