Strategies

A strategy is a ruleset you build once and run against data automatically, instead of clicking through a replay yourself. Strategies are built from blocks, executed in a worker on your machine, and stored with the same provenance as a manual test.

Building one

The builder is visual: entry rules, exit rules, position sizing and management (stop-loss, take-profit, partial close, trailing) are expressed as blocks and connections rather than as source code. What you compose is compiled into a versioned strategy definition, so a run can always be re-read later as the exact ruleset that produced it.

Strategies live in the same library as your tests, and they can be:

Backtest runs

A strategy backtest runs in a background worker over an existing dataset, so the interface stays usable while it runs. The result is a run: the fills the ruleset produced at simulated prices, plus the same statistics view a manual test gives you — equity curve, drawdown, breakdowns, journal.

Runs are pinned to the dataset version and the strategy definition that produced them. Re-running the same strategy over the same data version reproduces the same fills; that is the point of the deterministic engine.

The optimizer

The optimizer sweeps parameter combinations: you choose which numeric fields to vary and their candidate values, and it enumerates the combinations. Every row in the result table is a real full backtest, not an approximation.

What the panel deliberately does not hide:

Reading optimizer output honestly

The best row in a sweep is the row that best fits the window you swept. That is a description of the past, not an expectation of the future — the more combinations you try, the more likely the best row is mostly noise. If you change one parameter slightly and the result swings a lot, that row was fragile. A strategy worth trading in a replay is one whose neighbours in the table also look reasonable.