Quality

20,000+ automated tests, continuous benchmarking, and rigorous quality assurance across the NautilusTrader codebase.

Testing

Built into the process

Testing is not an afterthought. Every component is validated across multiple dimensions, from unit correctness through full trading simulation. Both the Python and Rust codebases carry dedicated test suites with strict standards for coverage and correctness.

Test categories

Unit tests

Thousands of focused tests validate individual functions, data types, models, and calculations. Both Python and Rust have dedicated unit test suites covering parsing, serialization, arithmetic precision, and state transitions.

Integration tests

Test component interactions: data engine to message bus, execution engine to risk engine, cache updates, and adapter lifecycle. Verify that subsystems compose correctly under realistic message flows.

Acceptance tests

End-to-end scenarios exercise full trading workflows: strategy signal generation, order submission, fill processing, position management, and portfolio updates. Deterministic reruns confirm reproducibility across runs.

Property-based tests

Using proptest in Rust to generate randomized inputs and verify invariants hold across thousands of edge cases. Covers order book invariants, backoff logic, value types, timers, throttlers, instruments, retry logic, and network behavior.

Deterministic simulation

The network crate uses turmoil for deterministic simulation of reconnects, partitions, and adverse network conditions. Tests run under controlled fault injection to verify recovery and resilience at the transport layer.

Performance tests

Rust benchmarks target critical hot paths including order matching, message bus throughput, and data serialization. Continuous measurement guards against performance regressions in latency-sensitive code.

Memory safety

A dedicated leak-testing suite uses tracemalloc, RSS monitoring, and memray to detect memory leaks across the Python-Rust boundary. 19 test files run targeted scenarios to verify stable long-running memory behavior.

CI/CD pipeline

Continuous validation

Every merged commit to the develop branch triggers the full test suite. Builds that pass produce development wheels as bleeding-edge artifacts. The live CI pipeline shows real-time build status for recent commits.

Benchmarks

Performance measurement

NautilusTrader includes Rust-based benchmarks for critical hot paths including order matching, message bus throughput, and data serialization. Continuous measurement guards against performance regressions in latency-sensitive code.

Quality assurance

Engineering standards

Type-safe core in Rust with strict compiler checks

Python type annotations with static analysis

Continuous integration on all pull requests and merged commits

Code review required for all changes

Deterministic builds with pinned dependencies

SLSA Level 3 build provenance on all wheel artifacts

Learn more about NautilusTrader.

footer-logo

© 2026 Nautech Systems Pty Ltd. All rights reserved.

NautilusTraderâ„¢ is a product of Nautech Systems Pty Ltd (ABN 88 609 589 237). Nautech Systems provides algorithmic trading software only. We do not operate as a broker, dealer, or exchange, nor offer financial advisory services. Users are solely responsible for compliance with applicable laws and regulations. Subject to non-excludable consumer guarantees, we make no warranties and accept no liability for trading losses or regulatory violations arising from use of the software. Read full disclaimer.