Skip to content

Metrics reference

Every backtest reports a standard set of performance metrics, computed over the mark-to-market equity curve (ats/workers/metrics.py). The same metrics appear in the run detail view, the runs log, and the research ladder.

Annualization (why the numbers are comparable across timeframes)

Section titled “Annualization (why the numbers are comparable across timeframes)”

Ratios like Sharpe scale with the square root of the number of periods per year, so a 1-minute strategy and a daily strategy must be annualized differently. ClearEdge picks the right periods_per_year automatically from the bar spec and asset class:

  • Daily equities/ETFs: 252 trading days/year.
  • Daily crypto: 365 days/year (crypto trades every day).
  • Intraday: the daily figure × the number of bars per session (derived from the cadence).

So a Sharpe of 1.0 means the same thing whether the strategy trades daily or every minute.

Metric Meaning
starting_cash The capital the backtest began with.
final_equity Mark-to-market equity at the end of the run.
total_return_pct Total return over the whole period, final_equity / starting_cash − 1.
cagr_pct Compound annual growth rate, annualized by calendar time between the first and last bar.
sharpe Annualized Sharpe ratio (mean return / stdev of returns, × √periods_per_year).
sortino Like Sharpe but penalizes only downside deviation (root-mean-square of negative returns).
calmar CAGR ÷ max drawdown — return per unit of worst-case pain.
volatility_pct Annualized standard deviation of returns, in percent.
max_drawdown_pct The largest peak-to-trough decline of the equity curve.
exposure_pct Share of bars with an open position — how much of the time capital was actually deployed.

Computed over realized (closed) round-trips.

Metric Meaning
win_rate_pct Share of closed trades that were profitable.
profit_factor Gross profits ÷ gross losses. > 1 means the winners outweigh the losers.
avg_win_loss_ratio Average win size ÷ average loss size.
expectancy_per_trade Average realized P&L per closed trade.
avg_holding_days Average time a position is held.
trades_per_month Trade frequency.
total_fees Total commissions paid over the run.

In addition to the above, a single-instrument backtest reports how the strategy did against simply buying and holding the instrument over the same window:

Metric Meaning
benchmark_return_pct The buy-and-hold return of the instrument over the period.
excess_return_pct The strategy’s total_return_pct minus the benchmark — its return above buy-and-hold.
orders The number of orders the strategy submitted.

A strategy that doesn’t beat buy-and-hold isn’t earning its complexity — this is judged on every run and is a first-class output, not an afterthought. See the gauntlet.

  • The runs log shows the headline metrics per run.
  • The research ladder (/api/research/confidence) rolls the gauntlet stages into a 0–100 readiness score — see the research ladder.
  • The research copilot reads a compact summary of these metrics so it can discuss your results; see Studio.