Backtest trading strategies in Python
Project description
Backtesting.py
Backtest trading strategies with Python.
Project website + Documentation
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
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
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
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
multibacktesting2-0.1.4.tar.gz
(182.2 kB
view details)
Built Distribution
File details
Details for the file multibacktesting2-0.1.4.tar.gz
.
File metadata
- Download URL: multibacktesting2-0.1.4.tar.gz
- Upload date:
- Size: 182.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a8f48df90095d8d3029306d944e93e733fade035d571d76ea080d45ac04b204 |
|
MD5 | 170c05ae1158aa71d45727f4d872ebf0 |
|
BLAKE2b-256 | b8d5ae97457ea29287ecdc66caf4f5a28e71a25a01f740d200db99a98a374af8 |
File details
Details for the file multibacktesting2-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: multibacktesting2-0.1.4-py3-none-any.whl
- Upload date:
- Size: 180.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b897e1c9053f10c89e1a03040d29abdd394bbf4abbab88fa42060f9c394e6fa |
|
MD5 | 7a5cfb83d7c51a293f391af54279388c |
|
BLAKE2b-256 | 79b36f1eceedcd92f7d242415748a5a8fdfe3568f447e729fc7b649cfeba98ad |