NautilusTrader
Developer Guide
These docs track the unreleased nightly build and may change without notice. Switch to the latest stable docs.

Developer Guide

Guidance on developing and extending NautilusTrader to meet your trading needs or to contribute improvements back to the project.

The core is written in Rust. Python serves as the control plane for strategy logic, configuration, and orchestration. PyO3 bridges the two, exposing Rust functionality to Python with minimal overhead.

Environment Setup

Set up your development environment with the required tools.

Design Principles

Core invariants and design rules for the trading system.

Callback Dispatch Contract

Ownership, ordering, and progress requirements for queued actor and strategy callbacks.

Runtime Conformance Contract

Implementation boundaries and representative checks for selected design principles.

Coding Standards

Code style, formatting, and conventions for the project.

Shell Scripts

When to create a shell script and how to name, write, invoke, and test it.

Rust

Working with the Rust core and crate structure.

Python

Python development patterns and PyO3 bindings.

Testing

Testing practices, frameworks, and running the test suite.

Test Datasets

Available test datasets and how to use them.

Docs Style

Documentation standards and writing guidelines.

Markdown Style

The shared Markdown baseline adopted across repositories, kept identical to its maintained source.

Releases

Release process and release notes standards.

Security Architecture

How release artifacts are built, published, attested, and verified.

Adapters

Specifications for developing integration adapters.

Plugins

The artifact contract for independently compiled Rust cdylibs that identify themselves with a versioned manifest and exchange values across a C ABI boundary.

Data Testing Spec

A test matrix for validating adapter data functionality.

Execution Testing Spec

A test matrix for validating adapter execution functionality.

Benchmarking

Measuring Rust performance with criterion and divan.

FFI Memory Contract

Memory ownership rules for the foreign function interface.

On this page