Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://kernc.github.io/backtesting.py/
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.
https://kernc.github.io/backtesting.py/
algo-trading algorithmic-trading backtesting backtesting-engine backtesting-frameworks backtesting-trading-strategies finance financial-markets forex forex-trading framework hacktoberfest investing investment investment-strategies stocks trading trading-algorithms trading-simulator trading-strategies
Last synced: 3 months ago
JSON representation
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.
- Host: GitHub
- URL: https://kernc.github.io/backtesting.py/
- Owner: kernc
- License: agpl-3.0
- Created: 2019-01-02T03:11:32.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-07-17T16:29:56.000Z (4 months ago)
- Last Synced: 2024-08-01T03:17:41.956Z (3 months ago)
- Topics: algo-trading, algorithmic-trading, backtesting, backtesting-engine, backtesting-frameworks, backtesting-trading-strategies, finance, financial-markets, forex, forex-trading, framework, hacktoberfest, investing, investment, investment-strategies, stocks, trading, trading-algorithms, trading-simulator, trading-strategies
- Language: Python
- Homepage: https://kernc.github.io/backtesting.py/
- Size: 8.67 MB
- Stars: 5,172
- Watchers: 115
- Forks: 1,015
- Open Issues: 169
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- awesome-quant - Backtesting.py - Backtest trading strategies in Python (Python / Trading & Backtesting)
- awesome-quant - Backtesting.py - Backtest trading strategies in Python (Python / Trading & Backtesting)
README
[![](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 crossoverfrom 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