Stateful event and order processing
Median warm runtime for ordered bar, fill, and position-state processing from 1K to 100K bars, checked at every transition.
Tools measured in this benchmark
Open a tool page for its code examples, strengths, and limits. Exact versions are listed in the technical details.
VectorBT PRO
Uses labeled arrays for broad searches and compiled code for steps that must run in order
Explore toolNautilusTrader
Processes market and order events through simulated or live exchange adapters
Explore toolQuantConnect LEAN
Processes data and orders as events with replaceable data, fill, and broker models
Explore toolBacktrader
Runs strategy and broker logic one bar at a time
Explore toolRQAlpha
Processes market events and adds data, risk, and analysis through plugins
Explore toolWarm runtime by ordered bar count
Median wall-clock time to construct the engine, process events, record position state, and extract fills. Lower is faster. Runtime uses a logarithmic scale.
Direct order processing and full event engines scale differently
LEAN and VectorBT PRO have the lowest medians in this normalized in-process order workload. NautilusTrader, Backtrader, and RQAlpha include progressively broader engine lifecycles, so the result should be read with the runner boundaries in the technical details.
See exactly how the result was produced
Exact values
| Input bars | Events | Backtrader | NautilusTrader | QuantConnect LEAN | RQAlpha | VectorBT PRO |
|---|---|---|---|---|---|---|
| 1K | 1,020 | 45.24 ms | 34.90 ms | 960 µs | 237.11 ms | 6.35 ms |
| 10K | 10,200 | 448.42 ms | 168.95 ms | 3.20 ms | 2,296.60 ms | 7.24 ms |
| 100K | 102,000 | 4,486.25 ms | 1,554.62 ms | 47.67 ms | 23,060.39 ms | 15.85 ms |
Environment
- Apple M3, 8 logical cores, 24 GB RAM
- macOS 26.5.2, arm64
- CPython 3.11.8 and 3.12.9, plus .NET 10
- Backtrader 1.9.78.123, NautilusTrader 1.221.0
- RQAlpha 6.4.0, VectorBT PRO 2025.3.1
- QuantConnect LEAN commit 985ef30
Procedure
- 1K, 10K, and 100K synthetic minute bars
- One position-state record per bar
- 20 to 2,000 next-open fills
- 2 warmups and 5 measured repetitions
- Every state, fill, and final equity checked
Scope
Events are normalized at the strategy boundary. The workload records bar-level position state and completed fills. It does not equate framework-specific clocks, venue messages, order status vocabularies, persistence, or live connectivity.
Peak RSS was not measured consistently. LEAN uses its public in-process algorithm, security, order-fill, and portfolio components. This is not the complete LEAN launcher. VectorBT PRO processes the order stream directly with Portfolio.from_orders.
Reproduce and inspect
The downloadable files preserve the measured values, available result detail, environment record, and checksums.
See the editorial process for the publication standard.
Download the data
Download the chart values, detailed results, release details, or file checksums separately.