Strip all 413 #[allow(dead_code)] annotations from 139 files and remove the actual dead code they were suppressing: unused struct fields (and their constructor sites), unused methods/functions, and entire dead structs. Key removals: - trading_engine compliance: ~50 dead structs/fields across audit, reporting, SOX modules - trading_service: dead execution engine fields, broker routing, paper trading methods - ml_training_service: dead TLS validation (~340 lines), GPU state, monitoring fields - backtesting_service: dead model cache, TLS validation, TradeSignal fields - risk: dead VaR engine fields, safety coordinator fields, position tracker fields - adaptive-strategy: dead ensemble methods, regime detection, sizing functions 147 files changed, -4264 net lines. Workspace compiles with 0 errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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
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
cargo test --package backtesting
Documentation
Full API documentation is available at docs.rs/backtesting.