[![](https://i.imgur.com/E8Kj69Y.png)](https://kernc.github.io/backtesting.py/)
Backtesting.py
==============
[![Build Status](https://img.shields.io/github/actions/workflow/status/kernc/backtesting.py/ci.yml?branch=master&style=for-the-badge)](https://github.com/kernc/backtesting.py/actions)
[![Code Coverage](https://img.shields.io/codecov/c/gh/kernc/backtesting.py.svg?style=for-the-badge)](https://codecov.io/gh/kernc/backtesting.py)
[![Backtesting on PyPI](https://img.shields.io/pypi/v/backtesting.svg?color=blue&style=for-the-badge)](https://pypi.org/project/backtesting)
[![PyPI downloads](https://img.shields.io/pypi/dd/backtesting.svg?color=skyblue&style=for-the-badge)](https://pypi.org/project/backtesting)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/kernc?color=pink&style=for-the-badge)](https://github.com/sponsors/kernc)
Backtest trading strategies with Python.
[**Project website**](https://kernc.github.io/backtesting.py) + [Documentation]
[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
Kelly Criterion 0.6134
_strategy SmaCross(n1=10, n2=20)
_equity_curve Equ...
_trades Size EntryB...
dtype: object
```
[![plot of trading simulation](https://i.imgur.com/xRFNHfg.png)](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
![xkcd.com/1570](https://imgs.xkcd.com/comics/engineer_syllogism.png)
Bugs
----
Before reporting bugs or posting to the
[discussion board](https://github.com/kernc/backtesting.py/discussions),
please read [contributing guidelines](CONTRIBUTING.md), 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.
[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": "MultipleBacktesting2",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"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, simulation, stocks, strategy, ticker, trader, trading, tradingview, usd",
"author": "Zach L\u00fbster",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/d2/a6/82de30c0f88a7c6668ce867135098e37a4e2ce40d82c49005258c7d3cfdc/multiplebacktesting2-0.1.10.tar.gz",
"platform": null,
"description": "[![](https://i.imgur.com/E8Kj69Y.png)](https://kernc.github.io/backtesting.py/)\n\nBacktesting.py\n==============\n[![Build Status](https://img.shields.io/github/actions/workflow/status/kernc/backtesting.py/ci.yml?branch=master&style=for-the-badge)](https://github.com/kernc/backtesting.py/actions)\n[![Code Coverage](https://img.shields.io/codecov/c/gh/kernc/backtesting.py.svg?style=for-the-badge)](https://codecov.io/gh/kernc/backtesting.py)\n[![Backtesting on PyPI](https://img.shields.io/pypi/v/backtesting.svg?color=blue&style=for-the-badge)](https://pypi.org/project/backtesting)\n[![PyPI downloads](https://img.shields.io/pypi/dd/backtesting.svg?color=skyblue&style=for-the-badge)](https://pypi.org/project/backtesting)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/kernc?color=pink&style=for-the-badge)](https://github.com/sponsors/kernc)\n\nBacktest trading strategies with Python.\n\n[**Project website**](https://kernc.github.io/backtesting.py) + [Documentation]\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\nKelly Criterion 0.6134\n_strategy SmaCross(n1=10, n2=20)\n_equity_curve Equ...\n_trades Size EntryB...\ndtype: object\n```\n[![plot of trading simulation](https://i.imgur.com/xRFNHfg.png)](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![xkcd.com/1570](https://imgs.xkcd.com/comics/engineer_syllogism.png)\n\n\nBugs\n----\nBefore reporting bugs or posting to the\n[discussion board](https://github.com/kernc/backtesting.py/discussions),\nplease read [contributing guidelines](CONTRIBUTING.md), particularly the section\nabout crafting useful bug reports and ```` ``` ````-fencing your code. We thank you!\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",
"bugtrack_url": null,
"license": "AGPL-3.0",
"summary": "Backtest trading strategies in Python",
"version": "0.1.10",
"project_urls": {
"Documentation": "https://kernc.github.io/backtesting.py/doc/backtesting/",
"Homepage": "https://kernc.github.io/backtesting.py/",
"Source": "https://github.com/Scottman625/backtesting.py/",
"Tracker": "https://github.com/Scottman625/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",
" simulation",
" stocks",
" strategy",
" ticker",
" trader",
" trading",
" tradingview",
" usd"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "127b8f30bdae9016a3c95c3c251623d02c2aa51b600d54f39ad17bac795ce000",
"md5": "2f0398d98011d0f55950bbd547214d82",
"sha256": "4331a328fef4c87e43f7e869b92518499e253bce20f4cf7679c921f24d3c0275"
},
"downloads": -1,
"filename": "MultipleBacktesting2-0.1.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2f0398d98011d0f55950bbd547214d82",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 70377,
"upload_time": "2024-08-16T08:51:01",
"upload_time_iso_8601": "2024-08-16T08:51:01.987420Z",
"url": "https://files.pythonhosted.org/packages/12/7b/8f30bdae9016a3c95c3c251623d02c2aa51b600d54f39ad17bac795ce000/MultipleBacktesting2-0.1.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d2a682de30c0f88a7c6668ce867135098e37a4e2ce40d82c49005258c7d3cfdc",
"md5": "e2fb75f634179c42373a785c4bbec62d",
"sha256": "a3a7fc82b3f8c727a3074486beff86838b28c8caa4c1718c0739c3a86132a700"
},
"downloads": -1,
"filename": "multiplebacktesting2-0.1.10.tar.gz",
"has_sig": false,
"md5_digest": "e2fb75f634179c42373a785c4bbec62d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 67081,
"upload_time": "2024-08-16T08:51:03",
"upload_time_iso_8601": "2024-08-16T08:51:03.715167Z",
"url": "https://files.pythonhosted.org/packages/d2/a6/82de30c0f88a7c6668ce867135098e37a4e2ce40d82c49005258c7d3cfdc/multiplebacktesting2-0.1.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-16 08:51:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Scottman625",
"github_project": "backtesting.py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "multiplebacktesting2"
}