After-work architecture choice: VectorBT for research sweeps, NautilusTrader 2.0 for live-aligned fills, LEAN for cloud multi-asset. Not a remake of the five-tool stack or the look-ahead article.
After work you do not need another editor list. The foundation stack — CPython, VS Code, Jupyter, pandas, Git — is already in Top 5 tools to know before a quant course. This piece is the next question: which engine should run the simulation?
It is an architecture choice, not a remake of why AI-written backtests leak look-ahead. Point-in-time fills still matter. This article does not rewrite that hygiene piece; it links it, then picks an engine that matches the job.
One-line division of labor. VectorBT sweeps ideas in arrays. NautilusTrader 2.0 replays the same strategy path you would run live. LEAN (QuantConnect) is the cloud multi-asset lab with brokerage models attached.
This is not a ranking by downloads, GitHub stars, or trading volume. We do not have that data. The three engines do different jobs.
VectorBT treats prices and signals as NumPy matrices. Instead of looping one strategy per bar, it packs parameter grids into extra array dimensions and evaluates them in one pass. The hot path is Numba; an optional Rust extra exists (pip install -U "vectorbt[rust]"). PyPI lists vectorbt 1.1.0 for Python 3.11 through 3.14 as of this writing.
What it is for. After-work hypothesis work: many windows, many assets, many stop distances, one sitting. You answer “does this signal survive a grid?” not “would the live matching engine have filled?”
What it is not. VectorBT does not place live orders. The open-source package is research-first. VectorBT PRO is a separate paid product with a private repository and richer order semantics — mention it so you do not confuse the two, not as a purchase pitch. A VectorBT equity curve is not a fill tape. If the curve only exists because the script used tomorrow’s close, that is a look-ahead bug, not an engine feature. Audit that in the look-ahead article before you change engines.
Fit. You already have pandas. VectorBT sits next to it. Sweep first. Do not start the evening inside a live node.
NautilusTrader is a trading system with a Python control plane, not a notebook sweeper. The same event-driven core runs research and live: orders, fills, risk, venue adapters.
Maintainers published 2.0.0rc3 on 20 August 2026 (UTC). The GitHub tag timestamp is 21 August 2026 01:20 UTC — 09:20 HKT on 21 August. That release removes the legacy Cython v1 package and ships the Rust + PyO3 runtime.
Install fact, checked on PyPI: pip install nautilus_trader still resolves to 1.231.0, released 2 August 2026 (UTC). That is the last 1.x line with the Cython v1 core. Release-candidate wheels use 2.0.0rcN. You need --pre, for example pip install -U nautilus_trader --pre. Nautech’s notes say RCs are for community testing, not live trading with real capital.
What it is for. When fills, latency, order types, and adapter behavior are the question. Port signals that survived a VectorBT sweep, then replay them through Nautilus’s matching engine and live-shaped event stream.
What it is not. A poor first tool for a 200-point SMA grid. Each configuration is a discrete run, not a broadcasted tensor.
Use this if you already run 1.x. It is a systems checklist, not a claim that final 2.0.0 has shipped.
nautilus_trader. Do not mix v1 and v2 in one environment.--pre, and not against real capital.as_pycapsule / from_pycapsule paths, and generic Python clients under nautilus_trader.network. Pass typed model objects.LiveNode.poll() and LiveNode.start() are gone. Use hosted run_with_mode(...) or run_async().activation_price and fill info. Catalogs written on the old schema are not readable in place — regenerate or migrate before an in-place upgrade. The 1.231.0 notes call this out.AggressorSide Buyer/Seller become Buy/Sell. Portfolio.margins_init becomes instrument_initial_margins. Several WebSocket heartbeat field names changed.The 1.231.0 release said develop would move v2-only after that cutover, with critical security backports on a develop_v1 branch for about three months. Treat that as maintainer intent dated 2 August 2026, not a support contract.
LEAN is the open-source C# engine behind QuantConnect, with a Python API. You write QCAlgorithm subclasses. The cloud (or LEAN CLI locally) supplies data, brokerage models, and live deploy.
What it is for. Multi-asset research where equities, options, futures, FX, and crypto share one portfolio model, plus a path from backtest to a documented brokerage connection — without building your own matching engine.
What it is not. It is not VectorBT. Cloud optimization exists, but the unit of work is an event-driven algorithm, not a NumPy grid. It is also not Nautilus: you take on QuantConnect’s data, nodes, and brokerage adapters rather than self-hosting a Rust kernel.
Do not use this article as a pitch for Agentic AI bootcamps. The 2026 quant-education market piece already covers that enrollment hook. This page is engine architecture.
Bloomberg FIX — 18 August 2026 changelog. QuantConnect documented Bloomberg FIX as a separate brokerage from Terminal Link: order routing over FIX to the Bloomberg FixNet HUB, not a market-data feed. It needs an Institution-tier organization. You still pick a data provider. Terminal Link talks to EMSX via SAPI; FIX does not.
Bloomberg BPIPE — 21 August 2026 changelog. Live tick data provider with a QuantConnect-operated ticker plant. A 25 August changelog note clarified that BPIPE does not provide historical data; warm-up and history come from other selected providers.
Public.com — qualify the date. Public.com is a supported LEAN/QuantConnect brokerage for US equities, equity options, index options, and crypto. The core LEAN PR (#9543) merged 18 June 2026, not August. Do not treat Public.com as an August 2026 launch. By August it was already in the brokerage set; August documentation work was Bloomberg FIX and BPIPE. Public does not supply a live data feed; you pair it with the QuantConnect data provider or another feed. That is an architecture fact, not an endorsement of Public or any ticker.
shift(-1) is doing the work, stop. Use the look-ahead checklist.If you cannot yet run a .py file, you are not choosing an engine tonight. That is setup, not architecture. See the five-tool stack linked above.
This is not investment advice. It does not recommend tickers, brokers, or a return. It is not a CEF, QF, or QR programme and not a ranking. It does not enrol you in unpublished SoloQuant Quant or Macro courses.
If the bottleneck is still Python itself, use Introduction to Python Programming — 19 published short lessons. Check the course page for the current enrollment window. This article does not freeze a date in the title.
--pre