Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kernc/backtesting.py
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.
https://github.com/kernc/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: 10 days ago
JSON representation
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.
- Host: GitHub
- URL: https://github.com/kernc/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-08-06T12:05:27.000Z (3 months ago)
- Last Synced: 2024-10-22T22:43:04.846Z (17 days 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,451
- Watchers: 120
- Forks: 1,065
- Open Issues: 178
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- awesome-systematic-trading - backtesting.py - friendly, intuitive, interactive, intelligent and, hopefully, future-proof. | ![GitHub stars](https://badgen.net/github/stars/kernc/backtesting.py) | ![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg) | (Backtesting and Live Trading / General - Event Driven Frameworks)
- awesome - kernc/backtesting.py - :mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python. (Python)
- awesome-python-machine-learning-resources - GitHub - 17% open · ⏱️ 27.03.2022): (金融数据处理)
- awesome-systematic-trading - backtesting.py - commit/kernc/backtesting.py/master) ![GitHub Repo stars](https://img.shields.io/github/stars/kernc/backtesting.py?style=social) | Python | - Backtesting.py is a Python framework for inferring viability of trading strategies on historical (past) data. Improved upon the vision of Backtrader, and by all means surpassingly comparable to other accessible alternatives, Backtesting.py is lightweight, fast, user-friendly, intuitive, interactive, intelligent and, hopefully, future-proof. (Backtest + live trading / General purpose)
- pytrade.org - backtesting.py - 🔍 📈 🐍 💰 Backtest trading strategies in Python. (Curated List / Backtesting Frameworks (only support 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