AMMDocumentationWebsite ↗
how to · 5 min read

Optimise a portfolio of saved strategy results

Search strategy activation and weights using verified historical artifacts with explicit daily-close aggregation.

Reviewed 2026-10-24 · Windows & macOS

On this page

Understand the portfolio being tested#

Portfolio Optimization combines previously completed strategy backtest results. It searches which strategies are active and their weights. It does not rerun historical orders for each candidate, allocate a shared broker cash ledger or net conflicting trades between strategies.

The aggregation contract uses synchronized UTC daily-close return sleeves. Each source curve is reduced to its last observation per UTC date. A closed sleeve carries its last daily close forward. The weighted cumulative returns form portfolio equity. Drawdown from that curve is daily-close drawdown; it is not joint intraday drawdown.

For example, equal weights on an equity strategy and a gold strategy average their return-to-date series after accounting for their own starting equity. This does not prove that half the proposed live cash can fund each original strategy's margin requirements.

AMM portfolio research with allocations, combined equity, frontier and sleeve correlations in dark modeView full-size screenshot ↗
A completed 24-candidate portfolio allocation study combining three strategy return sleeves, with equity, daily drawdown, weights, frontier and correlations.

Prepare valid source artifacts#

Start with complete, inspectable backtests or optimisation candidates. Preserve the exact source optimisation/backtest IDs or supported standalone result identity. Sources must have current manifests, sufficient equity retention and validated trade detail.

The portfolio request must match each source's full instrument set and primary instrument, dates, parameters, feed/account identity and currencies. A ticker-only approximation or legacy summary cannot replace the authoritative artifact. If a source is missing or incompatible, rerun that source under an explicit current identity rather than constructing a synthetic curve.

Parameters are fixed to their saved values. The search cannot tune a lookback period inside a precomputed return series. Do strategy-parameter research first, then choose the fixed source artifacts for the allocation question.

Build the request#

  1. Add Portfolio Optimization. Portfolio Input provides Builder, Runs and cTrader checks.
  2. Open Builder. Form mode and JSON mode edit the same request; ⌘/Ctrl+J switches representation.
  3. Configure each strategy sleeve with a stable ID, exact source artifact, mandatory/optional status and permitted weight range. Keep parameters consistent with the source.
  4. Set portfolio starting value, search budget, seed, fitness weights and supported constraints.
  5. Use Estimate or ⌘/Ctrl+E. Read validation messages before Start run or ⌘/Ctrl+Enter.

The initial template illustrates request structure. Its source IDs may not exist on your server. Replace them with your own saved evidence rather than expecting template research jobs to be bundled.

Make the allocation fundable#

Active weights must be finite, nonnegative and sum to one. Each strategy's maximum and the global single-strategy cap must allow some permitted active set to reach 100%, while respecting minimums and active-count limits.

Two strategies each capped at 45% can provide at most 90%; that request cannot be fully allocated. Raising a cap, adding eligible strategies or changing active-set rules are explicit research decisions. The validator reports a funding shortfall rather than silently normalizing an impossible allocation.

Mandatory strategies remain in the active set. Optional strategies can be selected or excluded. The Genetic search projects weights into the valid region and uses the seed and source artifacts for reproducibility. More generations are not a guarantee of more unique candidates: deduplication, convergence and exhausted candidate space can reduce actual evaluations.

Use only supported constraints#

Supported constraints include activation/weight rules, daily-close drawdown and other implemented portfolio criteria. Gross financial exposure, net exposure and turnover constraints are rejected by this artifact model: independent return histories do not contain the joint marked position book required to enforce them.

Likewise, source contracts with unsupported nonlinear financing, grouped commissions or fixed-lot scaling cannot be made equivalent simply by multiplying returns. Read the validation error and choose compatible source artifacts. Do not interpret an unavailable exposure view as zero exposure.

Optional Factor model limits require a validated snapshot bound to the same saved strategy histories, dates and reporting currency. Holdings or an unrelated research allocation cannot supply eligible limits to this portfolio. Use Factor Risk to calculate and explicitly transfer eligible strategy limits into Builder; the transfer does not start a search.

Monitor and preserve the experiment#

The run bar shows status and completed/planned evaluations. Cancel asks for confirmation and retains the available candidate evidence according to the run state. Starting another run while one is active is explicit. Closing the item stops its view updates but does not stop the server job.

Runs filters by job/candidate/sleeve identity and state. Use Load request into Builder to create a revised experiment from an earlier run. A new run should preserve the original evidence when sources, constraints or fitness change.

The workspace retains request text, selected run/candidate and supported result-view state per item. Separate Portfolio items allow side-by-side research. A suite view merges related runs for inspection; it does not create a new jointly optimised portfolio or permit suite-wide cancellation/sensitivity.

Resolve errors before interpreting candidates#

Source mismatch errors require checking exact artifact identities and manifests. Missing history/detail requires a valid source rerun. A weight-rule failure requires a fundable active set. An unsupported exposure/turnover constraint requires changing the requested model, not treating the unsupported field as enforced.

A failed run's banner offers Copy error and Load request into Builder. Preserve its ID, make the correction and start a new run. Continue with Portfolio results to inspect feasibility, component metrics and the save-only live export workflow.

Application screenshotOpen original ↗