Performance metrics
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
(ending_balance - starting_balance) / starting_balance × 100The 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.
(mean daily return / stdev of daily returns, ddof=1) × √periods_per_yearReturn 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.
| Sharpe | A reasonable reading |
|---|---|
| > 2.0 | Exceptional, and rare enough in live markets to be suspicious |
| 1.0 - 2.0 | Good |
| 0.5 - 1.0 | Marginal |
| < 0.5 | The volatility is not being paid for |
| Negative | Underperforms holding cash |
Largest peak-to-trough decline in the equity curve over the windowThe 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:
| Companion | What it adds |
|---|---|
max_drawdown_duration | How long the strategy spent below its peak |
recovery_date / recovery_time_days | When it got back to the peak, None if it never did, preserved as None rather than coerced to zero |
worst_drawdown_start_date / end_date | When 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.
winning trades / total trades × 100Meaningless 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
(mean daily return / downside deviation) × √periods_per_yearSharpe, 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.
annual_return / max_drawdownReturn per unit of worst-case drawdown. The most direct answer to "was the pain worth it".
The 5th percentile of the daily-return distributionOn a normal day, this is roughly the worst you would expect. The tail beyond it is where the damage lives.
Mean of the returns worse than VaR(95)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.
Annualised standard deviation of daily returnsAnnualised standard deviation of negative daily returns onlyTrade-level
total gross profit / total gross lossAbove 1 means the strategy made more than it lost. It is the companion win rate needs.
| Profit factor | Reading |
|---|---|
| ≥ 1.5 | Strong |
| 1.2 - 1.5 | Solid |
| 1.0 - 1.2 | Marginal, costs and slippage can erase this |
| < 1.0 | Losing |
Count of completed round tripsThe first number to read. Under 20 and nothing else on the page means much.
Maximum consecutive losing round tripsThe 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.
Total P&L / total tradesCompare 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.
Mean time between entry and exitSanity check against your intent. An "intraday" strategy averaging 3 days is not intraday.
total_trades / months in the windowAlso an input to the assessment's drawdown-tolerance labels. See Strategy grades.
Return variants
Return annualised over the observed calendar daysExtrapolating 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.
(ending/starting)^(1/days) - 1, then annualisedThe compounded daily rate. irr_annualized and annual_return are different computations and can
differ; both are reported rather than one being chosen for you.
Return before and after modelled costsThe 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.
Mean of daily returnsPass / fail
Separate from the grade, a result carries a boolean pass against objective-aware thresholds:
| Objective | Min trades | Min win rate | Min profit factor |
|---|---|---|---|
| intraday | 0 (not gated) | 40% | Not enforced |
| positional | 0 (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 tab | Contents |
|---|---|
| Overview | Headline metrics, monthly table, volatility, profit factor, the assessment |
| Performance | The full equity curve |
| Trades | Every trade, entry, exit, P&L, and the reason it opened and closed |
| Risk | Drawdown curve, VaR, expected shortfall, risk-adjusted metrics |
| Markets | Per-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.