LiveStatisticsModel

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].