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.
Return & risk
Section titled “Return & risk”| 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. |
Trade quality
Section titled “Trade quality”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. |
Benchmark (the bar that matters)
Section titled “Benchmark (the bar that matters)”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.
Where else metrics appear
Section titled “Where else metrics appear”- 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.