Files
foxhunt/backtesting/README.md
jgrusewski 6093eac7bf 🔧 Tonic 0.14 Upgrade: Auto-generated and build system changes
Wave 64-65 cleanup: Proto regeneration and build system updates from Tonic 0.12→0.14 upgrade

Files updated:
- Cargo.lock: Dependency resolution for Tonic 0.14.2
- All build.rs: Updated for tonic-prost-build
- Proto files: Regenerated with tonic-prost 0.14
- Examples/tests: Updated for new gRPC API

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 07:34:26 +02:00

49 lines
2.2 KiB
Markdown

# 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).