Annualized Sharpe Ratio (sharpeRatio × √tradesPerYear), null if unsafe. Higher is better.
Average sum of pnlPercentage across consecutive losing streaks. Null if no loss streak. Closer to 0 is better.
Average sum of pnlPercentage across consecutive winning streaks. Null if no win streak.
Average trade duration in minutes ((closeTimestamp - pendingAt) / 60_000), null if unsafe.
Average fall PNL percentage across all signals (_fall.pnlPercentage), null if unsafe. Lower (more negative) means deeper drawdowns.
Average duration in minutes of losing trades.
Average peak PNL percentage across all signals (_peak.pnlPercentage), null if unsafe. Higher is better.
Average PNL per signal as percentage, null if unsafe. Higher is better.
Average duration in minutes of winning trades.
Fraction of up-moves among decisive close-to-close moves. 0..1. Higher = buyers more frequent.
Share of upward absolute movement in total close-to-close movement. 0..1.
Calmar Ratio (annualized expected return / max drawdown), null if unsafe. Higher is better.
Certainty Ratio (avgWin / |avgLoss|), null if unsafe. Higher is better.
Per-trade Expectancy (winProbavgWin + lossProbavgLoss), null if unsafe. Higher is better.
Expected yearly returns based on average trade duration and PNL, null if unsafe. Higher is better.
Number of losing signals (PNL < 0)
Median pnlPercentage — robust to outliers; reveals distribution skew when paired with avgPnl.
Median |close[i] - close[i-1]| / close[i-1] across trade closes, in %. Robust to outliers.
buyerStrength - sellerStrength ∈ [-1, 1]. Positive = bullish bias on magnitude.
Recovery Factor (totalPnl / max drawdown), null if unsafe. Higher is better.
Fraction of down-moves among decisive moves. 0..1. Equals 1 - buyerPressure.
Share of downward absolute movement in total close-to-close movement. 0..1.
Sharpe Ratio (risk-adjusted return = avgPnl / stdDev), null if unsafe. Higher is better.
Array of all closed signals with full details (price, PNL, timestamps, etc.)
Sortino Ratio (avgPnl / downside deviation — RMS of losing trades only), null if unsafe. Higher is better.
Standard deviation of returns (volatility metric), null if unsafe. Lower is better.
Cumulative PNL across all signals as percentage, null if unsafe. Higher is better.
Total number of closed signals
Bivariate trend classification (slope × R²).
R² of the log-price regression, in [0, 1].
Log-price regression slope, in %/day.
Number of winning signals (PNL > 0)
Win rate as percentage (0-100), null if unsafe. Higher is better.
Statistical data calculated from backtest results.
All numeric values are null if calculation is unsafe (NaN, Infinity, etc). Provides comprehensive metrics for strategy performance analysis.
Example