Smarter than manual tuning
Stop guessing lookback windows and multipliers. Bayesian optimization uses completed results to suggest new parameter combinations. Validate promising configurations on held-out data.
Package your NautilusTrader backtest in Docker and define your parameter ranges. HyperOptimizer runs the search and collects results on managed infrastructure.
Why HyperOptimizer for NautilusTrader?
Stop guessing lookback windows and multipliers. Bayesian optimization uses completed results to suggest new parameter combinations. Validate promising configurations on held-out data.
Run multiple Nautilus backtests simultaneously. Each trial runs in a separate container. Actual concurrency depends on plan capacity, available compute, and scheduling.
Your Nautilus strategy runs in a managed trial container. HyperOptimizer processes the image, execution logs, and metrics needed to run and inspect the experiment.
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().
Set parameter ranges and objectives in hpo.toml or the dashboard. Launch managed backtests and inspect each configuration’s metrics and logs.
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)}")Explore other workloads
Tune ML models, simulations, pipelines, and custom programs with the same Docker workflow.
Follow the NautilusTrader integration guide for a step-by-step walkthrough with full code examples.