Periscøpe
// Roundup

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 us

Best 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 →
// FAQ

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.

// Access

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.

We only use your email to contact you about access.

See how Periscøpe works →