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

Two layers of deterministic simulation. The network crate uses turmoil for transport-layer reconnects, partitions, and adverse conditions. A broader DST framework swaps tokio for madsim under the simulation Cargo feature, producing seed-reproducible async scheduling, timer firings, RNG output, and channel ordering. Property-driven concurrency and reconciliation soak loops grind thousands of seeds and persist any divergence as a replayable JSON artifact.

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.

Undefined behavior detection

A nightly Miri job runs the test suites of the nautilus-core and nautilus-model crates under strict provenance and Stacked Borrows checks. Catches undefined behavior in unsafe Rust code, including raw pointer misuse, aliasing violations, and FFI invariant breaches that ordinary tests cannot observe.

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

Immutable, attested releases with post-publish registry verification

aws-lc-rs (AWS-LC) for TLS, HMAC, and RSA cryptography

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.