MCPcopy Index your code
hub / github.com/kernc/backtesting.py

github.com/kernc/backtesting.py @0.6.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.6.5 ↗ · + Follow
378 symbols 1,266 edges 18 files 97 documented · 26% updated 6mo ago★ 8,64358 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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.

Core symbols most depended-on inside this repo

run
called by 45
backtesting/lib.py
crossover
called by 18
backtesting/lib.py
_as_str
called by 12
backtesting/_util.py
try_
called by 8
backtesting/_util.py
resample_apply
called by 7
backtesting/lib.py
SMA
called by 7
backtesting/test/__init__.py
patch
called by 6
backtesting/_util.py
set_tooltips
called by 6
backtesting/_plotting.py

Shape

Method 263
Function 63
Class 52

Languages

Python100%

Modules by API surface

backtesting/test/_test.py135 symbols
backtesting/backtesting.py103 symbols
backtesting/_util.py51 symbols
backtesting/lib.py29 symbols
backtesting/_plotting.py27 symbols
doc/examples/Trading with Machine Learning.py9 symbols
backtesting/_stats.py7 symbols
doc/examples/Multiple Time Frames.py5 symbols
doc/examples/Quick Start User Guide.py4 symbols
doc/examples/Parameter Heatmap & Optimization.py3 symbols
doc/examples/Strategies Library.py2 symbols
backtesting/test/__init__.py2 symbols

For agents

$ claude mcp add backtesting.py \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact