Skip to main content

Backtest trading strategies in Python

Project description

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!

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

lucit-backtesting-1.0.0.tar.gz (611.9 kB view details)

Uploaded Source

Built Distribution

lucit_backtesting-1.0.0-py3-none-any.whl (176.2 kB view details)

Uploaded Python 3

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

Hashes for lucit-backtesting-1.0.0.tar.gz
Algorithm Hash digest
SHA256 84faf76ab53a15ad707ae0a1570f9db0536a70291a0eedfae000790a3c70daa8
MD5 d51137ae9c2a3e80ffd087ecbf16ab02
BLAKE2b-256 a73850a71f0ad311be2149d96409fb9c6dcf3d4900910d818a4d705d2d86118c

See more details on using hashes here.

File details

Details for the file lucit_backtesting-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lucit_backtesting-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f62bd3bcf1cc323ef9b860c5976bac679caa50d20b9a43c97a669b9ed099fabe
MD5 55399ca96333affbee551fd792673a9f
BLAKE2b-256 e8528c7bd167725b8a6ba6a61119fb559245a8086b3a89d8ef77e978e5c6b86b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page