nautilus_trader

2026-01-19

python

今天所做之事勿候明天,自己所做之事勿候他人。——歌德

NautilusTrader:高性能、可生产落地的算法交易平台与事件驱动回测引擎

NautilusTrader 是一个开源、面向生产的高性能算法交易平台。它让量化交易者可以在同一套事件驱动的引擎里,既对历史数据做组合级回测,也能将同一份策略代码直接部署到实盘环境,无需重写。平台以 Python 为一等公民,以 Rust 为高性能内核,强调正确性、安全性与工程可维护性,在多资产、多市场、多数据源的真实环境中尽量降低操作与实现层面的风险。


它要解决什么问题

  • 研究到实盘的“同构一致性”
    回测与实盘常常使用完全不同的技术栈,研究代码难以无缝迁移到生产。NautilusTrader 通过 Python 原生的调用接口与 Rust/Cython 的高性能实现,消弭了这道鸿沟,让同一套策略代码在回测与实盘复用。

  • 事件驱动的真实度
    传统向量化回测难以表达订单层面的微观过程。NautilusTrader 以事件驱动架构刻画真实市场的时间与事件序列,适合做高频、盘口、复杂指令与风控的细粒度模拟。

  • 高性能与安全性
    核心模块采用 Rust,强调类型安全与并发安全,并以 Soundness Pledge 为目标持续修正潜在的内存或并发风险。


平台特性速览

  • Fast:核心由 Rust 实现,采用 tokio 异步网络栈
  • Reliable:Rust 的类型与并发安全,可选 Redis 支持状态持久
  • Portable:跨 Linux、macOS、Windows,支持 Docker 部署
  • Flexible:模块化 adapter,可对接任意 REST/WebSocket 数据与交易接口
  • Advanced:丰富的订单属性与指令,进阶策略所需的执行控制
  • Customizable:扩展 cache 与 message bus,自定义组件与 actor
  • Backtesting:多交易所、多品种、多策略同时回测,支持纳秒级别数据
  • Live:回测与实盘共用策略实现,减少上线摩擦
  • Multi-venue:多市场协同,利于做市与跨市场统计套利
  • AI Training:回测引擎速度足以用于训练强化学习、进化策略

支持资产类别包括外汇、股票、期货、期权、加密货币、DeFi、预测市场与体育投注等,适配多种真实或模拟的交易与数据环境。


架构与语言选择

  • Python 为策略与研究的首选语言,生态完备,可快速迭代
  • Rust 为性能关键模块提供安全与速度,内存管理与并发模型保障系统级可靠性
  • 通过 C 扩展绑定与 PyO3 绑定将 Rust 核心无缝暴露给 Python 层
  • 最低支持 Rust 版本随稳定版推进(MSRV 以最新 stable 为准)

项目对“音ness”有明确承诺(Soundness Pledge),并在 README 中详述了跨平台构建约束与注意事项。


集成生态与适配器

平台以 adapter 模式统一各交易所与数据源,当前文档列出了广泛的集成项,示例包括:

  • 交易与经纪:Interactive Brokers、Binance、BitMEX、Bybit、OKX、Coinbase International、Kraken 等
  • 去中心化或特种市场:dYdX v3/v4、Hyperliquid、Polymarket 等
  • 数据源:Databento、Tardis 等
  • 状态标注:planned、building、beta、stable,详见 Integrations 文档

集成详情与最新状态以官网 Integrations 页面为准:
https://nautilustrader.io/docs/latest/integrations/


安装与快速开始

官方推荐 Python 3.12–3.14,并使用 uv 包管理器。二进制轮子可来自 PyPI 或 Nautech Systems 私有索引,也可从源码编译。

从 PyPI 安装

1
pip install -U nautilus_trader

为特定集成安装可选 extras:

1
pip install -U "nautilus_trader[docker,ib]"

完整 extras 列表参见安装指南:
https://nautilustrader.io/docs/latest/getting_started/installation#extras

从 Nautech Systems 索引安装

稳定版:

1
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple

包含预发布版本:

1
pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple

指定某个开发轮子:

1
pip install nautilus_trader==1.221.0a20251026 --index-url=https://packages.nautechsystems.io/simple

提示:Linux 需 glibc 2.35 及以上。

从源码构建(摘要)

  • 安装 rustup 与 clang

  • 使用 uv 同步依赖并构建

    1
    2
    3
    git clone --branch develop --depth 1 https://github.com/nautechsystems/nautilus_trader
    cd nautilus_trader
    uv sync --all-extras

    更多细节与平台特定变量设置请参考安装指南。


精度模式(Precision mode)

核心数值类型 Price、Quantity、Money 支持两种内部精度:

  • 高精度:128 位,最多 16 位小数
  • 标准精度:64 位,最多 9 位小数

Python 轮子在 Linux 与 macOS 默认高精度,Windows 因 MSVC 限制提供标准精度。Rust 纯 crate 可在所有平台启用高精度。

Rust 启用高精度示例:

1
2
[dependencies]
nautilus_model = { version = "*", features = ["high-precision"] }

运行示例与最小用法

在 examples 目录下按环境组织了 Backtest、Sandbox、Live 和 Other 示例。先确保包已安装或本地编译通过。

运行一个回测示例:

1
2
cd examples
python backtest/crypto_ema_cross_ethusdt_trade_ticks.py

Python 绑定的最小调用示例(v2 Python 包结构说明的演示片段):

1
2
3
4
from nautilus_trader.core import UUID4

# 直接调用绑定
UUID4()

更多指标与策略示例参见:

  • 指标示例(Python): /nautilus_trader/examples/indicators/ema_python.py
  • 指标实现(Cython): /nautilus_trader/indicators/
  • 策略示例(Python): /nautilus_trader/examples/strategies/
  • 回测引擎示例: /examples/backtest/

Docker 支持

官方提供多种镜像变体:

  • nautilus_trader:latest 或 nightly
  • jupyterlab:latest 或 nightly(内置 JupyterLab 与回测示例)

拉取与运行 JupyterLab 回测示例:

1
2
docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly

打开浏览器:

1
http://127.0.0.1:8888/lab

注:Jupyter notebook 对 stdout 输出有速率限制,示例将日志等级设为 ERROR,降低等级可能触发阻塞。


版本、分支与发布

  • 分支
    • master:最新发布版本,适合生产
    • nightly:develop 的每日快照,14:00 UTC 合入
    • develop:活跃开发分支
  • 发行节奏:目标为双周滚动,实验或大型特性可能延迟
  • 开发轮子:nightly 与 develop 分支持续产出预发布轮子,便于测试

Makefile 与开发辅助

项目提供 Makefile,覆盖安装、构建、打包、测试、文档与清理等任务:

1
2
3
4
5
6
make install
make build
make build-wheel
make cargo-test
make pytest
make docs

Rust 侧推荐使用 cargo-nextest 进行隔离测试:

1
2
cargo install cargo-nextest
make cargo-test

开发指南与性能测试说明请见文档与仓库内相应文件。


为什么是它

  • 事件驱动的 Python 原生体验,兼具 Rust 的性能与安全
  • 回测与实盘的一致性,减少“重写”带来的工程与风控风险
  • 高扩展性与自定义,适配任意交易所与数据源
  • 对正确性与可验证性的长期坚持

对需要高真实度回测、跨市场协同、微结构级执行控制,以及策略工程化落地的团队来说,NautilusTrader 是一个足够专业且可持续迭代的基座。


社区与合规

  • 社区与支持:Discord、官网与文档
  • 贡献:遵循 CONTRIBUTING 与 CLA 流程,PR 目标分支为 develop
  • 合规提示:项目未发行或背书任何代币,官方更新以官网、Discord 与 X 账号为准

结语

NautilusTrader 的设计从一开始就不满足于“能跑就行”,而是把高性能、强约束与工程化实践放在第一位。它既理解 Python 生态的生产力,也尊重系统编程语言的边界与价值。当你希望把策略从研究室真正带到生产,且不愿在一致性与可控性上妥协,这套平台值得深入试用。

本文内容基于项目 README 与示例文档整理,可能不完整。建议直接查阅官方文档与仓库以获取最新信息: