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:
| Key | Meaning |
|---|---|
total_return | Overall return over the run |
max_drawdown | Worst peak-to-trough drop |
sharpe | Risk-adjusted return |
volatility | Return volatility |
annual_return | Annualized return |
final_equity | Ending account value |
num_trades | Number 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:
| Param | Meaning |
|---|---|
| universe | The symbols to trade (tickers) |
| start / end | Date range (YYYY-MM-DD) |
| starting cash | Opening capital (default 100,000) |
| resolution | daily or minute — picks the trading model |
The same strategy source can be re-run over different params without changing the Rust.