AMMDocumentationWebsite ↗
how to · 4 min read

Optimise strategy parameters

Search declared strategy parameters while keeping position size and execution assumptions fixed and inspectable.

Reviewed 2026-10-24 · Windows & macOS

On this page

Establish a baseline first#

Optimisation tests alternative settings for one algorithm. Each candidate is a complete historical run of that algorithm's instrument/account graph. More instruments do not turn one candidate into several independent tests. Portfolio allocation is a separate research workflow.

Start with an ordinary backtest using the intended symbol, dates, provider, source resolution, costs and fixed size. Check that trades and P&L have plausible scale. Then open New Optimization and reproduce that contract. Searching a misconfigured multiplier or synthetic spread produces precise answers to the wrong question.

AMM parameter optimisation with candidate results, sensitivity surface and equity chart in dark modeView full-size screenshot ↗
A nine-candidate AAPL parameter search with a results table, neighbourhood surface and selected candidate chart, equity and trades.
  1. Choose the exact algorithm and plugin folder. The picker offers Optimizable only and shows available parameter counts. A plugin without declared optimisable parameters is disabled with a reason.
  2. Review Instrument & account: symbol, instrument/account IDs and reporting/account/profit currencies. Load instrument economics with the lookup or futures contract picker where available.
  3. Set Period & objective. Choose the UTC dates, search strategy and target. Quick ranges and the stored-data coverage line help choose a covered period.
  4. Review Parameter ranges. Set Min, Max and Step, or use the row's List of values for discrete choices. Remove dimensions you do not intend to search.
  5. Review source bars, costs, contract grid, simulated account/margin settings and execution destination. Review Genetic settings only when using Genetic search.
  6. Read the footer's combination count and estimate. Use Show first problem if submission is blocked. Estimate with ⌘/Ctrl+E, then start with ⌘/Ctrl+Enter or the Start action.

The form retains its settings per workspace item. A new configured handoff can replace those saved form values, so inspect the entire incoming request before starting it.

Choose the search method#

Method Behaviour Suitable question
Brute Force Tests the exact Cartesian grid at the declared steps, subject to a requested cap Have all points in this small explicit grid been tested?
Grid Search Starts coarse and refines around better results; actual count depends on improvement and deduplication Where are promising regions in these ranges?
Genetic Algorithm Evolves parameter vectors using selection, crossover, mutation and diversity controls Which regions deserve attention in a larger search space?

Step is a literal grid increment for Brute Force. Adaptive Grid Search derives density from its own grid settings. Genetic sampling uses step for snapping. Do not read the same range table as a promise that all three methods test identical points.

For example, fast-period values 5, 10 and 15 with slow-period values 30, 40 and 50 make nine Brute Force candidates. The same endpoints in adaptive or Genetic search describe a search space; use the server estimate and completed candidate count to see the work actually performed.

Strategy optimisation excludes position size, lots, units, contracts, shares, risk amount/percent, exposure, allocation, leverage and related sizing dimensions. The UI uses strategy-purpose declarations; the backend also rejects or removes prohibited sizing ranges. Keep a suitable fixed size in the underlying request.

A stop distance can be strategy logic, while the amount of money risked per trade is sizing. Do not hide a sizing gene under a different name. Execution economics, financing and terminal handling are fixed run assumptions. Compare a changed cost scenario as a separate run with an explicit identity.

Instrument-specific size matters. A share, a futures contract, a crypto base unit and a spread-bet stake have different meanings. Use the exact minimum/step/maximum metadata. An optimisation winner does not grant a broker permission to accept that quantity live.

Select and interpret the objective#

Targets include return, drawdown ranking, profit factor, win rate, Sharpe, Sortino, Calmar, recency-weighted return, time-weighted trade profit and equity-concentration measures. Annualised Net Profit / Max Equity Drawdown uses monetary streaming measurements and requires a complete interval with a defined ratio. Missing measurement or zero denominator does not become an unlimited score.

A target ranks candidates according to one question. High win rate can coexist with poor loss size; a high profit factor over very few trades can be unstable. Read raw target values separately from Genetic selection fitness and penalties. A risk-stop, margin stop-out or depleted account is a terminal risk failure, not simply a low-return successful candidate.

Monitor and recover#

History shows status, completed/total tests, best metric, worker and failure reason. Cancel optimization confirms before asking the server to stop. Completed candidate evidence remains available according to the run's result contract. Closing the item leaves server work running; open its history to reconnect.

An API outage keeps the form and presents the host and retry action. Missing required fields have named reasons. An invalid range, unsupported data adjustment, incomplete crypto economics lookup or missing tick cache must be corrected before retrying. Tick-source optimisation requires prepared cached ticks and fails early when they are absent.

After completion, use Results, Surface and diagnostics to inspect neighbourhoods and failures. Then test selected parameters on unseen periods with Walk-forward. Selecting the highest historical row is a research decision, not evidence of future profitability.

Application screenshotOpen original ↗