@_zheergen: Holy cow! Quantopian shut down, but its backtesting engine was revived by the author of Machine Learning for Trading—zipline-reloaded! Zipline was once the world's most powerful Python backtesting framework, Quantopia…
Summary
zipline-reloaded is a continuation of the Zipline backtesting framework maintained by Stefan Jansen after Quantopian shut down, supporting Python 3.11+ and pandas 2.0+, retaining the event-driven architecture and Pipeline API, suitable for factor-based stock selection and machine learning strategy backtesting.
View Cached Full Text
Cached at: 08/09/26, 01:12 AM
Damn! Quantopian shut down, but its backtesting engine was brought back to life by the author of Machine Learning for Trading—zipline-reloaded! Zipline was once the most powerful Python backtesting framework in the world. After Quantopian closed its doors, Stefan Jansen took over maintenance, upgrading it to Python 3.11+, pandas 2.0+, with the pipeline API for factor computation, data bundle management, and the event-driven engine all preserved. Core features:
- Event-driven backtesting architecture with clear logic
- Deep integration with Pandas for easy data handling
- Supports common technical indicators and statistical analysis
- Works with scikit-learn, statsmodels, etc. for machine learning strategies
- Compatible with newer Python and dependency versions
- Full documentation and examples, great for learning and research
In the past, installing Zipline was a pain: wrong Python version → dependency conflicts → gave up. Now with zipline-reloaded, it’s a one-liner pip install. If you’re doing factor-based stock selection + backtesting, zipline-reloaded + Pyfolio is the closest combination to the Quantopian experience. https://github.com/stefan-jansen/zipline-reloaded…
stefan-jansen/zipline-reloaded
Source: https://github.com/stefan-jansen/zipline-reloaded
Backtest your Trading Strategies
| Version Info | Python (https://pypi.python.org/pypi/zipline-reloaded) Anaconda-Server Badge (https://anaconda.org/ml4t/zipline-reloaded) PyPI Anaconda-Server Badge (https://anaconda.org/conda-forge/zipline-reloaded) |
|---|---|
| Test Status | CI Tests (https://github.com/stefan-jansen/zipline-reloaded/actions/workflows/unit_tests.yml) PyPI (https://github.com/stefan-jansen/zipline-reloaded/actions/workflows/build_wheels.yml) codecov (https://codecov.io/gh/stefan-jansen/zipline-reloaded) |
| Community | Discourse (https://exchange.ml4trading.io) ML4T (https://ml4trading.io) Twitter (https://twitter.com/ml4trading) |
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 (https://www.bizjournals.com/boston/news/2020/11/10/quantopian-shuts-down-cofounders-head-elsewhere.html). 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 (https://ml4trading.io) by Stefan Jansen (https://www.linkedin.com/in/applied-ai/) who is trying to keep the library up to date and available to his readers and the wider Python algotrading community.
- Join our Community! (https://exchange.ml4trading.io)
- Documentation (https://zipline.ml4trading.io)
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.
Note: Release 3.05 makes Zipline compatible with Numpy 2.0, which requires Pandas 2.2.2 or higher. If you are using an older version of Pandas, you will need to upgrade it. Other packages may also still take more time to catch up with the latest Numpy release.
Note: Release 3.0 updates Zipline to use pandas (https://pandas.pydata.org/pandas-docs/stable/whatsnew/v2.0.0.html) >= 2.0 and SQLAlchemy (https://docs.sqlalchemy.org/en/20/) > 2.0. These are major version updates that may break existing code; please review the linked docs.
Note: Release 2.4 updates Zipline to use exchange_calendars (https://github.com/gerrymanoim/exchange_calendars) >= 4.2. This is a major version update and may break existing code (which we have tried to avoid but cannot guarantee). Please review the changes here (https://github.com/gerrymanoim/exchange_calendars/issues/61).
Installation
Zipline supports Python >= 3.9 and is compatible with current versions of the relevant NumFOCUS (https://numfocus.org/sponsored-projects?_sft_project_category=python-interface) libraries, including pandas (https://pandas.pydata.org/) and scikit-learn (https://scikit-learn.org/stable/index.html).
Using pip
If your system meets the pre-requisites described in the installation instructions (https://zipline.ml4trading.io/install.html), you can install Zipline using pip by running:
pip install zipline-reloaded
Using conda
If you are using the Anaconda (https://www.anaconda.com/products/individual) or miniconda (https://docs.conda.io/en/latest/miniconda.html) distributions, you install zipline-reloaded from the channel conda-forge like so:
conda install -c conda-forge zipline-reloaded
You can also enable (https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-channels.html) conda-forge by listing it in your .condarc. In case you are installing zipline-reloaded alongside other packages and encounter conflict errors (https://github.com/conda/conda/issues/9707), consider using mamba (https://github.com/mamba-org/mamba) instead. See the installation (https://zipline.ml4trading.io/install.html) section of the docs for more detailed instructions and the corresponding conda-forge site (https://github.com/conda-forge/zipline-reloaded-feedstock).
Quickstart
See our getting started tutorial (https://zipline.ml4trading.io/beginner-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. This will download asset pricing data from NASDAQ (https://data.nasdaq.com/databases/WIKIP) (formerly Quandl (https://www.nasdaq.com/about/press-center/nasdaq-acquires-quandl-advance-use-alternative-data)).
This requires an API key, which you can get for free by signing up at NASDAQ Data Link (https://data.nasdaq.com).
$ export QUANDL_API_KEY="your_key_here"
$ zipline ingest -b quandl
The following will:
- stream the through the algorithm over the specified time range.
- save the resulting performance DataFrame as
dma.pickle, which you can load and analyze from Python using, e.g., pyfolio-reloaded (https://github.com/stefan-jansen/pyfolio-reloaded).
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle --no-benchmark
You can find other examples in the zipline/examples (https://github.com/stefan-jansen/zipline-reloaded/tree/main/src/zipline/examples) directory.
Questions, suggestions, bugs?
If you find a bug or have other questions about the library, feel free to open an issue (https://github.com/stefan-jansen/zipline/issues/new) and fill out the template.
Ace who loves Zheergen (@_zheergen): Highly recommended for anyone looking to get into quantitative trading systematically.
This Algorithmic Trading Using Python course is 4 hours 33 minutes long, one of the most complete Python quant courses covering everything from fundamentals to hands-on practice.
Why is it worth watching?
Its biggest strength is that it doesn’t deliberately cut out errors—it shows the entire real development process: API errors, missing data, logic debugging, all the way until the strategy finally runs successfully.
Similar Articles
@AYi_AInotes: Wow, Alibaba has directly open-sourced the vector database it has been using internally for years. The capability that Pinecone charges $70/month for, you can get for free with a single pip command. Billion-level vector recall in milliseconds without needing a separate service. From now on, those doing RAG and AI search no longer need to pay Pinecone $70 each month! The vector database that Alibaba has been running internally for years is open-sourced...
Alibaba has open-sourced Zvec, a vector database used internally for years. It supports billion-scale vector retrieval in milliseconds, can be embedded into application processes without a separate service, and is completely free. It serves as a replacement for paid services like Pinecone.
@_zheergen: Holy cow! TradingView screener data has been made into a Python library — tvscreener, 1.2K stars, 51K+ PyPI downloads! No need to open a browser or manually flip through TradingView's filters. pip install tvscre…
Introduces tvscreener, a Python library that can directly fetch TradingView stock screener data, supports multiple markets and 13,000+ technical indicators, returns Pandas DataFrame, and is convenient for quantitative strategy use.
@_zheergen: Wow! Goldman Sachs open-sourced their quantitative toolkit gs-quant. Goldman Sachs has open-sourced the Python quant library used by their internal quants, currently with 11.3K stars on GitHub. It offers a rich set of quantitative analysis tools for structured products…
Goldman Sachs open-sourced its internal quantitative trading toolkit gs-quant, providing institutional-grade derivatives pricing, risk management, and strategy development tools. It has received 11.3K GitHub stars.
@quantscience_: Some guy made a quant trading system that uses AI, real-time data processing, and risk management. Then open sourced it…
An open-source Python quant trading system leveraging AI, real-time data processing, and risk management has been released for free.
@_zheergen: Guys! Found another all-in-one Python stock tool — InStock. The myhhub/stock repository covers A-share quantitative analysis quite comprehensively: data scraping, indicator calculation, stock selection, backtesting, and automated trading all in one. Let me highlight the core features: Real-time A-share data scraping + 30…
Introduces the open-source Python tool InStock (myhhub/stock) for A-share quantitative analysis, supporting data scraping, technical indicators, stock selection, backtesting, automated trading, etc., and can be deployed via Docker.