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.
Coding Standards
Code style, formatting, and conventions for the project.
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.
Releases
Release process and release notes standards.
Release Security
How release artifacts are built, published, attested, and verified.
Adapters
Specifications for developing integration adapters.
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.
Betfair v2
The Betfair Rust adapter is in active parity work. This page tracks the current Rust behavior and the planned cutover from the stable guide in Betfair.
Environment Setup
For development we recommend using the PyCharm Professional edition IDE, as it interprets Cython syntax. Alternatively, you could use Visual Studio Code...