Expand description
Backtesting engine for trading strategy simulation.
This module provides a complete backtesting framework with:
- Expression-based strategy builder for custom entry/exit conditions
- Pre-built strategies (SMA, RSI, MACD, Bollinger, SuperTrend, Donchian)
- Full technical indicator coverage (40+ indicators)
- Position tracking with long/short support
- Stop-loss, take-profit, and trailing stop management
- Comprehensive performance metrics
§Quick Start
use finance_query::{Ticker, Interval, TimeRange};
use finance_query::backtesting::{SmaCrossover, BacktestConfig};
let ticker = Ticker::new("AAPL").await?;
let result = ticker.backtest(
SmaCrossover::new(10, 20),
Interval::OneDay,
TimeRange::OneYear,
None,
).await?;
println!("Return: {:.2}%", result.metrics.total_return_pct);
println!("Sharpe: {:.2}", result.metrics.sharpe_ratio);
println!("Max Drawdown: {:.2}%", result.metrics.max_drawdown_pct * 100.0);§Custom Strategies with StrategyBuilder
Build custom strategies using the fluent builder API:
ⓘ
use finance_query::backtesting::StrategyBuilder;
use finance_query::backtesting::refs::*;
use finance_query::backtesting::condition::*;
let strategy = StrategyBuilder::new("RSI Mean Reversion")
.entry(
rsi(14).crosses_below(30.0)
.and(price().above_ref(sma(200)))
)
.exit(
rsi(14).crosses_above(70.0)
.or(stop_loss(0.05))
)
.build();§Configuration
use finance_query::backtesting::BacktestConfig;
let config = BacktestConfig::builder()
.initial_capital(50_000.0)
.commission_pct(0.001) // 0.1% per trade
.slippage_pct(0.0005) // 0.05% slippage
.stop_loss_pct(0.05) // 5% stop-loss
.take_profit_pct(0.15) // 15% take-profit
.allow_short(true)
.build()
.unwrap();§Pre-built Strategies
| Strategy | Parameters | Description |
|---|---|---|
SmaCrossover | fast, slow periods | Dual SMA crossover |
RsiReversal | period, oversold, overbought | Mean reversion on RSI |
MacdSignal | fast, slow, signal periods | MACD line crossover |
BollingerMeanReversion | period, std_dev | Buy at lower band |
SuperTrendFollow | period, multiplier | Trend following |
DonchianBreakout | period | Channel breakout |
§Available Indicators
The strategy builder supports all indicators via refs:
- Moving Averages:
sma,ema,wma,dema,tema,hma,vwma,alma,mcginley - Oscillators:
rsi,stochastic,stochastic_rsi,cci,williams_r,cmo,awesome_oscillator - Trend:
macd,adx,aroon,supertrend,ichimoku,parabolic_sar - Volatility:
atr,bollinger,keltner,donchian,choppiness_index - Volume:
obv,vwap,mfi,cmf,chaikin_oscillator,accumulation_distribution,balance_of_power
§Available Conditions
Build conditions via condition:
- Comparisons:
above(),below(),crosses_above(),crosses_below(),between(),equals() - Composites:
and(),or(),not() - Position Management:
stop_loss(),take_profit(),trailing_stop(),trailing_take_profit() - Position State:
has_position(),no_position(),is_long(),is_short(),in_profit(),in_loss()
Re-exports§
pub use strategy::Strategy;pub use strategy::StrategyContext;pub use strategy::StrategyBuilder;pub use strategy::BollingerMeanReversion;pub use strategy::DonchianBreakout;pub use strategy::MacdSignal;pub use strategy::RsiReversal;pub use strategy::SmaCrossover;pub use strategy::SuperTrendFollow;
Modules§
- condition
- Condition system for building strategy entry/exit rules.
- refs
- Indicator reference system for building strategy conditions.
- strategy
- Strategy trait and context for building trading strategies.
Structs§
- Backtest
Config - Configuration for backtest execution.
- Backtest
Config Builder - Builder for BacktestConfig
- Backtest
Engine - Backtest execution engine.
- Backtest
Result - Complete backtest result
- Equity
Point - Point on the equity curve
- Performance
Metrics - Performance metrics summary
- Position
- An open position
- Signal
- A trading signal generated by a strategy
- Signal
Metadata - Metadata attached to signals for analysis
- Signal
Record - Record of a generated signal (for analysis)
- Signal
Strength - Signal strength/confidence (0.0 to 1.0)
- Trade
- A completed trade (closed position)
Enums§
- Backtest
Error - Backtest-specific errors
- Position
Side - Position direction
- Signal
Direction - Trading signal direction
Type Aliases§
- Result
- Result type for backtest operations