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>
49 lines
2.2 KiB
Markdown
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).
|