nautechsystems/nautilus_trader

GitHub Trending (daily) 工具

摘要

NautilusTrader 是一个开源的、基于 Rust 原生的算法交易引擎,适用于多资产、多交易场所系统,提供单一事件驱动架构,用于研究、模拟和实盘执行,支持使用 Python 或 Rust 开发策略。

生产级的 Rust 原生交易引擎,采用确定性事件驱动架构。
查看原文
查看缓存全文

缓存时间: 2026/06/17 11:35

nautechsystems/nautilus_trader 来源:https://github.com/nautechsystems/nautilus_trader # codecov (https://codecov.io/gh/nautechsystems/nautilus_trader) codspeed (https://codspeed.io/nautechsystems/nautilus_trader) pythons pypi-version pypi-format 下载量 (https://pepy.tech/projects/nautilus-trader) Discord (https://discord.gg/NautilusTrader) | 分支 | 版本 | 状态 | | :–––– | :––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– | :———————————————————————————————————————————————————————————————— | | master | 版本 (https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | 构建 (https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | nightly | 版本 (https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | 构建 (https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | develop | 版本 (https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | 构建 (https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) | | 平台 | Rust | Python | | :—————– | :—– | :–––– | | Linux (x86_64) | 1.96.0 | 3.12-3.14 | | Linux (ARM64) | 1.96.0 | 3.12-3.14 | | macOS (ARM64) | 1.96.0 | 3.12-3.14 | | Windows (x86_64) | 1.96.0 | 3.12-3.14 | - 文档: - 网站: - 支持[email protected] ## 简介 NautilusTrader 是一个开源、生产级别的 Rust 原生引擎,用于多资产、多场所交易系统。该系统涵盖研究、确定性模拟和实盘执行,全部统一在单一事件驱动架构中,Python 作为策略逻辑、配置和编排的控制平面。这种分离既提供了编译型交易引擎的性能和安全性,又保留了 Python 在系统组合和策略开发方面的灵活性。交易系统也可完全用 Rust 编写,以满足关键任务负载的需求。研究系统和实盘系统使用相同的执行语义和确定性时间模型。策略从研究到生产无需修改代码即可部署,实现了研究与实盘的一致性,减少了通常因差异而引入的部署风险。NautilusTrader 不限定资产类别。任何具有 REST API 或 WebSocket 数据流的场所均可通过模块化适配器集成。当前集成涵盖加密货币交易所(CEX 和 DEX)、传统市场(外汇、股票、期货、期权)以及博彩交易所。nautilus-trader ## 特性 - 快速:Rust 核心,使用 tokio (https://crates.io/crates/tokio) 实现异步网络通信。 - 可靠:由 Rust 保证类型安全和线程安全,可选 Redis 后端状态持久化。 - 可移植:支持 Linux、macOS 和 Windows。可使用 Docker 部署。 - 灵活:模块化适配器可集成任何 REST API 或 WebSocket 数据流。 - 高级:支持 IOCFOKGTCGTDDAYAT_THE_OPENAT_THE_CLOSE 等时间生效指令,以及高级订单类型和条件触发器。执行指令包括 post-onlyreduce-only 和冰山订单。关联订单包括 OCOOUOOTO。 - 可定制:用户自定义组件,或从头组装完整系统,利用缓存 (https://nautilustrader.io/docs/latest/concepts/cache) 和消息总线 (https://nautilustrader.io/docs/latest/concepts/message_bus)。 - 回测:同时使用历史报价 tick、交易 tick、K线、订单簿和自定义数据(纳秒精度)进行多场所、多品种、多策略回测。 - 实盘:研究环境和实盘环境使用相同的策略实现。 - 多场所:同时在多个场所运行做市和跨场所策略。 - AI 训练:引擎速度快到足以训练 AI 交易智能体(强化学习/进化策略)。nautilus > nautilus - 源自古希腊语 ‘sailor’ 和 naus ‘ship’。 > > 鹦鹉螺壳由模块化腔室组成,其生长因子近似对数螺旋。> 这一理念可转化为设计与建筑的美学。 ## 为什么选择 NautilusTrader? 交易策略研究通常使用 Python 的向量化方法进行,而生产交易系统则分别用编译型语言的事件驱动架构实现。NautilusTrader 消除了这种分离。Rust 原生核心为研究和实盘执行提供确定性事件驱动运行时,Python 则作为控制平面。两种环境共享相同的架构、执行语义和时间模型,使策略从研究迁移到生产时无需重新实现。 Python 绑定通过 PyO3 (https://pyo3.rs) 提供,并正在从 Cython 迁移。安装时无需 Rust 工具链。本项目遵循可靠性承诺 (Soundness Pledge) (https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html): > “本项目的目标是消除可靠性缺陷。> 开发者将尽最大努力避免此类缺陷,并欢迎帮助分析和修复它们。” > [!NOTE] > > MSRV: NautilusTrader 严重依赖 Rust 语言和编译器的改进。> 因此,最低支持 Rust 版本(MSRV)通常与最新稳定版 Rust 保持一致。 ## 集成 NautilusTrader 采用模块化设计,通过 适配器 工作,将交易场所和数据提供商的原始 API 转换为统一接口和标准化领域模型,从而实现连接。目前支持以下集成;详情请参见 docs/integrations/ (https://nautilustrader.io/docs/latest/integrations/): | 名称 | ID | 类型 | 状态 | 文档 | | :————————————————————————— | :–––––––––– | :––––––––––– | :—————————————————––| :—————————————– | | AX Exchange (https://architect.exchange) | AX | 永续合约交易所 | 状态 | 指南 | | Betfair (https://betfair.com) | BETFAIR | 体育博彩交易所 | 状态 | 指南 | | Binance (https://binance.com) | BINANCE | 加密货币交易所 (CEX) | 状态 | 指南 | | BitMEX (https://www.bitmex.com) | BITMEX | 加密货币交易所 (CEX) | 状态 | 指南 | | Bybit (https://www.bybit.com) | BYBIT | 加密货币交易所 (CEX) | 状态 | 指南 | | Coinbase (https://coinbase.com) | COINBASE | 加密货币交易所 (CEX) | 状态 | 指南 | | Databento (https://databento.com) | DATABENTO | 数据提供商 | 状态 | 指南 | | Deribit (https://www.deribit.com) | DERIBIT | 加密货币交易所 (CEX) | 状态 | 指南 | | Derive (https://www.derive.xyz) | DERIVE | 加密货币交易所 (DEX) | 状态 | 指南 | | dYdX (https://dydx.exchange/) | DYDX | 加密货币交易所 (DEX) | 状态 | 指南 | | Hyperliquid (https://hyperliquid.xyz) | HYPERLIQUID | 加密货币交易所 (DEX) | 状态 | 指南 | | Interactive Brokers (https://www.interactivebrokers.com) | INTERACTIVE_BROKERS | 经纪商(多场所) | 状态 | 指南 | | Kraken (https://kraken.com) | KRAKEN | 加密货币交易所 (CEX) | 状态 | 指南 | | Lighter (https://lighter.xyz) | LIGHTER | 加密货币交易所 (DEX) | 状态 | 指南 | | OKX (https://okx.com) | OKX | 加密货币交易所 (CEX) | 状态 | 指南 | | Polymarket (https://polymarket.com) | POLYMARKET | 预测市场 (DEX) | 状态 | 指南 | | Tardis (https://tardis.dev) | TARDIS | 加密货币数据提供商 | 状态 | 指南 | - ID:集成适配器客户端的默认客户端 ID。 - 类型:集成的类型(通常为场所类型)。 ### 状态 - planned:计划未来开发。 - building:正在构建中,可能尚不可用。 - beta:已实现最低可用功能,处于 beta 测试阶段。 - stable:功能集和 API 已稳定,经过开发者和用户的一定程度测试(仍可能遗留部分缺陷)。 更多详情请参见集成 (https://nautilustrader.io/docs/latest/integrations/) 文档。 ## 路线图 路线图 概述了 NautilusTrader 的战略方向。当前优先事项包括完成 Rust 原生核心、改进文档和提升代码易用性。开源项目专注于单节点回测和实盘交易,面向个人和小团队量化交易者。UI 仪表板、分布式编排和内置 AI/ML 工具不在范围内,以保持对核心引擎和生态系统可持续性的关注。 新的集成提案应先通过 RFC issue 讨论其适用性,然后再提交 PR。请参见 社区贡献的集成 获取指南。 ## 安全 OpenSSF 评分卡 (https://scorecard.dev/viewer/?uri=github.com/nautechsystems/nautilus_trader) OpenSSF 评分卡徽章跟踪自动化的仓库健康信号。它补充而非替代手动审查、CI 加固和安全审计。NautilusTrader 提供签名发布、持续漏洞管理和透明的开发实践,在开发和发布生命周期中应用分层控制: - 供应链:依赖项通过校验和锁定文件固定,第三方 Python 包仅从 wheel 安装(绝不从源码构建),并在进入锁定文件前经过发布冷却期;cargo-vet 审计 Rust 依赖项来源;生产 Rust 依赖项仅来自 crates.io;cargo-deny 强制执行 Rust 许可证兼容性。 - 代码与依赖扫描:CodeQL 静态分析、cargo-audit、cargo-deny、pip-audit 和 OSV Scanner 在拉取请求和每日夜间运行,同时运行 Gitleaks 秘密扫描。cargo-fuzz 目标覆盖选定适配器和签名表面。 - 构建与发布完整性:GitHub Actions 固定到提交 SHA,CI 运行器通过出站白名单加固,Python wheel 和 sdist 携带 SLSA 构建来源证明,容器镜像通过 Sigstore 签名并附带 SPDX SBOM,PyPI 和 crates.io 发布使用可信发布(OIDC,无长期令牌),仅限受保护的 release 环境(从不运行来自拉取请求或 fork 的代码)。 - 运行时密码学:TLS 和大多数运行时密码学使用 aws-lc-rs (https://github.com/aws/aws-lc-rs)(AWS-LC 的 Rust 绑定),Ed25519 签名通过 ed25519-dalek (https://github.com/dalek-cryptography/curve25519-dalek) 实现。 ### 报告漏洞 通过 GitHub 安全公告 (https://github.com/nautechsystems/nautilus_trader/security/advisories/new) 或电子邮件(PGP 密钥可应要求提供)私下报告。我们会在 48 小时内确认报告,并在 30 天内修补关键漏洞。一份仔细的漏洞报告需要花费真正的时间和精力。我们对此表示感激,除非您希望保持匿名,否则我们会在相关安全公告和发布说明中致谢报告者。 安全策略 详细说明了范围、协调披露和逐步发布验证。发布安全架构 描述了端到端的发布供应链。完整政策请参见负责任的披露 (https://nautilustrader.io/security/responsible-disclosure/) 和供应链安全 (https://nautilustrader.io/security/supply-chain/) 政策;CI/CD 安全记录在 .github/OVERVIEW.md。 ## 版本管理与发布 > [!WARNING] > > NautilusTrader 仍在积极开发中。 部分功能可能不完整,虽然 API 正趋于稳定,但不同版本之间可能包含破坏性变更。 > 我们将尽力在发布说明中记录这些变更,但仅为尽力而为。 我们计划遵循每两周一次的发布节奏,但实验性或较大功能可能导致延迟。 ### 分支 我们力求在所有分支上保持稳定、通过的构建。 - master:对应最新发布版本的源代码;推荐用于生产环境。 - nightly:从 develop 分支每日快照,用于早期测试;在 UTC 14:00 及有需要时合并。 - develop:贡献者和功能开发的活跃分支。 > [!NOTE] > > 我们的路线图 致力于为 2.x 版本实现稳定 API(可能在 Rust 移植之后)。> 一旦达到此里程碑,我们计划为所有 API 变更实施正式的弃用流程。> 目前这一方法使我们能够保持较快的开发节奏。 ## 精度模式 NautilusTrader 为其核心值类型(PriceQuantityMoney)支持两种精度模式,区别在于内部位宽和最大小数精度。 - 高精度:128 位整数,最多 16 位小数精度,值范围更大。 - 标准精度:64 位整数,最多 9 位小数精度,值范围较小。 > [!NOTE] > > 默认情况下,官方 Python wheel 在 Linux 和 macOS 上以高精度(128 位)模式发布。> 在 Windows 上,仅提供标准精度(64 位)Python wheel,因为 MSVC 的 C/C++ 前端不支持 __int128,从而阻止 Cython/FFI 层处理 128 位整数。> > 对于纯 Rust crate,高精度在所有平台(包括 Windows)上均有效,因为 Rust 通过软件模拟处理 i128/u128。默认使用标准精度,除非您显式启用 high-precision 功能标志。更多详情请参见安装指南 (https://nautilustrader.io/docs/latest/getting_started/installation)。 Rust 功能标志:要在 Rust 中启用高精度模式,请在 Cargo.toml 中添加 high-precision 功能: toml [dependencies] nautilus_model = { version = "*", features = ["high-precision"] } ## 安装 我们建议使用 Python 的最新受支持版本,并在虚拟环境中安装 nautilus_trader (https://pypi.org/project/nautilus_trader/) 以隔离依赖项。 有两种受支持的安装方式: 1. 从 PyPI 或 Nautech Systems 包索引安装预编译的二进制 wheel。 2. 从源码构建。 > [!TIP] > > 我们强烈建议使用 uv (https://docs.astral.sh/uv) 包管理器配合“纯”CPython 进行安装。> > Conda 和其他 Python 发行版可能有效,但未得到官方支持。 ### 从 PyPI 安装 使用 Python 的 pip 包管理器从 PyPI 安装最新的二进制 wheel(或 sdist 包): bash pip install -U nautilus_trader 通过 ‘extras’ 安装可选依赖项以支持特定集成(例如 betfairdockerdydxibpolymarketvisualization): bash pip install -U "nautilus_trader[docker,ib]" 有关可用 extras 的完整列表,请参见安装指南 (https://nautilustrader.io/docs/latest/getting_started/installation#extras)。 ### 从 Nautech Systems 包索引安装 Nautech Systems 包索引(packages.nautechsystems.io)符合 PEP-503 (https://peps.python.org/pep-0503/),托管稳定版和开发版二进制 wh

相似文章

TauricResearch/TradingAgents

GitHub Trending (daily)

TradingAgents 是一个用于金融交易的开源多智能体LLM框架,支持多种LLM提供商,最近更新包括新模型和功能。

具备安全护栏的自主代理交易

Hacker News Top

Shuriken 是一个基础设施平台,使AI代理能够跨多种资产类别进行交易,并具备细粒度权限和安全护栏。本仓库为基于LLM的代理提供与Shuriken API和SDK集成的指南。

HKUDS/AI-Trader

GitHub Trending (daily)

AI-Trader 是来自 HKUDS 的开源原生智能体交易平台,允许 AI 智能体自主注册、发布信号并在股票、加密货币、外汇等市场执行交易。