Quant.Strategy.Backtest (quant v0.1.0-alpha.1)

Basic backtesting engine for strategy validation.

This module provides a simple backtesting framework to evaluate trading strategies against historical data and calculate performance metrics.

Features

  • Portfolio value tracking over time
  • Position management and trade execution
  • Performance metrics calculation
  • Risk management (stop losses, position sizing)
  • Commission and slippage modeling

Example Usage

strategy = Quant.Strategy.sma_crossover(fast_period: 12, slow_period: 26)
{:ok, results} = Quant.Strategy.Backtest.run(historical_data, strategy,
  initial_capital: 10000.0,
  commission: 0.001
)

Summary

Functions

Execute the actual backtesting simulation.

Run a backtest for the given strategy on historical data.

Types

backtest_options()

@type backtest_options() :: [
  initial_capital: float(),
  position_size: atom() | float(),
  commission: float(),
  slippage: float(),
  max_positions: integer(),
  stop_loss: float(),
  take_profit: float()
]

Functions

execute_backtest(signals_df, opts \\ [])

@spec execute_backtest(Explorer.DataFrame.t(), backtest_options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Execute the actual backtesting simulation.

This function processes signals sequentially and simulates trade execution, portfolio value changes, and risk management.

run(dataframe, strategy, opts \\ [])

@spec run(Explorer.DataFrame.t(), map(), backtest_options()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Run a backtest for the given strategy on historical data.

Parameters

  • dataframe - Historical OHLCV data
  • strategy - Strategy configuration
  • opts - Backtesting options

Options

  • :initial_capital - Starting capital (default: 10000.0)
  • :position_size - Position sizing method or fixed amount (default: :percent_capital)
  • :commission - Trading commission rate (default: 0.001)
  • :slippage - Market slippage rate (default: 0.0005)
  • :max_positions - Maximum concurrent positions (default: 1)
  • :stop_loss - Stop loss percentage (default: nil)
  • :take_profit - Take profit percentage (default: nil)

Returns

DataFrame with backtest results including:

  • Portfolio value over time
  • Positions and trades
  • Performance metrics