What to use instead of Enigma Catalyst
Catalyst was archived on 26 November 2022, and the S3 bucket its data ingest reads is gone. Five catalogue tools that cover the arc it promised.
Last updated
Enigma Catalyst
Shut downA Python algorithmic-trading library for crypto, built on Zipline — the same initialize and handle_data shape, backtested against ingested minute and daily bars, then live on four exchanges.
Stopped serving on .
5 replacements from the catalogue
Ordered by how much of the original’s job each one covers, closest first. Paid placement does not affect this order, and no card on this list is sponsored.
- 1
Freqtrade
The whole arc Catalyst promised — download candles, backtest, dry-run, trade live on a CEX — free, maintained, and it fetches its own history, not a bundle.
FreeFree tierOpen source
- 2
NautilusTrader
The same backtest-then-live promise kept harder — one strategy in both modes, with funding, maintenance margin and mark price modelled rather than assumed away.
FreeFree tierOpen source
- 3
LEAN
The other engine of that generation still maintained — one algorithm class backtests and live-trades, Apache-2.0, on your own machine. Ships no data of its own.
FreeFree tierOpen source
- 4
Jesse
Catalyst's research half in Python, with its own candle importer and a far better-specified engine. Live trading is a paid plugin rather than a mode.
$899 onceFree tierOpen sourceMCP
- 5
VectorBT
If what you ran was really a parameter sweep from a notebook, this returns a pandas result over thousands of combinations in one pass. Backtesting only.
FreeFree tier
The product
Catalyst was the serious attempt to give crypto what Quantopian had given equities. It was a
Python library, not an application: you wrote initialize and handle_data, called
data.history for your lookback and order_target_percent to size a position, ran
run_algorithm() and got a pandas DataFrame of performance back into your notebook. It was built
on Zipline, and the README is explicit about why — "We did our best to minimize structural changes
to the general API to maximize compatibility with existing trading algorithms, developer
knowledge, and tutorials." That was the pitch: bring your Quantopian habits, point them at crypto.
The crypto half was real work. Catalyst shipped its own ingest — catalyst ingest-exchange pulled
pre-built minute and daily bars for an exchange onto your disk — and its own live-trading path to
Binance, Bitfinex, Bittrex and Poloniex, with a seamless switch between backtest and live
against the same algorithm. Around it Enigma was building a data marketplace, with a contract
address and an auth server wired into the library's own constants. For about eighteen months it
was the default answer to "how do I backtest a crypto strategy in Python".
It has two end dates and they are four years apart. The software stopped first: the last release
on PyPI, enigma-catalyst 0.5.21, was uploaded on 11 November 2018, and its own package
metadata declares support for Python 2.7, 3.4 and 3.5. The README's deprecation warning dates it
the same way — "This repo is no longer actively maintained since the end of 2018." The repository
was then archived by its owner on 26 November 2022 and is now read-only. In between, Enigma
MPC renamed itself SCRT Labs, which is why the repository URL everyone has bookmarked redirects
to a different organisation.
The infrastructure went with it, and this is the part that decides whether you can run your old
code at all. Catalyst's constants.py points at two places: an auth server at data.enigma.co
and a symbol list in an Amazon S3 bucket named enigmaco. Checked on 21 September 2026,
enigma.co has Cloudflare nameservers and no address record — it does not resolve — and the S3
bucket answers NoSuchBucket. The product's own domain, catalystcrypto.io, which the README
links, now redirects to an unrelated commercial site in another language under somebody else's
ownership, and the forum subdomain has no DNS record at all. So a fresh install cannot ingest a
single bar, and anything you find on the old domain is not Catalyst's.
One thing that is not gone: the documentation. It moved with the organisation rename and still serves, on the new organisation's GitHub Pages address. It documents a library whose data path no longer exists.
What to use instead
The bad news first: nothing here speaks Zipline. If your algorithms are initialize /
handle_data with data.history and order_target_percent, no pick on this list will run them,
and none is close enough to make the port mechanical. What each one gives you back is a piece of
what Catalyst did, and the list is ordered by how much of that job it covers.
If you want the whole arc back, working, today. Freqtrade is the pick for most people. It covers everything Catalyst promised end to end — it downloads candles from the exchange itself, backtests, hyper-optimises, dry-runs against live prices and trades live, all on the same strategy class — and it is free, GPL-3.0 and actively maintained. It also solves the problem that kills Catalyst outright: the data. There is no bundle to be taken offline, because the history comes from the venue you are going to trade on.
If the backtest-to-live switch is the part you cared about. Catalyst's selling point was "seamless transition between the two modes", and the honest version of that claim in 2026 is NautilusTrader. Same strategy object in backtest and live, but with the things a Zipline fork built for spot equities never modelled: perpetual funding settled from venue records, maintenance margin, mark price. If you moved from spot into perps in the years since Catalyst stopped, this is the one whose cost model has heard of the instrument you are trading.
If what you liked was an engine you could also run somebody else's way. LEAN is the other open-source engine from that generation still under active development — one algorithm class that backtests and live-trades, Apache-2.0, runnable locally or on QuantConnect's cloud. It is the closest thing on the list to the Enigma model of an engine with a data business attached. Note the same caveat its card carries: LEAN ships no data, so sourcing history is your problem, and it applies perpetual funding on a single eight-hour schedule to all three of its crypto venues.
If you never went live. A lot of Catalyst use was research that never touched an API key. Jesse is built for exactly that — Python, its own candle importer, spot and perpetuals, and a much better-specified fill and cost model than Catalyst had. Its live and paper trading run through a closed-source plugin starting at $899 one-time, and its free tier confines live trading to exchange testnets, so price the research half and the live half separately before committing.
If the real work was the sweep. Some Catalyst algorithms were a loop around run_algorithm()
with a different parameter each time. VectorBT does that in one vectorised pass
and hands back a pandas object, which is the shape Catalyst users are used to reading. It is
backtesting only — no live trading, no paper trading — and its community edition prices a
perpetual as spot, with no funding and no margin.
What you give up
The Zipline API, and everything written against it. This is the loss that costs weeks.
initialize, handle_data, data.history, order_target_percent, the context object, the
perf DataFrame — that vocabulary was the whole reason to choose Catalyst over writing your own
loop, and it exists nowhere on this list. Freqtrade wants entry and exit columns populated across
a DataFrame. NautilusTrader wants an event-driven strategy reacting to ticks and bars. LEAN wants
Initialize and OnData. Each is a different way of thinking about the same rule, and every
Quantopian-era tutorial you were leaning on stops applying.
The bundle. catalyst ingest-exchange -x poloniex was one command and you had minute bars for
a venue on disk, free, versioned, the same for you as for everyone else. Nothing here has that.
Freqtrade and Jesse download from the exchange, which sounds equivalent and is not: an exchange
serves the pairs it still lists, at the depth of history it chooses to keep, and Catalyst's 2018
Bittrex and Poloniex bundles contain markets that have since been delisted. If you still have an
ingested bundle on a drive somewhere, it is now the only copy — get it off that machine before the
machine dies.
Being a library rather than an application. Catalyst was something you imported into a
notebook. run_algorithm() returned a DataFrame and you did whatever you liked with it in the
next cell, next to your matplotlib and your statsmodels. Freqtrade, in the shape almost everyone
runs it, is a command-line application driven by a config file whose backtest output is a report.
NautilusTrader and VectorBT are importable and Jesse is halfway; Freqtrade and LEAN, the two that
cover the most ground, are the two that move you out of the notebook. That is a change in how you
work, not just in what you type.
Migration notes
The strategy is a rewrite, so treat the old results as the specification and re-derive them. The point of the exercise is not to reproduce the old equity curve — it is to find out which parts of it were the strategy and which were Catalyst's defaults.
- Symbols change convention, twice. Catalyst used lowercase underscore pairs —
btc_usdt,eth_btc. CCXT-based tools useBTC/USDT, LEAN uses its own ticker objects, and each venue has its own native id underneath. Build the mapping table explicitly and check it against the exchange's live symbol list, because a pair that silently maps to nothing backtests as an empty result rather than as an error. - Do not put keys in a Python 3.5 environment. If you have a working Catalyst install, it is on an interpreter that stopped getting security fixes in September 2020, with a dependency tree frozen in 2018. Read data out of it if you must; do not give it exchange credentials, and do not expose the machine it runs on.
- Your benchmark may not exist on the other side. Catalyst added
btc_usdtas a default benchmark for comparing algorithms. Some engines here benchmark differently and some do not benchmark at all. A curve that suddenly looks worse may just be measured against a different baseline. - Catalyst was spot, on four exchanges. If you are porting onto perpetuals, the cost model gains funding payments and a liquidation check, and neither was ever in your old numbers. What a crypto backtest silently assumes names which engines model which, including the three on this list that get it right and the ones that do not.
- Minute bars are not the same minute bars. Catalyst's bundles were built once and served to everybody; two people running the same backtest got the same bars. Downloading from a venue today gives you that venue's current reconstruction, which is not necessarily what it published in 2018 — see OHLCV for why a bar is a summary and not a measurement.
- Anything installable that claims to be a current Catalyst is not. The repository is read-only and the only official artefact is a 2018 PyPI release. A newer build offered from the old domain, or from a fork promising live trading, is somebody else's code wearing the name.
The rest of the field is in Crypto Backtesting Libraries.
The whole category
This page is a shortlist. Everything in Backtesting & Research Libraries is filled in against the same schema, with the fields to narrow it yourself.
FAQ
Is Enigma Catalyst dead?
Yes, twice over. The repository was archived by its owner on 26 November 2022 and is read-only, and its README already carried a deprecation warning saying "This repo is no longer actively maintained since the end of 2018." The last release on PyPI, enigma-catalyst 0.5.21, was uploaded on 11 November 2018.
Why does pip install enigma-catalyst still work?
Because PyPI keeps released files indefinitely. The package installs; the library does not run usefully. Version 0.5.21 declares support for Python 2.7, 3.4 and 3.5, all of which are past end of life, and the data ingest it depends on no longer has a server to talk to.
Can I still ingest Catalyst data bundles?
No. Catalyst reads its per-exchange symbol list from an S3 bucket named enigmaco and authenticates against data.enigma.co. Checked on 21 September 2026, the bucket returns NoSuchBucket and data.enigma.co has no DNS record. Whatever bundles you already ingested onto disk are the only copies you have.
What happened to Enigma and the Catalyst website?
Enigma MPC became SCRT Labs, which is why the old enigmampc/catalyst repository URL now redirects to scrtlabs/catalyst. As of 21 September 2026 enigma.co has nameservers but no address record, so it does not resolve at all, and catalystcrypto.io — the product's own domain, linked from its README — now redirects to an unrelated commercial site under new ownership. Treat anything served from it as having nothing to do with Catalyst.
Does the Zipline API survive anywhere?
For equities, yes. Zipline's maintained continuation, zipline-reloaded, was last pushed to in January 2026. But Catalyst's crypto half — the exchange adapters, the crypto bundles, the live-trading path to Binance and Bitfinex — was added by Enigma on top of Zipline and was never part of Zipline, so it is not part of the fork either.