SignalAI

Results & stats

A backtest runs in the cloud and produces an equity curve, a trade ledger, and summary stats. You view them at your backtests — an equity chart, the fills table, and the stats below. (They're also stored as artifacts: equity.csv, trades.csv, order-events.json.)

Summary stats

Every backtest reports:

KeyMeaning
total_returnOverall return over the run
max_drawdownWorst peak-to-trough drop
sharpeRisk-adjusted return
volatilityReturn volatility
annual_returnAnnualized return
final_equityEnding account value
num_tradesNumber of fills

Intraday (day) strategies are scored the way real intraday trading works — each day from the same capital, flat overnight. See Intraday vs long.

Reading portfolio state during a run

You don't assemble a result object yourself — the engine does. While the strategy runs, read live account state from the Ctx:

  • ctx.cash() -> f64 — uninvested cash.
  • ctx.equity() -> f64 — account value marked to market.
  • ctx.position(sym) -> Qty — current position in a symbol (.as_f64(), .is_zero()).
  • ctx.last_price(sym) -> Price — last seen price.

Run configuration

A run is configured by its run params — set in the Studio side panel (or via Claude), not in code:

ParamMeaning
universeThe symbols to trade (tickers)
start / endDate range (YYYY-MM-DD)
starting cashOpening capital (default 100,000)
resolutiondaily or minute — picks the trading model

The same strategy source can be re-run over different params without changing the Rust.