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

const stats = await Live.getData("my-strategy");

console.log(`Total events: ${stats.totalEvents}`);
console.log(`Closed signals: ${stats.totalClosed}`);
console.log(`Win rate: ${stats.winRate}%`);
console.log(`Sharpe Ratio: ${stats.sharpeRatio}`);

// Access raw event data (includes idle, opened, active, closed)
stats.eventList.forEach(event => {
if (event.action === "closed") {
console.log(`Closed signal: ${event.pnl}%`);
}
});
interface LiveStatisticsModel {
    annualizedSharpeRatio: number;
    avgConsecutiveLossPnl: number;
    avgConsecutiveWinPnl: number;
    avgDuration: number;
    avgFallPnl: number;
    avgLossDuration: number;
    avgPeakPnl: number;
    avgPnl: number;
    avgWinDuration: number;
    buyerPressure: number;
    buyerStrength: number;
    calmarRatio: number;
    certaintyRatio: number;
    eventList: TickEvent[];
    expectancy: number;
    expectedYearlyReturns: number;
    lossCount: number;
    medianPnl: number;
    medianStepSize: number;
    pressureImbalance: number;
    recoveryFactor: number;
    sellerPressure: number;
    sellerStrength: number;
    sharpeRatio: number;
    sortinoRatio: number;
    stdDev: number;
    totalClosed: number;
    totalEvents: number;
    totalPnl: number;
    trend: "bullish" | "bearish" | "sideways" | "neutral";
    trendConfidence: number;
    trendStrength: number;
    winCount: number;
    winRate: number;
}

Properties

annualizedSharpeRatio: number

Annualized Sharpe Ratio (sharpeRatio × √tradesPerYear), null if unsafe. Higher is better.

avgConsecutiveLossPnl: number

Average sum of pnl across consecutive losing streaks. Null if no loss streak. Closer to 0 is better.

avgConsecutiveWinPnl: number

Average sum of pnl across consecutive winning streaks. Null if no win streak.

avgDuration: number

Average trade duration in minutes ((timestamp - pendingAt) / 60_000), null if unsafe.

avgFallPnl: number

Average fall PNL percentage across all closed signals (_fall.pnlPercentage), null if unsafe. Closer to 0 is better.

avgLossDuration: number

Average duration in minutes of losing trades.

avgPeakPnl: number

Average peak PNL percentage across all closed signals (_peak.pnlPercentage), null if unsafe. Higher is better.

avgPnl: number

Average PNL per closed signal as percentage, null if unsafe. Higher is better.

avgWinDuration: number

Average duration in minutes of winning trades.

buyerPressure: number

Fraction of up-moves among decisive close-to-close moves. 0..1. Higher = buyers more frequent.

buyerStrength: number

Share of upward absolute movement in total close-to-close movement. 0..1.

calmarRatio: number

Calmar Ratio (annualized expected return / max drawdown), null if unsafe. Higher is better.

certaintyRatio: number

Certainty Ratio (avgWin / |avgLoss|), null if unsafe. Higher is better.

eventList: TickEvent[]

Array of all events (idle, opened, active, closed) with full details

expectancy: number

Per-trade Expectancy (winProbavgWin + lossProbavgLoss), null if unsafe. Higher is better.

expectedYearlyReturns: number

Expected yearly returns based on average trade duration and PNL, null if unsafe. Higher is better.

lossCount: number

Number of losing closed signals (PNL < 0)

medianPnl: number

Median pnl — robust to outliers; reveals distribution skew when paired with avgPnl.

medianStepSize: number

Median |close[i] - close[i-1]| / close[i-1] across trade closes, in %. Robust to outliers.

pressureImbalance: number

buyerStrength - sellerStrength ∈ [-1, 1]. Positive = bullish bias on magnitude.

recoveryFactor: number

Recovery Factor (totalPnl / max drawdown), null if unsafe. Higher is better.

sellerPressure: number

Fraction of down-moves among decisive moves. 0..1. Equals 1 - buyerPressure.

sellerStrength: number

Share of downward absolute movement in total close-to-close movement. 0..1.

sharpeRatio: number

Sharpe Ratio (risk-adjusted return = avgPnl / stdDev), null if unsafe. Higher is better.

sortinoRatio: number

Sortino Ratio (avgPnl / downside deviation — RMS of losing trades only), null if unsafe. Higher is better.

stdDev: number

Standard deviation of returns (volatility metric), null if unsafe. Lower is better.

totalClosed: number

Total number of closed signals only

totalEvents: number

Total number of all events (includes idle, opened, active, closed)

totalPnl: number

Cumulative PNL across all closed signals as percentage, null if unsafe. Higher is better.

trend: "bullish" | "bearish" | "sideways" | "neutral"

Bivariate trend classification (slope × R²).

trendConfidence: number

R² of the log-price regression, in [0, 1].

trendStrength: number

Log-price regression slope, in %/day.

winCount: number

Number of winning closed signals (PNL > 0)

winRate: number

Win rate as percentage (0-100) based on closed signals, null if unsafe. Higher is better.