//! Wave Comparison Backtesting Example //! //! This example demonstrates how to run comprehensive backtesting to validate //! performance improvements across Wave A, Wave B, and Wave C. //! //! Usage: //! ```bash //! cargo run -p backtesting_service --example wave_comparison //! ``` //! //! Expected Output: //! - Console summary with detailed metrics //! - JSON export: results/wave_comparison_ES.FUT_YYYYMMDD_HHMMSS.json //! - CSV export: results/wave_comparison_ES.FUT_YYYYMMDD_HHMMSS.csv use anyhow::Result; use backtesting_service::wave_comparison::{WaveComparisonBacktest, DateRange}; use backtesting_service::repositories::BacktestingRepositories; use chrono::{Duration, Utc}; use std::sync::Arc; use tracing::{info, Level}; use tracing_subscriber; #[tokio::main] async fn main() -> Result<()> { // Initialize logging tracing_subscriber::fmt() .with_max_level(Level::INFO) .init(); info!("šŸš€ Starting Wave Comparison Backtest"); // Create repositories (mock for now, will integrate with DBN) let repositories = Arc::new(BacktestingRepositories::mock()); // Create backtest engine with $100,000 initial capital let backtest = WaveComparisonBacktest::new(repositories, 100_000.0); // Define date range: last 30 days let date_range = DateRange { start: Utc::now() - Duration::days(30), end: Utc::now(), }; // Run comparison for ES.FUT (E-mini S&P 500) info!("šŸ“Š Running comparison for ES.FUT..."); let results = backtest.run_comparison("ES.FUT", date_range).await?; // Print summary to console backtest.print_summary(&results); // Export results to JSON and CSV backtest.export_results(&results)?; info!("\nāœ… Wave Comparison Backtest Complete!"); info!(" Check results/ directory for JSON and CSV exports"); Ok(()) }