Skip to main content

Module backtesting

Module backtesting 

Source
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

StrategyParametersDescription
SmaCrossoverfast, slow periodsDual SMA crossover
RsiReversalperiod, oversold, overboughtMean reversion on RSI
MacdSignalfast, slow, signal periodsMACD line crossover
BollingerMeanReversionperiod, std_devBuy at lower band
SuperTrendFollowperiod, multiplierTrend following
DonchianBreakoutperiodChannel 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§

BacktestConfig
Configuration for backtest execution.
BacktestConfigBuilder
Builder for BacktestConfig
BacktestEngine
Backtest execution engine.
BacktestResult
Complete backtest result
EquityPoint
Point on the equity curve
PerformanceMetrics
Performance metrics summary
Position
An open position
Signal
A trading signal generated by a strategy
SignalMetadata
Metadata attached to signals for analysis
SignalRecord
Record of a generated signal (for analysis)
SignalStrength
Signal strength/confidence (0.0 to 1.0)
Trade
A completed trade (closed position)

Enums§

BacktestError
Backtest-specific errors
PositionSide
Position direction
SignalDirection
Trading signal direction

Type Aliases§

Result
Result type for backtest operations