pub struct BacktestResult {Show 41 fields
pub initial_balance: f64,
pub final_balance: f64,
pub total_pnl: f64,
pub total_trades: usize,
pub winning_trades: usize,
pub losing_trades: usize,
pub win_rate: f64,
pub max_drawdown: f64,
pub max_drawdown_pct: f64,
pub profit_factor: f64,
pub equity_curve: Vec<(NaiveDateTime, f64)>,
pub trade_log: Vec<TradeResult>,
pub summary: SubsetStats,
pub per_symbol: BTreeMap<String, SubsetStats>,
pub per_group: BTreeMap<GroupId, SubsetStats>,
pub long_stats: SubsetStats,
pub short_stats: SubsetStats,
pub per_close_reason: Vec<CloseReasonStats>,
pub streaks: StreakStats,
pub risk_metrics: RiskMetrics,
pub duration_stats: Option<DurationStats>,
pub monthly_returns: Vec<MonthlyReturn>,
pub positions: Vec<PositionSummary>,
pub total_positions: usize,
pub winning_positions: usize,
pub losing_positions: usize,
pub position_win_rate: f64,
pub future_format_version: Option<u32>,
pub execution_metadata: Option<ExecutionMetadata>,
pub recorded_fills: Vec<RecordedFill>,
pub action_dispositions: Vec<ActionDisposition>,
pub close_events: Vec<CloseEvent>,
pub completed_positions: Vec<CompletedPosition>,
pub open_position_snapshots: Vec<OpenPositionSnapshot>,
pub pending_order_snapshots: Vec<PendingOrderSnapshot>,
pub pending_order_lifecycle: Vec<PendingOrderLifecycleEvent>,
pub mtm_equity_curve: Vec<EquityPoint>,
pub mtm_output_summary: MtmOutputSummary,
pub mtm_max_drawdown: Option<f64>,
pub mtm_max_drawdown_pct: Option<f64>,
pub provider_evaluation: Option<EvaluationReport>,
}Expand description
Aggregate backtest statistics produced by BacktestRunner.
Fields§
§initial_balance: f64Starting account balance.
final_balance: f64Final account balance (initial + total realized P&L).
total_pnl: f64Sum of all realized P&L.
total_trades: usizeNumber of completed trades (full + partial closes).
winning_trades: usizeNumber of trades with positive P&L.
losing_trades: usizeNumber of trades with negative P&L.
win_rate: f64winning_trades / total_trades (0.0 if no trades).
max_drawdown: f64Largest peak-to-trough drawdown in absolute terms.
max_drawdown_pct: f64Largest peak-to-trough drawdown as a percentage of the peak.
profit_factor: f64Sum of winning P&L / abs(sum of losing P&L). f64::INFINITY if no losers.
equity_curve: Vec<(NaiveDateTime, f64)>Equity value at each trade close: (timestamp, balance).
trade_log: Vec<TradeResult>Full trade log (one entry per close event).
summary: SubsetStatsFull aggregate stats in SubsetStats form.
per_symbol: BTreeMap<String, SubsetStats>Stats broken down by symbol.
per_group: BTreeMap<GroupId, SubsetStats>Stats broken down by group (empty if no positions were grouped).
long_stats: SubsetStatsStats for long (Buy) trades.
short_stats: SubsetStatsStats for short (Sell) trades.
per_close_reason: Vec<CloseReasonStats>Breakdown by close reason, sorted by count descending.
streaks: StreakStatsConsecutive win/loss streak analysis.
risk_metrics: RiskMetricsRisk-adjusted return metrics (Sharpe, Sortino, Calmar, drawdown duration).
duration_stats: Option<DurationStats>Trade holding time statistics. None if no trades.
monthly_returns: Vec<MonthlyReturn>Monthly P&L breakdown.
positions: Vec<PositionSummary>Per-position summaries. Legacy reports aggregate close-event rows; FutureQuote
reports include only campaigns present in completed_positions.
total_positions: usizeNumber of unique legacy positions or completed FutureQuote campaigns.
winning_positions: usizeWinning legacy positions or epsilon-classified FutureQuote campaigns.
losing_positions: usizeLosing legacy positions or epsilon-classified FutureQuote campaigns.
position_win_rate: f64Position-level win rate: winning_positions / total_positions.
future_format_version: Option<u32>§execution_metadata: Option<ExecutionMetadata>§recorded_fills: Vec<RecordedFill>§action_dispositions: Vec<ActionDisposition>§close_events: Vec<CloseEvent>§completed_positions: Vec<CompletedPosition>§open_position_snapshots: Vec<OpenPositionSnapshot>§pending_order_snapshots: Vec<PendingOrderSnapshot>§pending_order_lifecycle: Vec<PendingOrderLifecycleEvent>§mtm_equity_curve: Vec<EquityPoint>§mtm_output_summary: MtmOutputSummary§mtm_max_drawdown: Option<f64>§mtm_max_drawdown_pct: Option<f64>§provider_evaluation: Option<EvaluationReport>Implementations§
Source§impl BacktestResult
impl BacktestResult
Sourcepub fn from_trade_log(initial_balance: f64, trade_log: Vec<TradeResult>) -> Self
pub fn from_trade_log(initial_balance: f64, trade_log: Vec<TradeResult>) -> Self
Build aggregate statistics from a trade log.
Sourcepub fn from_future_artifacts(artifacts: FutureBacktestArtifacts) -> Self
pub fn from_future_artifacts(artifacts: FutureBacktestArtifacts) -> Self
Build legacy close-event rows plus completed-position FutureQuoteV1 statistics and additive artifacts using the backward-compatible all-sections report.
Sourcepub fn from_future_artifacts_with_options(
artifacts: FutureBacktestArtifacts,
evaluation_options: EvaluationOptions,
) -> Self
pub fn from_future_artifacts_with_options( artifacts: FutureBacktestArtifacts, evaluation_options: EvaluationOptions, ) -> Self
Build a FutureQuoteV1 result and apply typed provider-evaluation selection.
Trait Implementations§
Source§impl Clone for BacktestResult
impl Clone for BacktestResult
Source§fn clone(&self) -> BacktestResult
fn clone(&self) -> BacktestResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more