Your program receives the selected values.
--hpo-stop-loss-pct 3
--hpo-take-profit-pct 12Parse these arguments in your language of choice. Fixed arguments are shared across trials; sampled parameter values can change.
Inside the product
Your code is the workload. Your experiment defines what can change, what to measure and how far to search.
The experiment file
Explore one complete configuration for a trading workload with two parameters. Select a part of the file to understand its role.
[[parameters]]
name = "stop_loss_pct"
slug = "stop-loss-pct"
type = "int"
min = 1
max = 10
[[parameters]]
name = "take_profit_pct"
slug = "take-profit-pct"
type = "int"
min = 2
max = 25A parameter describes a set of allowed values. A trial receives one concrete value from that set.
nameslugtypemin / maxThe same workload and evaluation data should be used across trials so the comparison is meaningful.
Read the field reference ↗[[objectives]]
name = "final_portfolio_value"
type = "maximize"Tell the search which reported metric to optimize and which direction is better.
nametype[[objectives]]You can report additional metrics for inspection without making all of them optimization objectives.
Read the field reference ↗schemaVersion = 2
algorithm = "bayesian"
maxTrialCount = 120
parallelTrialCount = 10
maxFailedTrialCount = 3
maxRuntimeSecondsPerTrial = 300
machineSizeId = "small"These settings describe how the experiment runs. They do not change what your program measures.
algorithmmaxTrialCount / parallelTrialCountmaxRuntimeSecondsPerTrialmaxFailedTrialCountmachineSizeIdschemaVersion = 2 enables local build settings. Compute eligibility and plan limits still apply.
Read the field reference ↗[build]
context = "."
dockerfile = "Dockerfile"
repository = "trading-strategy"
platform = "linux/amd64"This example asks the CLI to build and push your local Docker image before launching cloud trials.
context / dockerfilerepository / platform[dockerImage]Dashboard launch requires an existing published image. Imported build settings are retained as metadata.
Read the field reference ↗useCustomDockerImage = false
fixedArgs = []
requiredEnv = []Some inputs stay fixed across all trials. Credentials and environment values are supplied separately.
fixedArgsrequiredEnvuseCustomDockerImageProject & credentialsTOML import fills the form; it does not launch an experiment or grant access to an image.
Read the field reference ↗schemaVersion = 2
algorithm = "bayesian"
maxTrialCount = 120
parallelTrialCount = 10
maxFailedTrialCount = 3
maxRuntimeSecondsPerTrial = 300
machineSizeId = "small"
useCustomDockerImage = false
fixedArgs = []
requiredEnv = []
[build]
context = "."
dockerfile = "Dockerfile"
repository = "trading-strategy"
platform = "linux/amd64"
[[parameters]]
name = "stop_loss_pct"
slug = "stop-loss-pct"
type = "int"
min = 1
max = 10
[[parameters]]
name = "take_profit_pct"
slug = "take-profit-pct"
type = "int"
min = 2
max = 25
[[objectives]]
name = "final_portfolio_value"
type = "maximize"An adaptable example, not a bundled strategy. Provide your own Dockerfile, workload and data. The CLI and dashboard use the same configuration definitions.
The execution contract
The file describes the search. Each trial runs your program once, with actual parameter values. Here is how a value reaches your code and a measurement comes back.
--hpo-stop-loss-pct 3
--hpo-take-profit-pct 12Parse these arguments in your language of choice. Fixed arguments are shared across trials; sampled parameter values can change.
hpo.metrics.final_portfolio_value=12840Print a numeric metric using the configured objective name. HyperOptimizer collects it with the trial’s parameters, status and logs.
Values above are illustrative. Your workload performs the evaluation; HyperOptimizer does not supply a strategy or invent the score.
Container requirements ↗Execution boundaries
Trial count, parallelism and timeout answer different questions. None is a promise about total wall-clock duration or a fixed bill.
maxTrialCountThe total trial limit for this experiment. The search can stop earlier when other limits or configured goals are reached.
parallelTrialCountThe requested concurrency. Available workspace slots and compute eligibility can reduce how many trials run together.
maxRuntimeSecondsPerTrialThe timeout for an individual trial. It does not mean the whole experiment finishes in five minutes.
Follow progress and inspect failures from the experiment dashboard.
maxFailedTrialCount = 3 bounds tolerated failures in this example. Inspect logs to diagnose the cause.Compute use depends on trial runtime and machine size. Plan limits, billing eligibility and renewal interruptions still apply. See pricing and compute terms ↗
One setting, several strategies
The algorithm selects candidate values within your search space. It works inside the experiment’s execution and metric contract. Explore three methods below.
Bayesian optimization
Learn where to look next.
Use completed trials to model promising parameter values, then propose candidates informed by what you have observed.
Evolutionary search
Adapt where you sample.
Use evaluated candidates to update the center, scale and orientation of a sampling distribution for numerical parameters.
Space-filling exploration
Cover the possibilities.
Explore a numerical parameter space with a low-discrepancy sequence. Samples spread systematically without learning from objective values.
Reading the evidence
A high score answers the question you configured, on the data your workload evaluated. Choosing that question carefully matters as much as searching it.
Maximize final portfolio value, or minimize loss. Compare the reported metric alongside the parameter values and logs that produced it.
Your program can report additional metrics. For example, inspect drawdown alongside return without making both optimization objectives.
Add an [[objectives]] block for each goal. They are not combined into a weighted score, and there is no single overall best trial. Pareto views are future work.
Keep evaluation data consistent during search. Then test promising settings on held-out data in your own workload; a strong search result does not establish future performance.
Keep the definition with your code
Version hpo.toml alongside your workload. Review changes to the search space, objectives and limits before running another experiment.
hpo fmt
hpo validate
hpo optimizeAfter authenticating and selecting your project, format and validate the file. With [build], the CLI builds and pushes your image before launching.
Export TOML from an experiment’s settings. Import it into a new experiment, review the settings, select an accessible image and supply required environment values before launching.
Import fills the form. It does not start a run. Dashboard export uses the original trial-count and parallelism limits, rather than later limit changes.
Import and export details ↗Image or build settings, arguments, parameters, objectives, algorithm, run limits and required environment names.
Credentials and secret values. Experiment names and results. Choose a destination project, or set an optional v2 [target].
Connect your workload
Any language, your libraries and dependencies.
Connect a parameterized strategy backtest.
Run your Nautilus strategy in trial containers.
Build, validate and launch from your terminal.
Start with a small search space and a metric you trust. Confirm one trial works, then expand the search.
7-day Starter trial · payment details required. Need a hand? Talk to us.