Skip to content
🔎 📈 🐍 💰 Backtest trading strategies in Python.
Branch: master
Clone or download
Pull request Compare This branch is even with kernc:master.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github MNT: Add sitemap.txt generation for gh-pages Jan 12, 2019
backtesting REF: Add `Straetgy.data.<array>.to_series()` method Jan 15, 2019
doc
.codecov.yml
.coveragerc Add initial Backtesting.py (squashed dev branch) Jan 7, 2019
.flake8
.gitignore MNT: .gitignore: add .eggs dir Jan 15, 2019
.travis.yml MNT: Move extras/scripts around a bit Jan 7, 2019
CONTRIBUTING.md Add CONTRIBUTING.md Jan 7, 2019
LICENSE.md Add initial Backtesting.py (squashed dev branch) Jan 7, 2019
MANIFEST.in MNT: Move extras/scripts around a bit Jan 7, 2019
README.md DOC: Update README.md Jan 18, 2019
requirements.txt
setup.py

README.md

Backtesting.py

Build Status Code Coverage Backtesting on PyPI

Backtest trading strategies with Python.

Project website

Documentation

Installation

$ pip install backtesting

Usage

from backtesting import Backtest, Strategy
from backtesting.lib import crossover

from backtesting.test import SMA, GOOG


class SmaCross(Strategy):
    def init(self):
        Close = self.data.Close
        self.ma1 = self.I(SMA, Close, 10)
        self.ma2 = self.I(SMA, Close, 20)

    def next(self):
        if crossover(self.ma1, self.ma2):
            self.buy()
        elif crossover(self.ma2, self.ma1):
            self.sell()


bt = Backtest(GOOG, SmaCross,
              cash=10000, commission=.002)
bt.run()
bt.plot()

Results in:

Start                     2004-08-19 00:00:00
End                       2013-03-01 00:00:00
Duration                   3116 days 00:00:00
Exposure [%]                            94.29
Equity Final [$]                     69665.12
Equity Peak [$]                      69722.15
Return [%]                             596.65
Buy & Hold Return [%]                  703.46
Max. Drawdown [%]                      -33.61
Avg. Drawdown [%]                       -5.68
Max. Drawdown Duration      689 days 00:00:00
Avg. Drawdown Duration       41 days 00:00:00
# Trades                                   93
Win Rate [%]                            53.76
Best Trade [%]                          56.98
Worst Trade [%]                        -17.03
Avg. Trade [%]                           2.44
Max. Trade Duration         121 days 00:00:00
Avg. Trade Duration          32 days 00:00:00
Expectancy [%]                           6.92
SQN                                      1.77
Sharpe Ratio                             0.22
Sortino Ratio                            0.54
Calmar Ratio                             0.07
_strategy                            SmaCross

plot of trading simulation

Find more usage examples in the documentation.

Features

  • Simple, well-documented API
  • Blazing fast execution
  • Built-in optimizer
  • Library of composable base strategies and utilities
  • Indicator-library-agnostic
  • Supports any financial instrument with candlestick data
  • Detailed results
  • Interactive visualizations
You can’t perform that action at this time.