nautechsystems/nautilus_trader

GitHub: nautechsystems/nautilus_trader

一个以Rust为核心的高性能算法交易与事件驱动回测平台,实现Python原生环境下策略研究到实盘部署的无缝衔接。

Stars: 20450 | Forks: 2415

# [![codecov](https://codecov.io/gh/nautechsystems/nautilus_trader/branch/master/graph/badge.svg?token=DXO9QQI40H)](https://codecov.io/gh/nautechsystems/nautilus_trader) [![codspeed](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/nautechsystems/nautilus_trader) ![pythons](https://img.shields.io/pypi/pyversions/nautilus_trader) ![pypi-version](https://img.shields.io/pypi/v/nautilus_trader) ![pypi-format](https://img.shields.io/pypi/format/nautilus_trader?color=blue) [![Downloads](https://pepy.tech/badge/nautilus-trader)](https://pepy.tech/project/nautilus-trader) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/NautilusTrader) | 分支 | 版本 | 状态 | | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `master` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fmaster%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/15de3736f5173509.svg)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | `nightly` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fnightly%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e5a2df2052173510.svg)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | `develop` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fdevelop%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bd00d30af0173511.svg)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | 平台 | Rust | Python | | :----------------- | :----- | :-------- | | `Linux (x86_64)` | 1.93.1 | 3.12-3.14 | | `Linux (ARM64)` | 1.93.1 | 3.12-3.14 | | `macOS (ARM64)` | 1.93.1 | 3.12-3.14 | | `Windows (x86_64)` | 1.93.1 | 3.12-3.14 | - **文档**: - **网站**: - **支持**: [support@nautilustrader.io](mailto:support@nautilustrader.io) ## 简介 NautilusTrader 是一个开源、高性能、生产级的算法交易平台, 为量化交易员提供了在历史数据上使用事件驱动引擎回测自动交易策略投资组合的能力, 并且无需修改代码即可将这些策略部署到实盘交易中。 该平台以 *AI 优先* 为设计理念,旨在高性能且稳健的 Python 原生环境中开发和部署算法交易策略。 这有助于解决保持 Python 研究/回测环境与生产实盘交易环境一致性的对等性挑战。 NautilusTrader 的设计、架构和实现理念将软件正确性和安全性置于最高优先级, 旨在支持 Python 原生的、关键任务的交易系统回测和实盘部署工作负载。 该平台还具有通用性,不限于特定资产类别 —— 任何 REST API 或 WebSocket 数据源都可以通过模块化适配器进行集成。 它支持跨多种资产类别和工具类型的高频交易, 包括外汇、股票、期货、期权、加密货币、DeFi 和博彩 —— 能够在多个交易场所同时实现无缝操作。 ![nautilus-trader](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-trader.png "nautilus-trader") ## 功能特性 - **快速**: 核心使用 Rust 编写,并采用 [tokio](https://crates.io/crates/tokio) 进行异步网络通信。 - **可靠**: Rust 赋能的类型和线程安全,并可选基于 Redis 的状态持久化。 - **可移植**: 操作系统无关,可在 Linux、macOS 和 Windows 上运行。支持使用 Docker 部署。 - **灵活**: 模块化适配器意味着任何 REST API 或 WebSocket 数据源都可以被集成。 - **高级**: 有效期类型 `IOC`、`FOK`、`GTC`、`GTD`、`DAY`、`AT_THE_OPEN`、`AT_THE_CLOSE`,高级订单类型和条件触发。执行指令包括 `post-only`、`reduce-only` 和冰山订单。条件订单包括 `OCO`、`OUO`、`OTO`。 - **可定制**: 添加用户定义的自定义组件,或利用 [cache](https://nautilustrader.io/docs/latest/concepts/cache) 和 [message bus](https://nautilustrader.io/docs/latest/concepts/message_bus) 从头组装整个系统。 - **回测**: 支持使用具有纳秒级分辨率的历史报价 Tick、交易 Tick、K 线、订单簿和自定义数据,同时运行多个交易场所、交易工具和策略。 - **实盘**: 在回测和实盘部署之间使用相同的策略实现。 - **多场所**: 多场所能力促进了做市和统计套利策略的实施。 - **AI 训练**: 回测引擎速度极快,可用于训练 AI 交易智能体 (RL/ES)。 ![nautilus](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-art.png "nautilus") ## 为什么选择 NautilusTrader? - **高性能事件驱动 Python**: 原生二进制核心组件。 - **回测与实盘交易之间的对等性**: 相同的策略代码。 - **降低操作风险**: 增强的风险管理功能、逻辑准确性和类型安全性。 - **高度可扩展**: 消息总线、自定义组件和 Actor、自定义数据、自定义适配器。 传统上,交易策略的研究和回测可能是在 Python 中使用向量化方法进行的, 然后需要使用 C++、C#、Java 或其他静态类型语言以更事件驱动的方式重新实现策略。 这样做的原因是向量化回测代码无法表达实时交易中细粒度的时间和事件依赖复杂性, 而编译型语言由于其固有的更高性能和类型安全性已被证明更适合此类场景。 NautilusTrader 在这里的一个关键优势是,现在可以避免这一重新实现步骤 —— 因为平台的关键核心组件 完全使用 [Rust](https://www.rust-lang.org/) 或 [Cython](https://cython.org/) 编写。 这意味着我们正在为工作使用正确的工具,系统编程语言编译出高性能的二进制文件, 然后 CPython C 扩展模块可以提供 Python 原生环境,适合专业量化交易员和交易公司。 ## 为什么选择 Python? Python 最初是几十年前创建的一种简单脚本语言,具有简洁明了的语法。 它已演变成一种成熟的通用面向对象编程语言。 根据 TIOBE 指数,Python 目前是世界上流行的编程语言。 不仅如此,Python 已成为数据科学、机器学习和人工智能 *事实上的通用语言*。 ## 为什么选择 Rust? [Rust](https://www.rust-lang.org/) 是一种多范式编程语言,专为性能和安全性而设计,特别是安全并发。 Rust “快如闪电”且内存高效(可与 C 和 C++ 媲美),没有垃圾回收器。 它可以为关键任务系统提供动力,在嵌入式设备上运行,并易于与其他语言集成。 Rust 丰富的类型系统和所有权模型保证了安全代码中的内存安全和线程安全, 在编译时消除了许多类型的 Bug。本项目的整体安全性也取决于 在 unsafe 块和 FFI 边界中正确维护的不变量。 该项目利用 Rust 作为核心性能关键组件。Python 绑定通过 Cython 和 [PyO3](https://pyo3.rs) 实现 —— 安装时不需要 Rust 工具链。 本项目做出 [健全性承诺](https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html): ## 集成 NautilusTrader 采用模块化设计,可与 *适配器* 协同工作,通过将交易场所和数据提供商的原始 API 转换为统一接口和标准化领域模型,实现与它们的连接。 目前支持以下集成;详情请参阅 [docs/integrations/](https://nautilustrader.io/docs/latest/integrations/): | 名称 | ID | 类型 | 状态 | 文档 | | :--------------------------------------------------------------------------- | :-------------------- | :---------------------- | :------------------------------------------------------ | :------------------------------------------ | | [AX Exchange](https://architect.exchange) | `AX` | 永续合约交易所 | ![status](https://img.shields.io/badge/beta-yellow) | [指南](docs/integrations/architect_ax.md) | | [Architect](https://architect.co) | `ARCHITECT` | 经纪商 (多场所) | ![status](https://img.shields.io/badge/planned-gray) | - | | [Betfair](https://betfair.com) | `BETFAIR` | 体育博彩交易所 | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/betfair.md) | | [Binance](https://binance.com) | `BINANCE` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/binance.md) | | [BitMEX](https://www.bitmex.com) | `BITMEX` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/bitmex.md) | | [Bybit](https://www.bybit.com) | `BYBIT` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/bybit.md) | | [Databento](https://databento.com) | `DATABENTO` | 数据提供商 | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/databento.md) | | [Deribit](https://www.deribit.com) | `DERIBIT` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/beta-yellow) | [指南](docs/integrations/deribit.md) | | [dYdX](https://dydx.exchange/) | `DYDX` | 加密货币交易所 (DEX) | ![status](https://img.shields.io/badge/beta-yellow) | [指南](docs/integrations/dydx.md) | | [Hyperliquid](https://hyperliquid.xyz) | `HYPERLIQUID` | 加密货币交易所 (DEX) | ![status](https://img.shields.io/badge/beta-yellow) | [指南](docs/integrations/hyperliquid.md) | | [Interactive Brokers](https://www.interactivebrokers.com) | `INTERACTIVE_BROKERS` | 经纪商 (多场所) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/ib.md) | | [Kraken](https://kraken.com) | `KRAKEN` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/beta-yellow) | [指南](docs/integrations/kraken.md) | | [OKX](https://okx.com) | `OKX` | 加密货币交易所 (CEX) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/okx.md) | | [Polymarket](https://polymarket.com) | `POLYMARKET` | 预测市场 (DEX) | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/polymarket.md) | | [Tardis](https://tardis.dev) | `TARDIS` | 加密货币数据提供商 | ![status](https://img.shields.io/badge/stable-green) | [指南](docs/integrations/tardis.md) | - **ID**: 集成适配器客户端的默认客户端 ID。 - **类型**: 集成类型(通常是场所类型)。 ### 状态 - `planned`: 计划在未来开发。 - `building`: 正在构建中,可能无法使用。 - `beta`: 已完成最小可工作状态并处于 Beta 测试阶段。 - `stable`: 功能集和 API 已稳定,该集成已通过开发人员和用户的合理测试(可能仍存在一些 Bug)。 请参阅 [集成](https://nautilustrader.io/docs/latest/integrations/) 文档以获取更多详细信息。 ## 路线图 [路线图](/ROADMAP.md) 概述了 NautilusTrader 的战略方向。 当前的优先事项包括将核心移植到 Rust、改进文档以及增强代码的人体工程学。 该开源项目专注于为个人和小团队量化交易员提供单节点回测和实盘交易。 UI 仪表板、分布式编排和内置 AI/ML 工具不在范围内,以保持对核心引擎和生态系统可持续性的关注。 新的集成提案应从 RFC Issue 开始,在 PR 之前讨论适用性。 请参阅 [社区贡献的集成](/ROADMAP.md#community-contributed-integrations) 以获取指南。 ## 版本控制和发布 我们的目标是遵循 **双周发布时间表**,尽管实验性或较大的功能可能会导致延迟。 ### 分支 我们的目标是保持所有分支的稳定和通过构建。 - `master`: 反映最新发布版本的源代码;推荐用于生产环境。 - `nightly`: `develop` 分支的每日快照,用于早期测试;在 **14:00 UTC** 或按需合并。 - `develop`: 面向贡献者和功能开发的活跃开发分支。 ## 精度模式 NautilusTrader 为其核心值类型(`Price`、`Quantity`、`Money`)支持两种精度模式, 它们的内部位宽和最大小数精度不同。 - **高精度**: 128 位整数,最多支持 16 位小数精度,以及更大的值范围。 - **标准精度**: 64 位整数,最多支持 9 位小数精度,以及较小的值范围。 请参阅 [安装指南](https://nautilustrader.io/docs/latest/getting_started/installation) 以获取更多详细信息。 **Rust feature flag**: 要在 Rust 中启用高精度模式,请将 `high-precision` 功能添加到您的 Cargo.toml: ``` [dependencies] nautilus_model = { version = "*", features = ["high-precision"] } ``` ## 安装 我们建议使用最新受支持的 Python 版本,并将 [nautilus_trader](https://pypi.org/project/nautilus_trader/) 安装在虚拟环境中以隔离依赖项。 **有两种支持的安装方式**: 1. 从 PyPI *或* Nautech Systems 包索引安装预构建的二进制 wheel。 2. 从源代码构建。 ### 从 PyPI 安装 要使用 Python 的 pip 包管理器从 PyPI 安装最新的二进制 wheel(或 sdist 包): ``` pip install -U nautilus_trader ``` 为特定集成安装可选依赖项作为“extras”(例如 `betfair`、`docker`、`dydx`、`ib`、`polymarket`、`visualization`): ``` pip install -U "nautilus_trader[docker,ib]" ``` 请参阅 [安装指南](https://nautilustrader.io/docs/latest/getting_started/installation#extras) 以获取可用 extras 的完整列表。 ### 从 Nautech Systems 包索引安装 Nautech Systems 包索引(`packages.nautechsystems.io`)符合 [PEP-503](https://peps.python.org/pep-0503/),并托管了 `nautilus_trader` 的稳定版和开发版二进制 wheel。 这使用户能够安装最新的稳定版本或预发布版本以进行测试。 #### 稳定版 wheel 稳定版 wheel 对应于 PyPI 上 `nautilus_trader` 的官方发布版本,并使用标准版本控制。 要安装最新的稳定版本: ``` pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple ``` #### 开发版 wheel 开发版 wheel 从 `nightly` 和 `develop` 分支发布, 允许用户在稳定版发布之前测试功能和修复。 此过程还有助于节省计算资源,并提供对 CI 流程中测试的确切二进制文件的轻松访问, 同时遵守 [PEP-440](https://peps.python.org/pep-0440/) 版本控制标准: - `develop` wheel 使用版本格式 `dev{date}+{build_number}`(例如 `1.208.0.dev20241212+7001`)。 - `nightly` wheel 使用版本格式 `a{date}`(alpha)(例如 `1.208.0a20241212`)。 | 平台 | Nightly | Develop | | :----------------- | :------ | :------ | | `Linux (x86_64)` | ✓ | ✓ | | `Linux (ARM64)` | ✓ | - | | `macOS (ARM64)` | ✓ | ✓ | | `Windows (x86_64)` | ✓ | ✓ | **注意**: 来自 `develop` 分支的开发版 wheel 为除 Linux ARM64 之外的所有受支持平台发布。 跳过该目标可以保持 CI 反馈快速,同时避免不必要的构建资源消耗。 #### 安装命令 默认情况下,pip 将安装最新的稳定版本。添加 `--pre` 标志可确保将预发布版本(包括开发版 wheel)纳入考虑。 要安装最新的可用预发布版本(包括开发版 wheel): ``` pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple ``` 要安装特定的开发版 wheel(例如 `1.221.0a20251026` 代表 2025 年 10 月 26 日): ``` pip install nautilus_trader==1.221.0a20251026 --index-url=https://packages.nautechsystems.io/simple ``` #### 可用版本 您可以在 [包索引](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) 上查看 `nautilus_trader` 的所有可用版本。 要以编程方式获取并列出可用版本: ``` curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | sed -n 's/.* --platform linux/amd64 ``` 您可以通过运行以下命令启动回测示例容器: ``` docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64 docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly ``` 然后在浏览器中打开以下地址: ``` http://127.0.0.1:8888/lab ``` ## 开发 我们的目标是为这个由 Python、Cython 和 Rust 组成的混合代码库提供尽可能愉悦的开发人员体验。 请参阅 [开发者指南](https://nautilustrader.io/docs/latest/developer_guide/) 以获取有用的信息。 ### 使用 Rust 进行测试 [cargo-nextest](https://nexte.st) 是 NautilusTrader 的标准 Rust 测试运行器。 它的主要好处是将每个测试隔离在其自己的进程中,通过 避免干扰来确保测试可靠性。 您可以通过运行以下命令来安装 cargo-nextest: ``` cargo install cargo-nextest ``` ## 贡献 感谢您考虑为 NautilusTrader 做出贡献!我们欢迎任何帮助来改进 项目。如果您有增强想法或 Bug 修复,第一步是在 GitHub 上打开一个 [issue](https://github.com/nautechsystems/nautilus_trader/issues) 与团队讨论。这有助于确保您的贡献 与项目的目标保持一致,并避免重复工作。 在开始之前,请务必查看项目路线图中概述的 [开源范围](/ROADMAP.md#open-source-scope),以了解哪些在范围内,哪些不在范围内。 一旦您准备好开始为您的贡献工作,请务必遵循 [CONTRIBUTING.md](https://github.com/nautechsystems/nautilus_trader/blob/develop/CONTRIBUTING.md) 文件中概述的指南。这包括签署贡献者许可协议 (CLA) 以确保您的贡献可以包含在项目中。 再次感谢您对 NautilusTrader 的关注!我们期待审查您的贡献并与您合作改进项目。 ## 社区 加入我们的 [Discord](https://discord.gg/NautilusTrader) 用户和贡献者社区,进行聊天 并随时了解 NautilusTrader 的最新公告和功能。无论您是 希望做出贡献的开发人员,还是只是想了解更多关于平台的信息,我们的 Discord 服务器都欢迎所有人。 ## 要报告漏洞,请参阅我们的 [安全政策](SECURITY.md)。 有关完整的的安全政策(包括供应链安全),请参阅 。 ## 许可证 NautilusTrader 的源代码在 GitHub 上根据 [GNU Lesser General Public License v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html) 提供。 欢迎对该项目做出贡献,并需要完成标准的 [贡献者许可协议 (CLA)](https://github.com/nautechsystems/nautilus_trader/blob/develop/CLA.md)。 NautilusTrader™ 由 Nautech Systems 开发和维护,这是一家专门从事 高性能交易系统开发的技术公司。 欲了解更多信息,请访问 。 使用本软件受 [免责声明](https://nautilustrader.io/legal/disclaimer/) 约束。 © 2015-2026 Nautech Systems Pty Ltd. 保留所有权利。 ![nautechsystems](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/ns-logo.png "nautechsystems")
标签:NautilusTrader, Python, Rust, 事件驱动架构, 交易机器人, 加密货币交易, 可视化界面, 回测系统, 异步编程, 技术分析, 搜索引擎查询, 无后门, 期货交易, 策略开发, 算法交易, 网络流量审计, 股票交易, 自动化交易, 请求拦截, 逆向工具, 通知系统, 通知系统, 通知系统, 量化交易, 量化金融, 金融科技, 风控系统, 高性能计算, 高频交易