2026-01-19
今天所做之事勿候明天,自己所做之事勿候他人。——歌德
NautilusTrader:高性能、可生产落地的算法交易平台与事件驱动回测引擎
NautilusTrader 是一个开源、面向生产的高性能算法交易平台。它让量化交易者可以在同一套事件驱动的引擎里,既对历史数据做组合级回测,也能将同一份策略代码直接部署到实盘环境,无需重写。平台以 Python 为一等公民,以 Rust 为高性能内核,强调正确性、安全性与工程可维护性,在多资产、多市场、多数据源的真实环境中尽量降低操作与实现层面的风险。
- 官方站点与文档
- Docs: https://nautilustrader.io/docs/
- Website: https://nautilustrader.io
- Discord: https://discord.gg/NautilusTrader
- 仓库与许可
- Repo: https://github.com/nautechsystems/nautilus_trader
- License: LGPL-3.0
它要解决什么问题
-
研究到实盘的“同构一致性”
回测与实盘常常使用完全不同的技术栈,研究代码难以无缝迁移到生产。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 | |
为特定集成安装可选 extras:
1 | |
完整 extras 列表参见安装指南:
https://nautilustrader.io/docs/latest/getting_started/installation#extras
从 Nautech Systems 索引安装
稳定版:
1 | |
包含预发布版本:
1 | |
指定某个开发轮子:
1 | |
提示:Linux 需 glibc 2.35 及以上。
从源码构建(摘要)
-
安装 rustup 与 clang
-
使用 uv 同步依赖并构建
1
2
3git 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 | |
运行示例与最小用法
在 examples 目录下按环境组织了 Backtest、Sandbox、Live 和 Other 示例。先确保包已安装或本地编译通过。
运行一个回测示例:
1 | |
Python 绑定的最小调用示例(v2 Python 包结构说明的演示片段):
1 | |
更多指标与策略示例参见:
- 指标示例(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 | |
打开浏览器:
1 | |
注:Jupyter notebook 对 stdout 输出有速率限制,示例将日志等级设为 ERROR,降低等级可能触发阻塞。
版本、分支与发布
- 分支
- master:最新发布版本,适合生产
- nightly:develop 的每日快照,14:00 UTC 合入
- develop:活跃开发分支
- 发行节奏:目标为双周滚动,实验或大型特性可能延迟
- 开发轮子:nightly 与 develop 分支持续产出预发布轮子,便于测试
Makefile 与开发辅助
项目提供 Makefile,覆盖安装、构建、打包、测试、文档与清理等任务:
1 | |
Rust 侧推荐使用 cargo-nextest 进行隔离测试:
1 | |
开发指南与性能测试说明请见文档与仓库内相应文件。
为什么是它
- 事件驱动的 Python 原生体验,兼具 Rust 的性能与安全
- 回测与实盘的一致性,减少“重写”带来的工程与风控风险
- 高扩展性与自定义,适配任意交易所与数据源
- 对正确性与可验证性的长期坚持
对需要高真实度回测、跨市场协同、微结构级执行控制,以及策略工程化落地的团队来说,NautilusTrader 是一个足够专业且可持续迭代的基座。
社区与合规
- 社区与支持:Discord、官网与文档
- 贡献:遵循 CONTRIBUTING 与 CLA 流程,PR 目标分支为 develop
- 合规提示:项目未发行或背书任何代币,官方更新以官网、Discord 与 X 账号为准
结语
NautilusTrader 的设计从一开始就不满足于“能跑就行”,而是把高性能、强约束与工程化实践放在第一位。它既理解 Python 生态的生产力,也尊重系统编程语言的边界与价值。当你希望把策略从研究室真正带到生产,且不愿在一致性与可控性上妥协,这套平台值得深入试用。
本文内容基于项目 README 与示例文档整理,可能不完整。建议直接查阅官方文档与仓库以获取最新信息: