A Python framework for backtesting and optimizing trading strategies with support for multiple assets, long/short positions, margin trading, and comprehensive performance analytics.
- Multi-Asset Support: Track and trade multiple assets simultaneously.
- Backtesting Engine: Full-featured backtester with support for:
- Long and short positions
- Margin trading and margin calls
- Stop loss and take profit orders
- Commission and slippage modeling
- Optimization: Parameter optimization using Optuna with persistent storage.
- Performance Metrics: Sharpe ratio, Sortino ratio, Calmar ratio, profit factor, and more.
- Visualization: Equity curve plotting and detailed trade logs.
pip install -r requirements.txtfrom core import Backtester
from strategies import BuyAndHold
from utils import data_downloader
# Download data
data = data_downloader.download("SPY", start_date="2020-01-01", end_date="2023-12-31")
# Initialize strategy and backtester
strategy = BuyAndHold(tickers="SPY", data={"SPY": data})
backtester = Backtester(
strategy=strategy,
initial_cash=10000.0,
commission=0.001,
slippage=0.0005
)
# Run backtest
backtester.run_backtest()
backtester.print_performance_metrics()
backtester.plot_equity_curve()Extend the Strategy base class and implement the compute_signals() method:
from core import Strategy
from utils import Signal
class MyStrategy(Strategy):
def compute_signals(self):
# Your strategy logic here
for timestamp in self.index:
# Set signals and allocations
self.signals["TICKER"].loc[timestamp, "Signal"] = Signal.LONG
self.signals["TICKER"].loc[timestamp, "Allocation"] = 1.0