[](https://kernc.github.io/backtesting.py/)
Backtesting.py
==============
[](https://github.com/kernc/backtesting.py/actions)
[](https://codecov.io/gh/kernc/backtesting.py)
[](https://pypi.org/project/backtesting)
[](https://pypi.org/project/backtesting)
[](https://github.com/sponsors/kernc)
Backtest trading strategies with Python.
[**Project website**](https://kernc.github.io/backtesting.py)
[Documentation]
[](#top) the project if you use it.
[Documentation]: https://kernc.github.io/backtesting.py/doc/backtesting/
Installation
------------
    $ pip install backtesting
Usage
-----
```python
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:
```text
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
Sharpe Ratio                             0.66
Sortino Ratio                            1.30
Calmar Ratio                             0.77
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
_strategy              SmaCross(n1=10, n2=20)
_equity_curve                          Equ...
_trades                       Size  EntryB...
dtype: object
```
[](https://kernc.github.io/backtesting.py/#example)
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

Alternatives
------------
See [alternatives.md] for a list of alternative Python
backtesting frameworks and related packages.
[alternatives.md]: https://github.com/kernc/backtesting.py/blob/master/doc/alternatives.md
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": "https://kernc.github.io/backtesting.py/",
    "name": "Backtesting",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "algo,algorithmic,ashi,backtest,backtesting,bitcoin,bokeh,bonds,candle,candlestick,cboe,chart,cme,commodities,crash,crypto,currency,doji,drawdown,equity,etf,ethereum,exchange,finance,financial,forecast,forex,fund,futures,fx,fxpro,gold,heiken,historical,indicator,invest,investing,investment,macd,market,mechanical,money,oanda,ohlc,ohlcv,order,price,profit,quant,quantitative,rsi,silver,stocks,strategy,ticker,trader,trading,tradingview,usd",
    "author": "Zach L\u00fbster",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/97/41/fb91644ac11bfcd72212fcd187c5388d402b4f8f9ed4a35d0cd61c2c8e1a/Backtesting-0.3.3.tar.gz",
    "platform": "",
    "description": "[](https://kernc.github.io/backtesting.py/)\n\nBacktesting.py\n==============\n[](https://github.com/kernc/backtesting.py/actions)\n[](https://codecov.io/gh/kernc/backtesting.py)\n[](https://pypi.org/project/backtesting)\n[](https://pypi.org/project/backtesting)\n[](https://github.com/sponsors/kernc)\n\nBacktest trading strategies with Python.\n\n[**Project website**](https://kernc.github.io/backtesting.py)\n\n[Documentation]\n\n[](#top) the project if you use it.\n\n[Documentation]: https://kernc.github.io/backtesting.py/doc/backtesting/\n\n\nInstallation\n------------\n\n    $ pip install backtesting\n\n\nUsage\n-----\n```python\nfrom backtesting import Backtest, Strategy\nfrom backtesting.lib import crossover\n\nfrom backtesting.test import SMA, GOOG\n\n\nclass SmaCross(Strategy):\n    def init(self):\n        price = self.data.Close\n        self.ma1 = self.I(SMA, price, 10)\n        self.ma2 = self.I(SMA, price, 20)\n\n    def next(self):\n        if crossover(self.ma1, self.ma2):\n            self.buy()\n        elif crossover(self.ma2, self.ma1):\n            self.sell()\n\n\nbt = Backtest(GOOG, SmaCross, commission=.002,\n              exclusive_orders=True)\nstats = bt.run()\nbt.plot()\n```\n\nResults in:\n\n```text\nStart                     2004-08-19 00:00:00\nEnd                       2013-03-01 00:00:00\nDuration                   3116 days 00:00:00\nExposure Time [%]                       94.27\nEquity Final [$]                     68935.12\nEquity Peak [$]                      68991.22\nReturn [%]                             589.35\nBuy & Hold Return [%]                  703.46\nReturn (Ann.) [%]                       25.42\nVolatility (Ann.) [%]                   38.43\nSharpe Ratio                             0.66\nSortino Ratio                            1.30\nCalmar Ratio                             0.77\nMax. Drawdown [%]                      -33.08\nAvg. Drawdown [%]                       -5.58\nMax. Drawdown Duration      688 days 00:00:00\nAvg. Drawdown Duration       41 days 00:00:00\n# Trades                                   93\nWin Rate [%]                            53.76\nBest Trade [%]                          57.12\nWorst Trade [%]                        -16.63\nAvg. Trade [%]                           1.96\nMax. Trade Duration         121 days 00:00:00\nAvg. Trade Duration          32 days 00:00:00\nProfit Factor                            2.13\nExpectancy [%]                           6.91\nSQN                                      1.78\n_strategy              SmaCross(n1=10, n2=20)\n_equity_curve                          Equ...\n_trades                       Size  EntryB...\ndtype: object\n```\n[](https://kernc.github.io/backtesting.py/#example)\n\nFind more usage examples in the [documentation].\n\n\nFeatures\n--------\n* Simple, well-documented API\n* Blazing fast execution\n* Built-in optimizer\n* Library of composable base strategies and utilities\n* Indicator-library-agnostic\n* Supports _any_ financial instrument with candlestick data\n* Detailed results\n* Interactive visualizations\n\n\n\n\nAlternatives\n------------\nSee [alternatives.md] for a list of alternative Python\nbacktesting frameworks and related packages.\n\n[alternatives.md]: https://github.com/kernc/backtesting.py/blob/master/doc/alternatives.md\n\n\n",
    "bugtrack_url": null,
    "license": "AGPL-3.0",
    "summary": "Backtest trading strategies in Python",
    "version": "0.3.3",
    "project_urls": {
        "Documentation": "https://kernc.github.io/backtesting.py/doc/backtesting/",
        "Homepage": "https://kernc.github.io/backtesting.py/",
        "Source": "https://github.com/kernc/backtesting.py/",
        "Tracker": "https://github.com/kernc/backtesting.py/issues"
    },
    "split_keywords": [
        "algo",
        "algorithmic",
        "ashi",
        "backtest",
        "backtesting",
        "bitcoin",
        "bokeh",
        "bonds",
        "candle",
        "candlestick",
        "cboe",
        "chart",
        "cme",
        "commodities",
        "crash",
        "crypto",
        "currency",
        "doji",
        "drawdown",
        "equity",
        "etf",
        "ethereum",
        "exchange",
        "finance",
        "financial",
        "forecast",
        "forex",
        "fund",
        "futures",
        "fx",
        "fxpro",
        "gold",
        "heiken",
        "historical",
        "indicator",
        "invest",
        "investing",
        "investment",
        "macd",
        "market",
        "mechanical",
        "money",
        "oanda",
        "ohlc",
        "ohlcv",
        "order",
        "price",
        "profit",
        "quant",
        "quantitative",
        "rsi",
        "silver",
        "stocks",
        "strategy",
        "ticker",
        "trader",
        "trading",
        "tradingview",
        "usd"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9741fb91644ac11bfcd72212fcd187c5388d402b4f8f9ed4a35d0cd61c2c8e1a",
                "md5": "7efd9206aa6c08eaf58e017e1bd4a293",
                "sha256": "b2511993ae16596c06d3cfd3d42a662ca69d51a95a604b85705fb1a900e3a798"
            },
            "downloads": -1,
            "filename": "Backtesting-0.3.3.tar.gz",
            "has_sig": false,
            "md5_digest": "7efd9206aa6c08eaf58e017e1bd4a293",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 175495,
            "upload_time": "2021-12-13T01:36:44",
            "upload_time_iso_8601": "2021-12-13T01:36:44.892078Z",
            "url": "https://files.pythonhosted.org/packages/97/41/fb91644ac11bfcd72212fcd187c5388d402b4f8f9ed4a35d0cd61c2c8e1a/Backtesting-0.3.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-12-13 01:36:44",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kernc",
    "github_project": "backtesting.py",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "backtesting"
}