Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Backtest your Trading Strategies

Version Info Python Release
Test Status CI Tests PyPI
Community Discourse ML4T Twitter

Zipline is a Pythonic event-driven system for backtesting, developed and used as the backtesting and live-trading engine by crowd-sourced investment fund Quantopian. Since it closed late 2020, the domain that had hosted these docs expired. The library is used extensively in the book Machine Larning for Algorithmic Trading by Stefan Jansen who is trying to keep the library up to date and available to his readers and the wider Python algotrading community.

Features

  • Ease of Use: Zipline tries to get out of your way so that you can focus on algorithm development. See below for a code example.
  • Batteries Included: many common statistics like moving average and linear regression can be readily accessed from within a user-written algorithm.
  • PyData Integration: Input of historical data and output of performance statistics are based on Pandas DataFrames to integrate nicely into the existing PyData ecosystem.
  • Statistics and Machine Learning Libraries: You can use libraries like matplotlib, scipy, statsmodels, and scikit-klearn to support development, analysis, and visualization of state-of-the-art trading systems.
  • Live trading: Live trading support for Interactive Brokers and Alpaca.
  • Multiple Data sources:

Installation

Zipline supports Python >= 3.10 and is compatible with current versions of the relevant NumFOCUS libraries, including pandas and scikit-learn.

If your system meets the pre-requisites described in the installation instructions, you can install Zipline using pip by running:

pip install zipline-crypto

See the installation section of the docs for more detailed instructions.

Note: Installation under Python 3.11 requires building h5py from source until wheels become available.

Quickstart

See our getting started tutorial.

The following code implements a simple dual moving average algorithm.

from zipline.api import order_target, record, symbol


def initialize(context):
    context.i = 0
    context.asset = symbol('AAPL')


def handle_data(context, data):
    # Skip first 300 days to get full windows
    context.i += 1
    if context.i < 300:
        return

    # Compute averages
    # data.history() has to be called with the same params
    # from above and returns a pandas dataframe.
    short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
    long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()

    # Trading logic
    if short_mavg > long_mavg:
        # order_target orders as many shares as needed to
        # achieve the desired number of shares.
        order_target(context.asset, 100)
    elif short_mavg < long_mavg:
        order_target(context.asset, 0)

    # Save values for later inspection
    record(AAPL=data.current(context.asset, 'price'),
           short_mavg=short_mavg,
           long_mavg=long_mavg)

You can then run this algorithm using the Zipline CLI. But first, you need to download some market data with historical prices and trading volumes:

$ zipline ingest -b quandl
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle --no-benchmark

This will download asset pricing data sourced from Quandl (since acquisition hosted by NASDAQ), and stream it through the algorithm over the specified time range. Then, the resulting performance DataFrame is saved as dma.pickle, which you can load and analyze from Python.

You can find other examples in the zipline/examples directory.

Questions, suggestions, bugs?

If you find a bug or have other questions about the library, feel free to open an issue and fill out the template.

Metadata

Release files for zipline-crypto 0.2.dev449

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

Source distribution (sdist)

Source distribution for zipline-crypto 0.2.dev449
File Size Uploaded Provenance Actions
zipline-crypto-0.2.dev449.tar.gz 11.8 MB Without provenance Details for zipline-crypto-0.2.dev449.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for zipline-crypto 0.2.dev449
File Interpreter ABI Platform Actions
zipline_crypto-0.2.dev449-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for zipline_crypto-0.2.dev449-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Total release size: 22.1 MB

Release files / zipline-crypto-0.2.dev449.tar.gz

Download URL zipline-crypto-0.2.dev449.tar.gz
Size 11.8 MB
Tags Source
SHA-256 checksum
How to use checksums
0e423fae5cc0fbcbe38b6c8148dcfaa1c90bfbc698723bd3264ca39c4c04fb3f
BLAKE2b-256 checksum
How to use checksums
370e563e1b471850dd8b47815ceaa1d02fd48ab59e9af818488516bb67f1fb1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.2

Release files / zipline_crypto-0.2.dev449-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL zipline_crypto-0.2.dev449-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 10.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0a385db7fdbd5f6de3131022fd63fb2ff084fcbb64e50adcddb8133b03b6d5af
BLAKE2b-256 checksum
How to use checksums
4fd13f1c0c1197b0b5182b93741b181fff3251ff17620cd5213b9c3cc24a57b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.2

Security for zipline-crypto 0.2.dev449

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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