Backtrader is one of the most popular open source frameworks for backtesting and live trading in Python. Its clean syntax, extensive documentation, and strong community make it ideal for both beginners and advanced traders. In this guide, we’ll walk through how to set up your first algorithmic trading strategy using Backtrader.

New to Backtrader? Check out our detailed Backtrader overview to get started.


Step 1: Install Backtrader

You can install Backtrader using pip:

pip install backtrader

# Optional: You may also want to install matplotlib for plotting and pandas for data handling:

pip install matplotlib pandas

Step 2: Prepare Historical Data

Backtrader supports CSV, Pandas DataFrames, and even live data from brokers. For now, let’s load a CSV file:

import backtrader as bt  
import datetime

data = bt.feeds.YahooFinanceCSVData(
    dataname='your-data.csv',
    fromdate=datetime.datetime(2020, 1, 1),
    todate=datetime.datetime(2023, 12, 31),
    reverse=False
)

Make sure your CSV includes columns like: Date, Open, High, Low, Close, Volume, Adj Close.


Step 3: Create a Strategy

Create a strategy class by inheriting from bt.Strategy. Let’s implement a simple Moving Average Crossover:

class SmaCross(bt.Strategy):
    params = dict(period=20)

    def __init__(self):
        sma = bt.ind.SMA(period=self.p.period)
        self.crossover = bt.ind.CrossOver(self.data.close, sma)

    def next(self):
        if not self.position:
            if self.crossover > 0:
                self.buy()
        elif self.crossover < 0:
            self.close()

Step 4: Set Up the Backtest Engine

Now create a Cerebro engine — Backtrader’s central brain.

cerebro = bt.Cerebro()  
cerebro.addstrategy(SmaCross)  
cerebro.adddata(data)  
cerebro.broker.setcash(10000)  
cerebro.broker.setcommission(commission=0.001)

Step 5: Run the Strategy

print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())  
cerebro.run()  
print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())

cerebro.plot()

You’ll see your strategy’s entry and exit points visually plotted, along with portfolio performance.


Step 6: Extend with More Features

As you gain experience, consider adding:

  • Stop-loss & take-profit logic
  • Multiple indicators
  • Custom analyzers (Sharpe, Drawdown, etc.)
  • Parameter optimization

Backtrader supports all of these features natively. You can also connect it to Interactive Brokers or OANDA for live trading.


Final Tips

  • Keep your strategy modular: separate logic, data, and parameters
  • Use realistic assumptions for slippage, commissions, and latency
  • Validate with multiple time periods and market conditions

Learn More

To learn more about Backtrader and read our in-depth review, visit this detailed guide.

Looking for the right open source trading framework? Start with our full comparison and reviews.

Backtest boldly. Trade wisely.