Skip to main content

Performance metrics

Who it’s for
Anyone reading a backtest result or a strategy's live performance
Assumes
You have a result to read

Every figure the platform reports, with its formula and the misreading it invites. A metric whose formula you cannot see is a metric you have to trust.


The headline four

Total return
Computed as(ending_balance - starting_balance) / starting_balance × 100
UnitPercent
It is nota projection, or a rate you should expect to repeat

The equity curve's endpoint against its start, net of all modelled costs.

Reported alongside gross_return_pct and net_return_pct so you can see the cost drag directly. The difference between gross and net is what execution cost you.

Read it with drawdown. +30% with a -45% drawdown is not a good strategy; the path was unholdable.

Sharpe ratio
Computed as(mean daily return / stdev of daily returns, ddof=1) × √periods_per_year
UnitDimensionless
It is nota probability, or comparable across different annualisation bases

Return per unit of volatility. Risk-free rate is taken as zero. So this is a raw return-to-volatility ratio, not an excess-return Sharpe in the textbook sense.

periods_per_year is 252 for equity and calendar days for crypto, because crypto never closes. That means an equity Sharpe and a crypto Sharpe are annualised on different bases and are not directly comparable.

Returns zero when standard deviation is zero, a strategy with one trade has no measurable volatility, and zero is the honest answer rather than infinity.

SharpeA reasonable reading
> 2.0Exceptional, and rare enough in live markets to be suspicious
1.0 - 2.0Good
0.5 - 1.0Marginal
< 0.5The volatility is not being paid for
NegativeUnderperforms holding cash
Max drawdown
Computed asLargest peak-to-trough decline in the equity curve over the window
UnitPercent
It is nota ceiling on future loss, or a limit the platform enforces

The number that tells you how much pain you would have had to sit through to realise the final return.

Convert it to money on the capital you would actually allocate. 22% of ₹10 lakh is ₹2.2 lakh. That sentence is the honest version of the metric.

Reported with three companions that most platforms omit:

CompanionWhat it adds
max_drawdown_durationHow long the strategy spent below its peak
recovery_date / recovery_time_daysWhen it got back to the peak, None if it never did, preserved as None rather than coerced to zero
worst_drawdown_start_date / end_dateWhen it happened, so you can check what the market was doing

A 10% drawdown recovered in three weeks and a 10% drawdown still unrecovered at the end of the window are very different experiences of the same number.

Win rate
Computed aswinning trades / total trades × 100
UnitPercent
It is nota measure of profitability on its own

Meaningless without the win/loss size ratio.

A 40% win rate at 3:1 reward-to-risk is more profitable than a 65% win rate at 1:3. Read it beside profit factor: which is exactly why the grading system requires both to clear a tier together.


Risk-adjusted and distribution

Sortino ratio
Computed as(mean daily return / downside deviation) × √periods_per_year
UnitDimensionless
It is notinterchangeable with Sharpe

Sharpe, but penalising only downside volatility. A strategy with large upside spikes scores better here than on Sharpe, which is usually what you want, upside volatility is not risk.

Calmar ratio
Computed asannual_return / max_drawdown
UnitDimensionless
It is notdefined when there was no drawdown. It returns 0

Return per unit of worst-case drawdown. The most direct answer to "was the pain worth it".

Value at Risk (95%)
Computed asThe 5th percentile of the daily-return distribution
UnitPercent
It is nota maximum loss, 1 day in 20 is worse, by definition

On a normal day, this is roughly the worst you would expect. The tail beyond it is where the damage lives.

Expected shortfall (95%)
Computed asMean of the returns worse than VaR(95)
UnitPercent
It is notthe same as VaR

The average of the bad tail rather than its boundary. More informative than VaR precisely because it describes what happens inside the tail instead of where the tail starts.

Volatility
Computed asAnnualised standard deviation of daily returns
UnitPercent
Downside deviation
Computed asAnnualised standard deviation of negative daily returns only
UnitPercent

Trade-level

Profit factor
Computed astotal gross profit / total gross loss
UnitRatio
It is nota return figure

Above 1 means the strategy made more than it lost. It is the companion win rate needs.

Profit factorReading
≥ 1.5Strong
1.2 - 1.5Solid
1.0 - 1.2Marginal, costs and slippage can erase this
< 1.0Losing
Total trades
Computed asCount of completed round trips
UnitCount
It is nota quality signal. But a small number invalidates every other metric

The first number to read. Under 20 and nothing else on the page means much.

Longest losing streak
Computed asMaximum consecutive losing round trips
UnitCount

The metric that tells you whether you could actually run this. Six losses in a row is a different psychological experience from a -12% drawdown arrived at gradually, even at the same P&L.

Pairs directly with the max_consecutive_losses execution gate. See The nine order gates.

Average outcome per trade
Computed asTotal P&L / total trades
UnitQuote currency
It is notthe amount you would make per trade

Compare it against your per-trade cost. An average outcome of ₹40 on a strategy paying ₹35 a round trip in charges is a strategy whose edge is entirely consumed by execution.

Average holding duration
Computed asMean time between entry and exit
UnitHours or days

Sanity check against your intent. An "intraday" strategy averaging 3 days is not intraday.

Trades per month
Computed astotal_trades / months in the window
UnitCount

Also an input to the assessment's drawdown-tolerance labels. See Strategy grades.


Return variants

Annual return
Computed asReturn annualised over the observed calendar days
UnitPercent
It is notan expected annual return

Extrapolating a short window's return to a year magnifies whatever the window happened to contain. A 4% return over 6 weeks annualises to something impressive and means nothing.

IRR (daily) and IRR (annualised)
Computed as(ending/starting)^(1/days) - 1, then annualised
UnitPercent

The compounded daily rate. irr_annualized and annual_return are different computations and can differ; both are reported rather than one being chosen for you.

Gross vs net return
Computed asReturn before and after modelled costs
UnitPercent

The most useful pair on the page for a short-timeframe strategy. The gap is your cost drag. If it is most of the gross return, the strategy is trading too much. See Fees & charges.

Average daily return
Computed asMean of daily returns
UnitPercent

Pass / fail

Separate from the grade, a result carries a boolean pass against objective-aware thresholds:

ObjectiveMin tradesMin win rateMin profit factor
intraday0 (not gated)40%Not enforced
positional0 (not gated)40%1.2

Trade count is not gated. Total trades are always reported in full, and it is on you to read them. Profit factor is not enforced for intraday because an intraday strategy's economics differ.

A pass=false result is still shown with all its metrics. Nothing is hidden.


Monthly breakdown

Alongside the aggregate: per-month return and statistics.

Read it for consistency. A 14% annual return made entirely in one month is a different object from the same 14% spread evenly, and the aggregate cannot tell you which you have.


Where to find them

Backtest tabContents
OverviewHeadline metrics, monthly table, volatility, profit factor, the assessment
PerformanceThe full equity curve
TradesEvery trade, entry, exit, P&L, and the reason it opened and closed
RiskDrawdown curve, VaR, expected shortfall, risk-adjusted metrics
MarketsPer-asset breakdown for dynamic strategies

The Trades tab is the most under-used. Each row carries the reason the trade was taken and the reason it closed, which is how you find out that 80% of your exits were stop-losses rather than your exit condition.


Next