nautechsystems/nautilus_trader

Finance

An event-driven Rust trading engine that runs the same Python strategy code in backtest and live execution.

30,869
4,151
Rust
LGPL-3.0
8 years old

NautilusTrader is worth a look if you already write trading strategies in Python and are tired of maintaining a separate production implementation. It is not a turnkey system — you still supply venue credentials, an adapter, and the strategy itself.

The problem

A quant researcher typically prototypes in Python with vectorized backtests, then hands the logic to someone who rebuilds it in an event-driven system for live trading. That rewrite is where behavior drifts: fills, time-in-force handling, and order state differ between the two codebases. NautilusTrader changes the middle step: the strategy runs against the same Rust event-driven engine in research, simulation, and live modes, with Python as the control plane for logic and configuration.

What's different

The mechanism is separation: the performance-critical runtime, order matching semantics, and time model live in Rust, while strategy composition happens in Python. The README says this lets the same architecture and execution semantics operate across backtest and live, so a strategy is not reimplemented between phases. Backtesting supports multiple venues, instruments, and strategies at once, using quote ticks, trade ticks, bars, order books, or custom data at nanosecond resolution.

The trade-off is conceptual weight. Instead of a DataFrame, you assemble components around a cache and message bus, and adapters translate venue APIs into a normalized domain model. Advanced order types (OCO/OUO/OTO, icebergs, post-only, reduce-only) are supported, but only as far as the adapter translates them. The project also markets being fast enough to train RL/ES trading agents, which describes the engine as a training environment rather than a shipped model.

Who should try it

Good fit: an individual or small-team systematic trader who already has Python strategy logic, trades across venues or asset classes, and wants simulation and live execution to share one codebase. Poor fit: someone who wants a hosted bot, a screener, or a no-code backtester — this is an engine and a framework, not a finished product. It is also a poor fit for anyone unwilling to learn the component model, since the README's recommended path assumes Python packaging discipline and a vanilla CPython environment.

Requirements and limitations

Setup comes in two supported forms: a pre-built wheel from PyPI or the Nautech Systems index, or a build from source installation instructions. The maintainers recommend uv with a vanilla CPython; Conda and other Python distributions may work but are not officially supported, so a Conda-based data stack is a real integration question to settle before committing. The Rust core also implies platform concerns — Linux, macOS, and Windows are listed as supported, with Docker deployment.

Ongoing upkeep matters more than install time. Integrations carry status labels from planned to stable adapter documentation, so venue coverage and maturity vary, and you should check the status of the specific exchange or broker you need. The roadmap's stated open-source focus is single-node backtesting and live trading for individuals and small teams roadmap; distributed or team-scale operation is not the target. Licensing is LGPL-3.0, and contributions require a CLA — relevant if you plan to fork or embed the engine.

HotRepo's take

Dated board observations only: the project was seen on the daily trending board on 2026-08-17 at 25,732 stars (+115 that day) and again on 2026-10-26 at 30,869 stars (+92 that day), spanning 5 recorded board dates between those points project repository. With only a handful of observations, persistence cannot be judged from the trend evidence. Before investing, verify the adapter status for your specific venue — that, more than star count, determines whether the same-code backtest-to-live promise actually holds.

Hacker News

Written by AI from the project's README, updated October 26, 2026. The project's own docs are the source of truth.