Improving a strategy
A first draft is rarely your best strategy. Once you've assembled one and seen its backtest, you can improve it - either by guiding the AI yourself, or by letting it optimize automatically. Both run more refine-and-backtest cycles on the same strategy so you can watch the metrics move before you commit.
Open a saved strategy (or its chat) and choose Improve strategy. You'll pick one of three modes.
Earlier docs described two modes, Manual and Loop. There are three, the third is Chart mode, which opens the backtest chart with Target Moves enabled and generates strategy hypotheses from moves you annotate. It has its own backend service and it was documented nowhere. See Chart mode below.
Manual Improve
The default. You review the backtest, describe the change you want in plain language, and the AI regenerates the strategy and re-runs the backtest for that turn. Repeat as many times as you like until it behaves the way you want.
Typical guidance:
tighten the stop-lossreduce the drawdownswap RSI for Bollinger Bandstrade less frequently, only the strongest signalsmake the take-profit trail wider
Manual Improve keeps you in control of every change - use it when you have a specific idea of what to adjust.
Loop Improve
Loop Improve optimizes automatically. Instead of one change at a time, the AI runs a series of refine-and-backtest cycles on its own, steering toward an objective you choose, and returns the best version it found.
You set three things:
| Control | What it does |
|---|---|
| Objective | The goal the AI optimizes for (see below). Default: Balance return & risk |
| Rounds | How many refine-and-backtest cycles to run (1-25, default 10) |
| Patience | Optional early-stop: give up if there's been no improvement after this many rounds. Leave blank to run every round |
You can also add an optional starting instruction to point the loop in a direction (for example, "focus on the London session").
Objectives
| Objective | Optimizes for |
|---|---|
| Balance return & risk (default) | The best risk-adjusted trade-off, not raw return |
| Maximize profit | The highest total return |
| Reduce drawdown | The smallest peak-to-trough loss |
| Increase win rate | A higher share of winning trades |
| Reduce losing streak | Fewer consecutive losses in a row |
| Increase trade frequency | More trades over the period |
The loop steers toward the single objective you pick. Optimizing hard for one measure often costs you another - chasing Maximize profit can deepen drawdown; chasing Increase win rate can cut trade frequency. Pick the objective that matches how you'll actually judge the strategy live.
Chart mode
The third mode, and the least like the other two. Instead of describing a change in words or letting the loop search, you annotate the chart.
How it works
- Chart mode opens the backtest chart with Target Moves enabled.
- You mark historical price movements, Long, Short, or Ignore.
- The platform analyses your annotations and generates strategy hypotheses from them.
- Each hypothesis is a testable strategy you can backtest.
It is deterministic, not a model
Target Moves uses deterministic pattern-matching algorithms. No machine-learning model. Given the same annotations it produces the same hypotheses, which is what makes the output inspectable rather than something you have to trust.
The analysis carries a confidence score per hypothesis, and generation runs are tracked with idempotency so a repeated request does not produce duplicates.
Auto-annotate
Rather than marking everything by hand, the platform can propose the most significant moves for you. The selection is filtered by real quality criteria rather than just size:
| Criterion | Purpose |
|---|---|
| Minimum move size and minimum bar count | Excludes noise |
| Reward-to-risk floor | Rejects legs whose adverse excursion is so deep that any stop derived from the marked set would be hit before the target |
| Pace preference | Favours faster moves, percent-per-bar against a reference pace |
| Overlap cap | Limits how much a selected leg may overlap an already-selected one, so "best N" yields N distinct opportunities |
| Unreachable-entry penalty | Demotes legs the generated entry rule could never actually have entered |
| Chop detection | Excludes moves inside a choppy window |
The reward-to-risk floor is the one worth understanding: a 6% move that first drew down 5% is not a tradeable opportunity, because the stop implied by the annotation would have been hit first. Marking it would teach the generator the wrong lesson.
When to use it
| Use Chart mode when | Rather than |
|---|---|
| You can see what you want to catch but cannot state it as a rule | Manual, which needs the rule |
| You want the platform to infer the condition from examples | Loop, which optimises an existing rule |
| You are exploring what is even capturable on this instrument | Either |
Limitations
- You are selecting the training examples. Marking only the moves you remember fondly produces a strategy fitted to a curated past, the same overfitting risk as the Loop, arrived at differently.
- Hypotheses are hypotheses. Backtest them and read the result as sceptically as any other.
- Rate limits apply, and the service has its own error taxonomy.
Comparing versions
Every improvement - manual or looped - produces a new backtest, so you're never comparing against a memory. You can line up the versions and read the performance delta before keeping one, the same way you'd weigh two separate strategies with Compare or the Compare tab on the Backtest page.
Overfitting
The Loop can run 25 refine-and-backtest cycles toward a single objective. It will find a configuration that fits the tested window well. That is what optimisation does, and it is not evidence about the future.
Three things that reduce the damage:
- Prefer Manual with a reason. Change one thing, because a metric was weak, and re-test. That is iteration against a diagnosis rather than a search.
- Use Patience. Early-stopping on no-improvement at least stops the search burning rounds on noise.
- Judge the result against the first version, not against the best version. If round 22 beats round 1 by a lot, ask whether round 22 found something real or just found the window.
And the structural point: the parameters were chosen after seeing the data. That is the definition of the trap, and no amount of care inside the loop removes it. See Reading results honestly.
It's easy to loop until the backtest looks perfect - and end up with a strategy tuned to the past, not the future. A version that's a little worse on paper but simpler and steadier is usually the better live bet. Before you deploy an improved version, re-read it with the same scrutiny as any backtest: see Reading results honestly.