Statistical data calculated from live trading results.
All numeric values are null if calculation is unsafe (NaN, Infinity, etc). Provides comprehensive metrics for live trading performance analysis.
eventList: TickEvent[]
Array of all events (idle, opened, active, closed) with full details
totalEvents: number
Total number of all events (includes idle, opened, active, closed)
totalClosed: number
Total number of closed signals only
winCount: number
Number of winning closed signals (PNL > 0)
lossCount: number
Number of losing closed signals (PNL < 0)
winRate: number
Win rate as percentage (0-100) based on closed signals, null if unsafe. Higher is better.
avgPnl: number
Average PNL per closed signal as percentage, null if unsafe. Higher is better.
totalPnl: number
Cumulative PNL across all closed signals as percentage, null if unsafe. Higher is better.
stdDev: number
Standard deviation of returns (volatility metric), null if unsafe. Lower is better.
sharpeRatio: number
Sharpe Ratio (risk-adjusted return = avgPnl / stdDev), null if unsafe. Higher is better.
annualizedSharpeRatio: number
Annualized Sharpe Ratio (sharpeRatio × √tradesPerYear), null if unsafe. Higher is better.
certaintyRatio: number
Certainty Ratio (avgWin / |avgLoss|), null if unsafe. Higher is better.
expectedYearlyReturns: number
Expected yearly returns based on average trade duration and PNL, null if unsafe. Higher is better.
avgPeakPnl: number
Average peak PNL percentage across all closed signals (_peak.pnlPercentage), null if unsafe. Higher is better.
avgFallPnl: number
Average fall PNL percentage across all closed signals (_fall.pnlPercentage), null if unsafe. Closer to 0 is better.
sortinoRatio: number
Sortino Ratio (avgPnl / downside deviation — RMS of losing trades only), null if unsafe. Higher is better.
calmarRatio: number
Calmar Ratio (annualized expected return / max drawdown), null if unsafe. Higher is better.
recoveryFactor: number
Recovery Factor (totalPnl / max drawdown), null if unsafe. Higher is better.
expectancy: number
Per-trade Expectancy (winProbavgWin + lossProbavgLoss), null if unsafe. Higher is better.
avgDuration: number
Average trade duration in minutes ((timestamp - pendingAt) / 60_000), null if unsafe.
medianPnl: number
Median pnl — robust to outliers; reveals distribution skew when paired with avgPnl.
avgConsecutiveWinPnl: number
Average sum of pnl across consecutive winning streaks. Null if no win streak.
avgConsecutiveLossPnl: number
Average sum of pnl across consecutive losing streaks. Null if no loss streak. Closer to 0 is better.
avgWinDuration: number
Average duration in minutes of winning trades.
avgLossDuration: number
Average duration in minutes of losing trades.
medianStepSize: number
Median |close[i] - close[i-1]| / close[i-1] across trade closes, in %. Robust to outliers.
buyerPressure: number
Fraction of up-moves among decisive close-to-close moves. 0..1. Higher = buyers more frequent.
sellerPressure: number
Fraction of down-moves among decisive moves. 0..1. Equals 1 - buyerPressure.
buyerStrength: number
Share of upward absolute movement in total close-to-close movement. 0..1.
sellerStrength: number
Share of downward absolute movement in total close-to-close movement. 0..1.
pressureImbalance: number
buyerStrength - sellerStrength ∈ [-1, 1]. Positive = bullish bias on magnitude.
trend: "bullish" | "bearish" | "sideways" | "neutral"
Bivariate trend classification (slope × R²).
trendStrength: number
Log-price regression slope, in %/day.
trendConfidence: number
R² of the log-price regression, in [0, 1].