We highly value involvement from the trading community, and all contributions are greatly appreciated as they help us continually improve NautilusTrader!
Note
Integrations: New integrations are a major undertaking for the project and therefore require additional discussion and approval before opening any PRs. Please see the ROADMAP: Community-contributed integrations for details on the process and ADAPTERS.md for adapter tiers, community listings, and support boundaries.
To contribute, follow these steps:
-
Open an issue on GitHub to discuss your proposed changes or enhancements.
-
Once everyone is aligned, fork the
developbranch and ensure your fork is up-to-date by regularly merging any upstream changes. -
Set up your development environment by following the Environment setup guide, which covers Rust, Python, and uv. With those prerequisites in place, install the pinned development tools (this includes prek, which runs pre-commit checks, formatters, and linters before each commit):
cargo install cargo-binstall --locked # one-off prerequisite make install-tools prek installmake install-toolsinstalls every pinned tool fromCargo.toml,tools.toml, andpyproject.toml. See Install development tools for what each pinned tool does. -
Open a pull request (PR) on the
developbranch with a summary comment and reference to any relevant GitHub issue(s). -
The CI system will run the full test suite on your code including all unit and integration tests, so include appropriate tests with the PR.
-
Read and understand the Contributor License Agreement (CLA), available at https://github.com/nautechsystems/nautilus_trader/blob/develop/CLA.md.
-
You will also be required to sign the CLA, which is administered automatically through CLA Assistant.
-
We will review your code as quickly as possible and provide feedback if any changes are needed before merging.
- Follow the established coding practices in the Developer Guide.
- For documentation changes, follow the style guide in
docs/developer_guide/docs.md(use sentence case for headings H2 and below). - Keep PRs small and focused for easier review.
- Reference the relevant GitHub issue(s) in your PR comment.