NautilusTrader
Getting Started

Getting Started

To get started with NautilusTrader you need:

  • Python 3.12–3.14 with the nautilus_trader package installed
  • A way to run Python scripts or Jupyter notebooks

Examples

The docs cover a subset of examples. For the full set, see the nautilus_trader repository.

DirectoryDescription
examples/Self-contained runnable Python examples
docs/tutorials/Jupyter notebook tutorials for common workflows
docs/concepts/Concept guides with code snippets
nautilus_trader/examples/Basic strategies, indicators, and execution algorithms
tests/unit_tests/Unit tests covering core functionality

Backtesting API levels

NautilusTrader provides two API levels for backtesting:

API LevelDescriptionCharacteristics
High-LevelBacktestNode / TradingNodeRecommended for production, easier transition to live trading; requires a Parquet data catalog
Low-LevelBacktestEngineFor library development, direct component access; no live-trading path

One node per process

Running multiple BacktestNode or TradingNode instances in the same process is not supported due to global singleton state. Sequential execution with proper disposal between runs is supported. See Processes and threads.

See the Backtesting guide for help choosing an API level.

Running in Docker

A self-contained Jupyter notebook server is available as a Docker image, no local setup required.

docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly

Then open http://localhost:8888 in your browser.

Container data is ephemeral, deleting the container removes all data.

NautilusTrader log output can exceed Jupyter's default rate limit, causing notebooks to hang. Set log_level to "ERROR" to avoid this.

On this page