Skip to main content

lucit-backtesting - 'backtesting.py' maintained by LUCIT

GitHub Release PyPi Release Supported Python Version License PyPi Downloads PyPi Downloads PyPi Downloads PyPI - Status CodeQL Read the Docs Github Telegram Get Free Professional Support GitHub Sponsors

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:

Backtesting HTML result

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

xkcd.com/1570

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!

Metadata

Release files for lucit-backtesting 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lucit-backtesting 1.0.0
File Size Uploaded
lucit-backtesting-1.0.0.tar.gz 611.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lucit-backtesting 1.0.0
File Interpreter ABI Platform
lucit_backtesting-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 788.1 kB

Release files / lucit-backtesting-1.0.0.tar.gz

Download URL lucit-backtesting-1.0.0.tar.gz
Size 611.9 kB
Tags Source
SHA-256 checksum
How to use checksums
84faf76ab53a15ad707ae0a1570f9db0536a70291a0eedfae000790a3c70daa8
BLAKE2b-256 checksum
How to use checksums
a73850a71f0ad311be2149d96409fb9c6dcf3d4900910d818a4d705d2d86118c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / lucit_backtesting-1.0.0-py3-none-any.whl

Download URL lucit_backtesting-1.0.0-py3-none-any.whl
Size 176.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f62bd3bcf1cc323ef9b860c5976bac679caa50d20b9a43c97a669b9ed099fabe
BLAKE2b-256 checksum
How to use checksums
e8528c7bd167725b8a6ba6a61119fb559245a8086b3a89d8ef77e978e5c6b86b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page