Backtest trading strategies in Python
Project description
Backtesting.py
Backtest trading strategies with Python.
Project website + Documentation | YouTube
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
CAGR [%] 16.80
Sharpe Ratio 0.66
Sortino Ratio 1.30
Calmar Ratio 0.77
Alpha [%] 450.62
Beta 0.02
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
backtesting-0.6.4.tar.gz
(192.9 kB
view details)
Built Distribution
backtesting-0.6.4-py3-none-any.whl
(191.4 kB
view details)
File details
Details for the file backtesting-0.6.4.tar.gz
.
File metadata
- Download URL: backtesting-0.6.4.tar.gz
- Upload date:
- Size: 192.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
f176ac6fb546dfd5d743f038ee5824624e55a38a493c4dd5821731b74c867aae
|
|
MD5 |
8e04143f90cd26152b92eccce4f61450
|
|
BLAKE2b-256 |
ae913e7d81c3ad22b3881f5ee8cabd8e69bb611409714647a6e875665b4c8c10
|
File details
Details for the file backtesting-0.6.4-py3-none-any.whl
.
File metadata
- Download URL: backtesting-0.6.4-py3-none-any.whl
- Upload date:
- Size: 191.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0572ea94419998d8d0d517ce82ecbea4cda3df2c05554dc32c3fe7aa3e21929c
|
|
MD5 |
97718c8b9285dc44b8cb0faff28a2bb6
|
|
BLAKE2b-256 |
8d93399248543781d93d3adac409ee16708942ba6e9693577c3ecff0964d092d
|