import { ExecutionCostModel, BacktestExecutionCosts, PositionLogData, TestStat, TestThresholdsKey, ThresholdLevel, TestWorkerResult } from '@tradejs/types'; export { c as compactOrderLog, g as getTimeline } from './time-BQ3AXmxo.mjs'; declare const parseTestName: (testName: string) => { symbol: string; testSuiteId: string; testId: string; }; declare const LEGACY_EXECUTION_CONFIG_FIELDS: readonly ["MAKER_FEE_RATE", "TAKER_FEE_RATE", "FUNDING_ENABLED", "SLIPPAGE_BASE_BPS", "SLIPPAGE_SPREAD_MULTIPLIER", "SLIPPAGE_MARKET_IMPACT_BPS", "SLIPPAGE_DELAY_RISK_MULTIPLIER", "EXECUTION_COSTS_CACHE_ONLY"]; declare const assertStrategyExecutionIsolation: (config: Record) => void; /** Validate JSON at ingestion, including explicit zero rates. Never coerce null. */ declare const parseBacktestExecutionCosts: (input: unknown) => BacktestExecutionCosts; /** Stable economic fields only: timestamps and provenance are separate evidence. */ declare const executionCostsFromModel: (model: ExecutionCostModel) => BacktestExecutionCosts; /** * Максимальная просадка (Max Drawdown) в процентах от бегающего пика. * Формула по точкам amount_t: * peak_t = max(amount_0..t) * drawdown_t = (peak_t - amount_t) / peak_t * 100 * MaxDD = max_t(drawdown_t) * Ожидается, что amounts — это последовательные значения equity и > 0. */ declare const calculateMaxDrawdown: (amounts: number[]) => number; type AdvancedTradeDirection = 'LONG' | 'SHORT' | string; interface AdvancedTradeInput { id?: string; timestamp: number; pnl: number; symbol?: string | null; direction?: AdvancedTradeDirection | null; exitReason?: string | null; grossPnl?: number | null; slippageCost?: number | null; approved?: boolean | null; blocked?: boolean | null; session?: string | null; } interface AdvancedExitBreakdownBucket { count: number; share: number | null; } interface AdvancedQuarterlyPnl { quarter: string; pnl: number; } interface AdvancedTradeMetrics { core: { trades: number; wins: number; losses: number; winRate: number | null; totalPnl: number; avgTrade: number | null; grossProfit: number; grossLoss: number; profitFactor: number | null; payoffRatio: number | null; expectancy: number | null; tradesPerDay: number | null; tradesPerWeek: number | null; }; risk: { maxDrawdown: number | null; maxDrawdownPercent: number | null; maxDrawdownToTotalProfit: number | null; maxDrawdownToGrossProfit: number | null; recoveryFactor: number | null; maxLossStreak: number; losingMonthsCount: number; worstMonthPnl: number | null; worstRolling30dPnl: number | null; worstRolling90dPnl: number | null; }; stability: { monthlyWinRate: number | null; positiveMonthsPercent: number | null; quarterlyPnl: AdvancedQuarterlyPnl[]; rolling365Pnl: number | null; medianMonthlyPnl: number | null; iqrMonthlyPnl: number | null; top5ProfitShare: number | null; top10ProfitShare: number | null; }; distribution: { medianTrade: number | null; p10Trade: number | null; p25Trade: number | null; p75Trade: number | null; p90Trade: number | null; largestWin: number | null; largestLoss: number | null; tailRatio: number | null; skewness: number | null; }; riskAdjusted: { sharpeDaily: number | null; sortinoDaily: number | null; calmar: number | null; mar: number | null; }; operational: { avgSlippageCost: number | null; pnlBeforeSlippage: number | null; pnlAfterSlippage: number; approvalRate: number | null; blockedProfitableTrades: number; approvedLosingTrades: number; symbolConcentrationTop1: number | null; symbolConcentrationTop5: number | null; sessionConcentrationTop1: number | null; longTrades: number; shortTrades: number; longPnl: number; shortPnl: number; exitBreakdown: { takeProfit: AdvancedExitBreakdownBucket; stopLoss: AdvancedExitBreakdownBucket; exit: AdvancedExitBreakdownBucket; unknown: AdvancedExitBreakdownBucket; }; }; } interface AdvancedTradeMetricsInput { trades: AdvancedTradeInput[]; orderLog?: ReadonlyArray; startTimestamp?: number | null; endTimestamp?: number | null; } declare const calculateAdvancedTradeMetrics: ({ trades, orderLog, startTimestamp, endTimestamp, }: AdvancedTradeMetricsInput) => AdvancedTradeMetrics; /** * Рассчитывает компактный набор действительно полезных метрик: * - Период и частота (periodDays/Months, trades, tradesPerMonth, exposure) * - Доходность (final amount, netProfit, totalReturn %, CAGR %) * - Риск (MaxDD %) и Calmar (CAGR / MaxDD) * - Качество сделок (winRate %, payoff, expectancyPerTrade %, streaks) * - Sharpe (годовой) — по месячным ретёрнам equity (EOM) * * Возвратные проценты (totalReturn, cagr, exposure, maxDrawdown, expectancyPerTrade) — уже в %. * Шарп — безразмерная величина (annualized). */ declare const calculateStatsFull: (positionLogData: PositionLogData) => TestStat | null; declare const classifyMetric: (name: TestThresholdsKey, value: number) => ThresholdLevel; declare const getBacktestScore: (stat: Partial) => number; declare const sortBestTests: (results: TestWorkerResult[], limit?: number) => TestWorkerResult[]; declare const getFormatted: (stat: Partial | undefined, key: TestThresholdsKey) => { formatted: string; level: ThresholdLevel; }; export { type AdvancedExitBreakdownBucket, type AdvancedQuarterlyPnl, type AdvancedTradeDirection, type AdvancedTradeInput, type AdvancedTradeMetrics, type AdvancedTradeMetricsInput, LEGACY_EXECUTION_CONFIG_FIELDS, assertStrategyExecutionIsolation, calculateAdvancedTradeMetrics, calculateMaxDrawdown, calculateStatsFull, classifyMetric, executionCostsFromModel, getBacktestScore, getFormatted, parseBacktestExecutionCosts, parseTestName, sortBestTests };