Backtest trading strategies in Python
Project description
lucit-backtesting - 'backtesting.py' maintained by LUCIT
Backtest trading strategies with Python.
Kudos to Zach Lûster for the original project kernc/backtesting.py
which he built and maintained for 5 years.
We at LUCIT like to use backtesting.py
with our customers in smaller projects.
Unfortunately the project is missing important updates, and therefore we decided to fork the project and release new
stable versions.
We are happy to maintain our forked repository and take care of code reviews, pull requests and releases and hope for good support from the community!
Installation
You can have either backtesting.py
or lucit-backtesting
installed, but not both!
$ pip uninstall backtesting
$ pip install lucit-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
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!
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
Built Distribution
File details
Details for the file lucit-backtesting-1.0.0.tar.gz
.
File metadata
- Download URL: lucit-backtesting-1.0.0.tar.gz
- Upload date:
- Size: 611.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84faf76ab53a15ad707ae0a1570f9db0536a70291a0eedfae000790a3c70daa8 |
|
MD5 | d51137ae9c2a3e80ffd087ecbf16ab02 |
|
BLAKE2b-256 | a73850a71f0ad311be2149d96409fb9c6dcf3d4900910d818a4d705d2d86118c |
File details
Details for the file lucit_backtesting-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: lucit_backtesting-1.0.0-py3-none-any.whl
- Upload date:
- Size: 176.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f62bd3bcf1cc323ef9b860c5976bac679caa50d20b9a43c97a669b9ed099fabe |
|
MD5 | 55399ca96333affbee551fd792673a9f |
|
BLAKE2b-256 | e8528c7bd167725b8a6ba6a61119fb559245a8086b3a89d8ef77e978e5c6b86b |