# Backtesting Crate ## Overview The `backtesting` crate provides a robust and configurable engine for simulating trading strategies against historical market data. It enables quantitative analysts and developers to evaluate strategy performance, optimize parameters, and validate hypotheses before live deployment. ## Features * **Historical Data Replay:** Efficiently replays market data from Parquet files, supporting various data granularities (ticks, order book snapshots, candles). * **Comprehensive Performance Metrics:** Calculates key performance indicators such as Sharpe Ratio, Maximum Drawdown, Alpha, Beta, Sortino Ratio, and more. * **Realistic Slippage Modeling:** Configurable slippage models (e.g., fixed, percentage, volume-based) to accurately reflect real-world execution costs. * **Commission Modeling:** Supports various commission structures (e.g., fixed per trade, percentage of value, per share/contract) for accurate P&L calculation. * **Detailed Trade Analytics:** Generates in-depth reports on individual trades, cumulative P&L, win/loss ratios, and trade duration analysis. * **Pluggable Strategy Interface:** Defines a clear interface for users to implement and integrate their custom trading strategies seamlessly. ## Usage ```rust use backtesting::{Backtester, BacktestConfig}; use common::types::InstrumentId; use std::path::PathBuf; let config = BacktestConfig { start_time: "2023-01-01T00:00:00Z".parse().unwrap(), end_time: "2023-01-02T00:00:00Z".parse().unwrap(), data_path: PathBuf::from("./historical_data/"), instruments: vec![InstrumentId::new("BTCUSD".to_string())], // ... other configuration like slippage, commissions }; // let mut backtester = Backtester::new(config); // let strategy = MySimpleStrategy::new(); // Initialize your strategy // backtester.run(&strategy).expect("Backtest failed"); // let results = backtester.get_results(); // println!("Sharpe Ratio: {}", results.sharpe_ratio); // println!("Max Drawdown: {}", results.max_drawdown); ``` ## Testing ```bash cargo test --package backtesting ``` ## Documentation Full API documentation is available at [docs.rs/backtesting](https://docs.rs/backtesting).