Guides
How to choose a quant research and backtesting platform
The choice is really about who owns the code — a library you control, a desktop license, or a hosted platform with data included.
A backtesting platform simulates how a trading strategy would have performed on historical data before anyone risks real money on it. Everyone in this category promises that; the differences that matter are how the strategy is expressed (a formula language, an object-oriented framework, a vectorized array operation), where the historical data comes from, and what happens the day you want to move a strategy from backtest to live trading. Buying the wrong one here does not usually fail loudly — it fails quietly, by making it easy to overfit a strategy to history without noticing.
This category is not for people who just want portfolio allocation advice or a one-off Monte Carlo simulation; for that, see Portfolio Visualizer in the portfolio and risk analytics guide. It is for people writing and testing systematic, rules-based strategies.
Library, desktop application, or hosted platform
The tools here split cleanly into three delivery models, and this is usually the first filter.
- Self-hosted open-source libraries — Backtrader, vectorbt, Zipline and NautilusTrader — are Python (or Python/Rust) code you run on your own machine or infrastructure. You own the environment, the data sourcing, and the maintenance. There is no login, no account, and no vendor to call when something breaks.
- A desktop application with its own language — AmiBroker — uses AFL, a proprietary formula language, inside a Windows application sold as a perpetual license rather than a library you import into other code.
- Hosted, browser-based platforms — QuantConnect and Portfolio123 — run in the cloud, bundle historical data so you are not sourcing it yourself, and (for QuantConnect specifically) offer one-click deployment from backtest to live brokerage trading.
QuantLib sits apart from all three: it is not a backtesting platform at all, but a pricing and risk-modeling library (derivatives, yield curves, Greeks) that other systems embed. Include it in your shortlist only if the job is pricing and modeling, not strategy backtesting.
How the strategy is actually written
This decides how fast you can iterate and how much of the ecosystem you inherit.
- Event-driven, object-oriented frameworks (Backtrader, Zipline, QuantConnect's LEAN, NautilusTrader) simulate a strategy tick-by-tick or bar-by-bar against a broker/portfolio object model — closer to how a live trading system actually behaves, at the cost of speed when testing many parameter combinations.
- Vectorized backtesting (vectorbt) evaluates a strategy using NumPy/pandas array operations instead of an event loop, which is dramatically faster for sweeping large parameter grids or testing many assets at once, at the cost of being a less literal simulation of live execution mechanics.
- A proprietary formula language (AmiBroker's AFL) or a no-code ranking-system builder (Portfolio123) trades some flexibility for a gentler learning curve and built-in tooling — scanning, exploration, factor ranking — that a bare Python library leaves you to build yourself.
If your research process is mostly "test a lot of variations fast," prioritize vectorized speed. If it is "get backtest and live-trading logic to match exactly," prioritize an event-driven framework built for both, which is NautilusTrader's specific design goal.
Backtest-to-live gap
Ask directly whether the code you backtest is the code that trades live, because the three answers differ meaningfully:
- NautilusTrader and QuantConnect are both built so the same strategy code runs unchanged in backtesting and live deployment, removing a common source of production bugs where live logic quietly diverges from what was tested.
- Backtrader supports live trading through specific broker integrations (Interactive Brokers, Oanda) but was designed primarily as a backtesting framework first.
- vectorbt, Zipline and QuantLib are research and backtesting tools; none is built for live order routing, so a live-trading layer is your own build if you go this route.
- AmiBroker and Portfolio123 support live or semi-automated tracking within their own platforms rather than general-purpose broker deployment.
Maintenance status is a real selection criterion
Not every option here is actively developed, and that materially affects risk:
- Zipline's own repository is explicit that it is maintained by a small team with limited bandwidth, and a community fork (zipline-reloaded) carries the ongoing compatibility fixes. Treat it as a legacy option — appropriate if you are maintaining existing Quantopian-era code or specifically need its cross-sectional pipeline API, risky as a foundation for a new project.
- Backtrader's development has also slowed, and teams commonly pin versions rather than track a moving target.
- NautilusTrader, QuantConnect/LEAN, vectorbt and AmiBroker are under active development as of their current records.
Check the commit history and issue-response times of any open-source library yourself before building a research process on it — a tool's activity level changes faster than any guide can track.
How pricing scales
- Backtrader, vectorbt, Zipline, NautilusTrader and QuantLib are all free, open-source software with no paid tier at all — but "free" means you supply your own compute, your own historical data, and your own maintenance time. vectorbt has a separate paid "PRO" product with additional performance features that is a distinct offering from the open-source core.
- AmiBroker is a one-time perpetual-license purchase by edition, not a subscription — an unusual model in this category, with separate upgrade pricing after the included free-upgrade period ends.
- QuantConnect is freemium: a genuinely free tier with unlimited backtesting, and paid tiers that add compute nodes, larger datasets and enterprise features. Because its LEAN engine is itself open source, you can also self-host it outside QuantConnect's cloud if the hosted pricing stops making sense.
- Portfolio123 is subscription-only after a 30-day free trial, with exact tier prices not published — you register on the site to see them.
A shortlist by situation
- If you want full control with no vendor lock-in and are comfortable maintaining your own Python environment, look at Backtrader or vectorbt depending on whether you need event-driven realism or fast parameter sweeps.
- If you need backtest and live-trading code to be identical, especially for higher-frequency or multi-venue strategies, look at NautilusTrader.
- If you want hosted data and one-click live deployment without managing your own infrastructure, look at QuantConnect.
- If you prefer a one-time purchase over a subscription and are on Windows, AmiBroker is the outlier worth knowing about.
- If your research is equity factor ranking and screening rather than general algorithmic strategy code, Portfolio123 is built specifically for that.
- If you are embedding pricing or risk models into your own application rather than backtesting trading rules, QuantLib is the right category, not the others here.
Questions to ask vendors (or ask of an open-source project)
- Where does historical data come from, what is its point-in-time integrity (does it avoid survivorship and look-ahead bias), and can you inspect a sample before committing?
- Is the exact code path used in backtesting also the code path used in live trading, or are they two separate implementations that could diverge?
- For an open-source project: what is the current maintenance status — recent commits, open issue backlog, and whether a community fork has become the de facto active version?
- What does moving from the free tier or trial to a level of usage matching your actual research volume cost?
Common mistakes
- Sweeping thousands of parameter combinations and accepting whichever produced the best backtested sharpe ratio, which is a direct route to overfitting a strategy to noise in the historical sample rather than a real edge.
- Judging a hosted platform's free tier as representative of production cost without pricing out the compute and data tier your actual strategy needs.
- Adopting an unmaintained open-source library for a new project without checking its issue tracker and recent commit history first.
- Reporting backtest maximum drawdown as if it bounds future risk, when it only describes what happened in the specific historical window tested.
We compared two pairs directly: Backtrader vs vectorbt for the two most common open-source Python choices, and NautilusTrader vs QuantConnect for self-hosted versus hosted deployment. See every tool in this category for the full list.