Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

kernc/backtesting.py

Repository files navigation

Backtesting.py

Build Status Code Coverage Source lines of code Backtesting on PyPI PyPI downloads Total downloads GitHub Sponsors

Backtest trading strategies with Python.

Project website + Documentation | YouTube

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):
 price = self.data.Close
 self.ma1 = self.I(SMA, price, 10)
 self.ma2 = self.I(SMA, price, 20)
 def next(self):
 if crossover(self.ma1, self.ma2):
 self.buy()
 elif crossover(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

  • 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

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. We thank you!

Alternatives

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

Sponsor this project

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /