Best Python backtesting frameworks.
If you want to backtest in Python, a handful of frameworks cover most needs. Here's what each is good at, and where a managed platform makes more sense than wiring a framework into a full system.
backtesting.py
Best for quick, simple single-asset backtests.
Lightweight and easy to pick up. Great for a fast event-driven test of an idea on one instrument. Less suited to complex, multi-asset, or production-bound systems.
Backtrader
Best for feature-rich event-driven backtesting.
Long the popular default: flexible, well-documented, lots of examples. Note that it's largely unmaintained now, which matters if you need ongoing fixes or modern integrations.
Backtrader alternatives →vectorbt
Best for fast, vectorized research and parameter sweeps.
Built on NumPy/pandas for speed. Excellent for large-scale research and optimization. Vectorized by design, so it takes care to avoid look-ahead and to mirror real event-driven execution.
Zipline
Best for historical reference and existing codebases.
Historically important and still seen in older projects, but effectively deprecated and community-maintained. Workable, but not where you'd start a new system today.
Zipline alternatives →Periscøpe
That's usBest for going past the backtest to paper and live.
Not just a framework, a managed platform. You get an event-driven backtester, but also paper and live execution on the same code, managed compute, and built-in diagnostics. Choose this when the goal is a running system, not only a research backtest.
See Periscøpe →Python backtesting frameworks: questions.
Framework or platform, which do I need? +
A framework backtests; you assemble the rest. A platform handles backtest, paper, live, compute, and diagnostics together. If you only need research backtests, a framework is lighter. If you want a running system, a platform saves you building the infrastructure.
Is vectorized or event-driven better? +
Vectorized is faster and great for sweeps; event-driven mirrors live execution and is harder to fool with look-ahead bias. Many workflows use vectorized for breadth and event-driven for the final, realistic check.
Why is Backtrader on the list if it's unmaintained? +
Because it's still widely used and genuinely capable. The unmaintained status is a real consideration for new projects, not a reason to pretend it isn't useful.
When you want more than a backtest.
We onboard in focused cohorts. Tell us what you trade and how you work. Live access is rolled out to select users on request.