Skip to content

Repository files navigation

Backtesting.py

Build StatusCode CoverageSource lines of codeBacktesting on PyPIPyPI downloadsTotal downloadsStarsGitHub Sponsors

Backtest trading strategies with Python.

Project website + Documentation | YouTube

Installation

$ pip install backtesting

Or if you prefer the bleeding edge:

$ pip install git+https://github.com/kernc/backtesting.py

Usage

frombacktestingimportBacktest, Strategyfrombacktesting.libimportcrossoverfrombacktesting.testimportSMA, GOOGclassSmaCross(Strategy):
definit(self):
price=self.data.Closeself.ma1=self.I(SMA, price, 10)
self.ma2=self.I(SMA, price, 20)
defnext(self):
ifcrossover(self.ma1, self.ma2):
self.buy()
elifcrossover(self.ma2, self.ma1):
self.sell()
bt=Backtest(GOOG, SmaCross, commission=.002,
exclusive_orders=True)
stats=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 Time [%] 94.27
Equity Final [$] 68935.12
Equity Peak [$] 68991.22
Return [%] 589.35
Buy & Hold Return [%] 703.46
Return (Ann.) [%] 25.42
Volatility (Ann.) [%] 38.43
CAGR [%] 16.80
Sharpe Ratio 0.66
Sortino Ratio 1.30
Calmar Ratio 0.77
Alpha [%] 450.62
Beta 0.02
Max. Drawdown [%] -33.08
Avg. Drawdown [%] -5.58
Max. Drawdown Duration 688 days 00:00:00
Avg. Drawdown Duration 41 days 00:00:00
# Trades 93
Win Rate [%] 53.76
Best Trade [%] 57.12
Worst Trade [%] -16.63
Avg. Trade [%] 1.96
Max. Trade Duration 121 days 00:00:00
Avg. Trade Duration 32 days 00:00:00
Profit Factor 2.13
Expectancy [%] 6.91
SQN 1.78
Kelly Criterion 0.6134
_strategy SmaCross(n1=10, n2=20)
_equity_curve Equ...
_trades Size EntryB...
dtype: object

plot of trading simulation

Find more usage examples in the documentation.

Features

xkcd.com/1570

Bugs

Before reporting bugs or posting to the discussion board, please read contributing guidelines, particularly the section about crafting useful bug reports and ```-fencing your code. The maintainers thank you!

Alternatives

See alternatives.md for a list of alternative Python backtesting frameworks and related packages.