use crate::backtesting::metrics::{
AdvancedRiskMetrics, GeneralPerformanceMetrics, MarketConditionMetrics, OptionsSpecificMetrics,
};
use crate::backtesting::types::{
CapitalUtilization, DrawdownAnalysis, TimeSeriesData, TradeRecord, TradeStatistics,
VolatilityData,
};
use crate::risk::RiskMetricsSimulation;
use chrono::{DateTime, Utc};
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct BacktestResult {
pub general_performance: GeneralPerformanceMetrics,
pub options_metrics: OptionsSpecificMetrics,
pub trade_statistics: TradeStatistics,
pub drawdown_analysis: DrawdownAnalysis,
pub capital_utilization: CapitalUtilization,
pub time_series: TimeSeriesData,
pub trades: Vec<TradeRecord>,
pub market_conditions: Option<MarketConditionMetrics>,
pub volatility_data: Option<VolatilityData>,
pub risk_metrics: Option<AdvancedRiskMetrics>,
pub monte_carlo_simulation: Option<SimulationResult>,
pub strategy_name: String,
pub test_period_start: DateTime<Utc>,
pub test_period_end: DateTime<Utc>,
pub initial_capital: Decimal,
pub final_capital: Decimal,
pub custom_metrics: HashMap<String, Decimal>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SimulationResult {
pub simulation_count: usize,
pub risk_metrics: RiskMetricsSimulation,
pub final_equity_percentiles: HashMap<u8, Decimal>,
pub sample_paths: Option<Vec<Vec<Decimal>>>,
}