[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-nautechsystems--nautilus_trader":3,"tool-nautechsystems--nautilus_trader":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":80,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":119,"forks":120,"last_commit_at":121,"license":122,"difficulty_score":23,"env_os":123,"env_gpu":124,"env_ram":124,"env_deps":125,"category_tags":129,"github_topics":130,"view_count":144,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":145,"updated_at":146,"faqs":147,"releases":175},418,"nautechsystems\u002Fnautilus_trader","nautilus_trader","Production-grade Rust-native trading engine with deterministic event-driven architecture","NautilusTrader 是一个开源的、可用于生产环境的交易引擎，专为多资产、多市场的量化交易系统设计。它采用 Rust 语言构建核心引擎，确保高性能与内存安全，同时通过 Python 提供策略编写、系统配置和流程编排的灵活性。这种架构将底层执行的确定性与上层逻辑的易用性结合起来，解决了传统量化系统在回测与实盘之间行为不一致、性能不足或扩展困难的问题。\n\nNautilusTrader 特别适合量化开发者、算法交易研究员以及需要构建可靠自动化交易系统的团队使用。普通用户或非技术背景人员则不太适合直接使用。其核心技术亮点在于事件驱动的确定性架构——这意味着无论是在历史数据回测、仿真模拟还是实盘交易中，系统的行为都高度一致，极大提升了策略开发的可信度和部署效率。此外，项目对主流操作系统和 Python 最新版本均有良好支持，文档和社区资源也较为完善。","# \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_d1fd7392d809.png\" width=\"500\">\n\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fnautechsystems\u002Fnautilus_trader\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=DXO9QQI40H)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fnautechsystems\u002Fnautilus_trader)\n[![codspeed](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fcodspeed.io\u002Fbadge.json)](https:\u002F\u002Fcodspeed.io\u002Fnautechsystems\u002Fnautilus_trader)\n![pythons](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fnautilus_trader)\n![pypi-version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fnautilus_trader)\n![pypi-format](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fformat\u002Fnautilus_trader?color=blue)\n[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_ed6316d49b5e.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fnautilus-trader)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-%235865F2.svg?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader)\n\n| Branch    | Version                                                                                                                                                                                                                     | Status                                                                                                                                                                                            |\n| :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `master`  | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fmaster%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html)  | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=master)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml)  |\n| `nightly` | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fnightly%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html) | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=nightly)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml) |\n| `develop` | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fdevelop%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html) | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=develop)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml) |\n\n| Platform           | Rust   | Python    |\n| :----------------- | :----- | :-------- |\n| `Linux (x86_64)`   | 1.94.1 | 3.12-3.14 |\n| `Linux (ARM64)`    | 1.94.1 | 3.12-3.14 |\n| `macOS (ARM64)`    | 1.94.1 | 3.12-3.14 |\n| `Windows (x86_64)` | 1.94.1 | 3.12-3.14 |\n\n- **Docs**: \u003Chttps:\u002F\u002Fnautilustrader.io\u002Fdocs\u002F>\n- **Website**: \u003Chttps:\u002F\u002Fnautilustrader.io>\n- **Support**: [support@nautilustrader.io](mailto:support@nautilustrader.io)\n\n## Introduction\n\nNautilusTrader is an open-source, production-grade, Rust-native engine for multi-asset,\nmulti-venue trading systems.\n\nThe system spans research, deterministic simulation, and live execution within a single\nevent-driven architecture, with Python serving as the control plane for strategy logic,\nconfiguration, and orchestration.\n\nThis separation provides the performance and safety of a compiled trading engine with\nthe flexibility of Python for system composition and strategy development.\nTrading systems can also be written entirely in Rust for mission-critical workloads.\n\nThe same execution semantics and deterministic time model operate in both research and\nlive systems. Strategies deploy from research to production with no code changes,\nproviding research-to-live parity and reducing the divergence that typically introduces\ndeployment risk.\n\nNautilusTrader is asset-class-agnostic. Any venue with a REST API or WebSocket feed can be\nintegrated through modular adapters. Current integrations span crypto exchanges (CEX and\nDEX), traditional markets (FX, equities, futures, options), and betting exchanges.\n\n![nautilus-trader](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fnautilus-trader.png \"nautilus-trader\")\n\n## Features\n\n- **Fast**: Rust core with asynchronous networking using [tokio](https:\u002F\u002Fcrates.io\u002Fcrates\u002Ftokio).\n- **Reliable**: Type- and thread-safety backed by Rust, with optional Redis-backed state persistence.\n- **Portable**: Runs on Linux, macOS, and Windows. Deploy using Docker.\n- **Flexible**: Modular adapters integrate any REST API or WebSocket feed.\n- **Advanced**: Time in force `IOC`, `FOK`, `GTC`, `GTD`, `DAY`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency orders including `OCO`, `OUO`, `OTO`.\n- **Customizable**: User-defined components, or assemble entire systems from scratch using the [cache](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcache) and [message bus](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fmessage_bus).\n- **Backtesting**: Multiple venues, instruments, and strategies simultaneously using historical quote tick, trade tick, bar, order book, and custom data with nanosecond resolution.\n- **Live**: Identical strategy implementations between research and live deployment.\n- **Multi-venue**: Run market-making and cross-venue strategies across multiple venues simultaneously.\n- **AI Training**: Engine fast enough to train AI trading agents (RL\u002FES).\n\n![nautilus](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fnautilus-art.png \"nautilus\")\n\n> *nautilus - from ancient Greek 'sailor' and naus 'ship'.*\n>\n> *The nautilus shell consists of modular chambers with a growth factor which approximates a logarithmic spiral.\n> The idea is that this can be translated to the aesthetics of design and architecture.*\n\n## Why NautilusTrader?\n\nTrading strategy research is often conducted in Python using vectorized approaches, while\nproduction trading systems are implemented separately using event-driven architectures in\ncompiled languages.\n\nNautilusTrader removes this separation.\n\nA Rust-native core provides a deterministic event-driven runtime for both research and live\nexecution, while Python serves as the control plane. The same architecture, execution\nsemantics, and time model operate across both environments, allowing strategies to move\nfrom research to production without reimplementation.\n\nPython bindings are provided via [PyO3](https:\u002F\u002Fpyo3.rs), with an ongoing migration from\nCython. No Rust toolchain is required at install time.\n\nThis project makes the [Soundness Pledge](https:\u002F\u002Fraphlinus.github.io\u002Frust\u002F2020\u002F01\u002F18\u002Fsoundness-pledge.html):\n\n> “The intent of this project is to be free of soundness bugs.\n> The developers will do their best to avoid them, and welcome help in analyzing and fixing them.”\n\n> [!NOTE]\n>\n> **MSRV:** NautilusTrader relies heavily on improvements in the Rust language and compiler.\n> As a result, the Minimum Supported Rust Version (MSRV) is generally equal to the latest stable release of Rust.\n\n## Integrations\n\nNautilusTrader is modularly designed to work with *adapters*, enabling connectivity to trading venues\nand data providers by translating their raw APIs into a unified interface and normalized domain model.\n\nThe following integrations are currently supported; see [docs\u002Fintegrations\u002F](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fintegrations\u002F) for details:\n\n| Name                                                                         | ID                    | Type                    | Status                                               | Docs                                       |\n| :--------------------------------------------------------------------------- | :-------------------- | :---------------------- | :----------------------------------------------------| :----------------------------------------- |\n| [AX Exchange](https:\u002F\u002Farchitect.exchange)                                    | `AX`                  | Perpetuals Exchange     | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbeta-yellow)  | [Guide](docs\u002Fintegrations\u002Farchitect_ax.md) |\n| [Architect](https:\u002F\u002Farchitect.co)                                            | `ARCHITECT`           | Brokerage (multi-venue) | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplanned-gray) | -                                          |\n| [Betfair](https:\u002F\u002Fbetfair.com)                                               | `BETFAIR`             | Sports Betting Exchange | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fbetfair.md)      |\n| [Binance](https:\u002F\u002Fbinance.com)                                               | `BINANCE`             | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fbinance.md)      |\n| [BitMEX](https:\u002F\u002Fwww.bitmex.com)                                             | `BITMEX`              | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fbitmex.md)       |\n| [Bybit](https:\u002F\u002Fwww.bybit.com)                                               | `BYBIT`               | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fbybit.md)        |\n| [Databento](https:\u002F\u002Fdatabento.com)                                           | `DATABENTO`           | Data Provider           | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fdatabento.md)    |\n| [Deribit](https:\u002F\u002Fwww.deribit.com)                                           | `DERIBIT`             | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fderibit.md)      |\n| [dYdX](https:\u002F\u002Fdydx.exchange\u002F)                                               | `DYDX`                | Crypto Exchange (DEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fdydx.md)         |\n| [Hyperliquid](https:\u002F\u002Fhyperliquid.xyz)                                       | `HYPERLIQUID`         | Crypto Exchange (DEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fhyperliquid.md)  |\n| [Interactive Brokers](https:\u002F\u002Fwww.interactivebrokers.com)                    | `INTERACTIVE_BROKERS` | Brokerage (multi-venue) | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fib.md)           |\n| [Kraken](https:\u002F\u002Fkraken.com)                                                 | `KRAKEN`              | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fkraken.md)       |\n| [OKX](https:\u002F\u002Fokx.com)                                                       | `OKX`                 | Crypto Exchange (CEX)   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fokx.md)          |\n| [Polymarket](https:\u002F\u002Fpolymarket.com)                                         | `POLYMARKET`          | Prediction Market (DEX) | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Fpolymarket.md)   |\n| [Tardis](https:\u002F\u002Ftardis.dev)                                                 | `TARDIS`              | Crypto Data Provider    | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [Guide](docs\u002Fintegrations\u002Ftardis.md)       |\n\n- **ID**: The default client ID for the integrations adapter clients.\n- **Type**: The type of integration (often the venue type).\n\n### Status\n\n- `planned`: Planned for future development.\n- `building`: Under construction and likely not in a usable state.\n- `beta`: Completed to a minimally working state and in a beta testing phase.\n- `stable`: Stabilized feature set and API, the integration has been tested by both developers and users to a reasonable level (some bugs may still remain).\n\nSee the [Integrations](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fintegrations\u002F) documentation for further details.\n\n## Roadmap\n\nThe [Roadmap](\u002FROADMAP.md) outlines NautilusTrader's strategic direction.\nCurrent priorities include completing the Rust-native core, improving documentation, and enhancing code ergonomics.\n\nThe open-source project focuses on single-node backtesting and live trading for individual and small-team quantitative traders.\nUI dashboards, distributed orchestration, and built-in AI\u002FML tooling are out of scope to maintain focus on the core engine and ecosystem sustainability.\n\nNew integration proposals should start with an RFC issue to discuss suitability before submitting a PR.\nSee [Community-contributed integrations](\u002FROADMAP.md#community-contributed-integrations) for guidelines.\n\n## Versioning and releases\n\n> [!WARNING]\n>\n> **NautilusTrader is still under active development**. Some features may be incomplete, and while\n> the API is becoming more stable, breaking changes can occur between releases.\n> We strive to document these changes in the release notes on a **best-effort basis**.\n\nWe aim to follow a **bi-weekly release schedule**, though experimental or larger features may cause delays.\n\n### Branches\n\nWe aim to maintain a stable, passing build across all branches.\n\n- `master`: Reflects the source code for the latest released version; recommended for production use.\n- `nightly`: Daily snapshots of the `develop` branch for early testing; merged at **14:00 UTC** and as required.\n- `develop`: Active development branch for contributors and feature work.\n\n> [!NOTE]\n>\n> Our [roadmap](\u002FROADMAP.md) aims to achieve a **stable API for version 2.x** (likely after the Rust port).\n> Once this milestone is reached, we plan to implement a formal deprecation process for any API changes.\n> This approach allows us to maintain a rapid development pace for now.\n\n## Precision mode\n\nNautilusTrader supports two precision modes for its core value types (`Price`, `Quantity`, `Money`),\nwhich differ in their internal bit-width and maximum decimal precision.\n\n- **High-precision**: 128-bit integers with up to 16 decimals of precision, and a larger value range.\n- **Standard-precision**: 64-bit integers with up to 9 decimals of precision, and a smaller value range.\n\n> [!NOTE]\n>\n> By default, the official Python wheels ship in high-precision (128-bit) mode on Linux and macOS.\n> On Windows, only standard-precision (64-bit) Python wheels are available because MSVC's C\u002FC++ frontend\n> does not support `__int128`, preventing the Cython\u002FFFI layer from handling 128-bit integers.\n>\n> For pure Rust crates, high-precision works on all platforms (including Windows) since Rust handles\n> `i128`\u002F`u128` via software emulation. The default is standard-precision unless you explicitly enable\n> the `high-precision` feature flag.\n\nSee the [Installation Guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation) for further details.\n\n**Rust feature flag**: To enable high-precision mode in Rust, add the `high-precision` feature to your Cargo.toml:\n\n```toml\n[dependencies]\nnautilus_model = { version = \"*\", features = [\"high-precision\"] }\n```\n\n## Installation\n\nWe recommend using the latest supported version of Python and installing [nautilus_trader](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnautilus_trader\u002F) inside a virtual environment to isolate dependencies.\n\n**There are two supported ways to install**:\n\n1. Pre-built binary wheel from PyPI *or* the Nautech Systems package index.\n2. Build from source.\n\n> [!TIP]\n>\n> We highly recommend installing using the [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv) package manager with a \"vanilla\" CPython.\n>\n> Conda and other Python distributions *may* work but aren’t officially supported.\n\n### From PyPI\n\nTo install the latest binary wheel (or sdist package) from PyPI using Python's pip package manager:\n\n```bash\npip install -U nautilus_trader\n```\n\nInstall optional dependencies as 'extras' for specific integrations (e.g., `betfair`, `docker`, `dydx`, `ib`, `polymarket`, `visualization`):\n\n```bash\npip install -U \"nautilus_trader[docker,ib]\"\n```\n\nSee the [Installation Guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation#extras) for the full list of available extras.\n\n### From the Nautech Systems package index\n\nThe Nautech Systems package index (`packages.nautechsystems.io`) complies with [PEP-503](https:\u002F\u002Fpeps.python.org\u002Fpep-0503\u002F) and hosts both stable and development binary wheels for `nautilus_trader`.\nThis enables users to install either the latest stable release or pre-release versions for testing.\n\n#### Stable wheels\n\nStable wheels correspond to official releases of `nautilus_trader` on PyPI, and use standard versioning.\n\nTo install the latest stable release:\n\n```bash\npip install -U nautilus_trader --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\n> [!TIP]\n>\n> Use `--extra-index-url` instead of `--index-url` if you want pip to fall back to PyPI automatically.\n\n#### Development wheels\n\nDevelopment wheels are published from both the `nightly` and `develop` branches,\nallowing users to test features and fixes ahead of stable releases.\n\nThis process also helps preserve compute resources and provides easy access to the exact binaries tested in CI pipelines,\nwhile adhering to [PEP-440](https:\u002F\u002Fpeps.python.org\u002Fpep-0440\u002F) versioning standards:\n\n- `develop` wheels use the version format `dev{date}+{build_number}` (e.g., `1.208.0.dev20241212+7001`).\n- `nightly` wheels use the version format `a{date}` (alpha) (e.g., `1.208.0a20241212`).\n\n| Platform           | Nightly | Develop |\n| :----------------- | :------ | :------ |\n| `Linux (x86_64)`   | ✓       | ✓       |\n| `Linux (ARM64)`    | ✓       | -       |\n| `macOS (ARM64)`    | ✓       | -       |\n| `Windows (x86_64)` | ✓       | ✓       |\n\n**Note**: Development wheels from the `develop` branch publish for Linux x86_64 and Windows only.\nmacOS and Linux ARM64 builds run on the nightly schedule to keep CI feedback fast.\n\n> [!WARNING]\n>\n> We do not recommend using development wheels in production environments, such as live trading controlling real capital.\n\n#### Installation commands\n\nBy default, pip will install the latest stable release. Adding the `--pre` flag ensures that pre-release versions, including development wheels, are considered.\n\nTo install the latest available pre-release (including development wheels):\n\n```bash\npip install -U nautilus_trader --pre --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\nTo install a specific development wheel (e.g., `1.221.0a20251026` for October 26, 2025):\n\n```bash\npip install nautilus_trader==1.221.0a20251026 --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\n#### Available versions\n\nYou can view all available versions of `nautilus_trader` on the [package index](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html).\n\nTo programmatically fetch and list available versions:\n\n```bash\ncurl -s https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html | sed -n 's\u002F.*\u003Ca href=\"\\([^\"]*\\)\".*\u002F\\1\u002Fp' | awk -F'#' '{print $1}' | sort\n```\n\n> [!NOTE]\n>\n> On Linux, confirm your glibc version with `ldd --version` and ensure it reports **2.35** or newer before installing binary wheels.\n\n#### Branch updates\n\n- `develop` branch wheels (`.dev`): Build and publish continuously with every merged commit.\n- `nightly` branch wheels (`a`): Build and publish daily when we automatically merge the `develop` branch at **14:00 UTC** (if there are changes).\n\n#### Retention policies\n\n- `develop` branch wheels (`.dev`): We retain only the most recent wheel build.\n- `nightly` branch wheels (`a`): We retain only the 30 most recent wheel builds.\n\n#### Verifying build provenance\n\nAll release artifacts (wheels and source distributions) published to PyPI, GitHub Releases,\nand the Nautech Systems package index include cryptographic attestations that prove their authenticity and build provenance.\n\nThese attestations are generated automatically during the CI\u002FCD pipeline using [SLSA](https:\u002F\u002Fslsa.dev\u002F) build provenance, and can be verified to ensure:\n\n- The artifact was built by the official NautilusTrader GitHub Actions workflow.\n- The artifact corresponds to a specific commit SHA in the repository.\n- The artifact hasn't been tampered with since it was built.\n\nTo verify a wheel file using the GitHub CLI:\n\n```bash\ngh attestation verify nautilus_trader-1.220.0-*.whl --owner nautechsystems\n```\n\nThis provides supply chain security by allowing you to cryptographically verify that the installed package came from the official NautilusTrader build process.\n\n> [!NOTE]\n>\n> Attestation verification requires the [GitHub CLI](https:\u002F\u002Fcli.github.com\u002F) (`gh`) to be installed.\n> Development wheels from `develop` and `nightly` branches are also attested and can be verified the same way.\n\n### From source\n\nIt's possible to install from source using pip if you first install the build dependencies as specified in the `pyproject.toml`.\n\n1. Install [rustup](https:\u002F\u002Frustup.rs\u002F) (the Rust toolchain installer):\n   - Linux and macOS:\n\n       ```bash\n       curl https:\u002F\u002Fsh.rustup.rs -sSf | sh\n       ```\n\n   - Windows:\n       - Download and install [`rustup-init.exe`](https:\u002F\u002Fwin.rustup.rs\u002Fx86_64)\n       - Install \"Desktop development with C++\" using [Build Tools for Visual Studio 2022](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F)\n   - Verify (any system):\n       from a terminal session run: `rustc --version`\n\n2. Enable `cargo` in the current shell:\n   - Linux and macOS:\n\n       ```bash\n       source $HOME\u002F.cargo\u002Fenv\n       ```\n\n   - Windows:\n     - Start a new PowerShell\n\n3. Install [clang](https:\u002F\u002Fclang.llvm.org\u002F) (a C language frontend for LLVM):\n   - Linux:\n\n       ```bash\n       sudo apt-get install clang\n       ```\n\n   - macOS:\n\n       ```bash\n       xcode-select --install\n       ```\n\n   - Windows:\n       1. Add Clang to your [Build Tools for Visual Studio 2022](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F):\n          - Start | Visual Studio Installer | Modify | C++ Clang tools for Windows (latest) = checked | Modify\n       2. Enable `clang` in the current shell:\n\n          ```powershell\n          [System.Environment]::SetEnvironmentVariable('path', \"C:\\Program Files\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\Llvm\\x64\\bin\\;\" + $env:Path,\"User\")\n          ```\n\n   - Verify (any system):\n       from a terminal session run: `clang --version`\n\n4. Install uv (see the [uv installation guide](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation) for more details):\n\n    - Linux and macOS:\n\n        ```bash\n        curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n        ```\n\n    - Windows (PowerShell):\n\n        ```powershell\n        irm https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.ps1 | iex\n        ```\n\n5. Clone the source with `git`, and install from the project's root directory:\n\n    ```bash\n    git clone --branch develop --depth 1 https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\n    cd nautilus_trader\n    uv sync --all-extras\n    ```\n\n> [!NOTE]\n>\n> The `--depth 1` flag fetches just the latest commit for a faster, lightweight clone.\n\n6. Set environment variables for PyO3 compilation (Linux and macOS only):\n\n    ```bash\n    # Linux only: Set the library path for the Python interpreter\n    export LD_LIBRARY_PATH=\"$(python -c 'import sys; print(sys.base_prefix)')\u002Flib:$LD_LIBRARY_PATH\"\n\n    # Set the Python executable path for PyO3\n    export PYO3_PYTHON=$(pwd)\u002F.venv\u002Fbin\u002Fpython\n\n    # Required for Rust tests when using uv-installed Python\n    export PYTHONHOME=$(python -c \"import sys; print(sys.base_prefix)\")\n    ```\n\n> [!NOTE]\n>\n> The `LD_LIBRARY_PATH` export is Linux-specific and not needed on macOS.\n>\n> The `PYTHONHOME` variable is required when running `make cargo-test` with a `uv`-installed Python.\n> Without it, tests that depend on PyO3 may fail to locate the Python runtime.\n\nSee the [Installation Guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation) for other options and further details.\n\n## Redis\n\nUsing [Redis](https:\u002F\u002Fredis.io) with NautilusTrader is **optional** and only required if configured as the backend for a\n[cache](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcache) database or [message bus](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fmessage_bus).\nSee the **Redis** section of the [Installation Guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation#redis) for further details.\n\n## Makefile\n\nA `Makefile` is provided to automate most installation and build tasks for development. Some of the targets include:\n\n- `make install`: Installs in `release` build mode with all dependency groups and extras.\n- `make install-debug`: Same as `make install` but with `debug` build mode.\n- `make install-just-deps`: Installs just the `main`, `dev` and `test` dependencies (does not install package).\n- `make build`: Runs the build script in `release` build mode (default).\n- `make build-debug`: Runs the build script in `debug` build mode.\n- `make build-wheel`: Runs uv build with a wheel format in `release` mode.\n- `make build-wheel-debug`: Runs uv build with a wheel format in `debug` mode.\n- `make cargo-test`: Runs all Rust crate tests using `cargo-nextest`.\n- `make clean`: Deletes all build results, such as `.so` or `.dll` files.\n- `make distclean`: **CAUTION** Removes all artifacts not in the git index from the repository. This includes source files which have not been `git add`ed.\n- `make docs`: Builds the documentation HTML using Sphinx.\n- `make pre-commit`: Runs the pre-commit checks over all files.\n- `make ruff`: Runs ruff over all files using the `pyproject.toml` config (with autofix).\n- `make pytest`: Runs all tests with `pytest`.\n- `make test-performance`: Runs performance tests with [codspeed](https:\u002F\u002Fcodspeed.io).\n\n> [!TIP]\n>\n> Run `make help` for documentation on all available make targets.\n\n> [!TIP]\n>\n> See the [crates\u002Finfrastructure\u002FTESTS.md](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002Fcrates\u002Finfrastructure\u002FTESTS.md) file for running the infrastructure integration tests.\n\n## Examples\n\nIndicators and strategies can be developed in Python, Cython, or Rust. For performance and\nlatency-sensitive applications, we recommend Rust. Below are some examples:\n\n- [indicator](\u002Fnautilus_trader\u002Fexamples\u002Findicators\u002Fema_python.py) example written in Python.\n- [indicator](\u002Fnautilus_trader\u002Findicators\u002F) implementations written in Cython.\n- [strategy](\u002Fnautilus_trader\u002Fexamples\u002Fstrategies\u002F) examples written in Python.\n- [backtest](\u002Fexamples\u002Fbacktest\u002F) examples using a `BacktestEngine` directly.\n\n## Docker\n\nDocker containers are built with the following variant tags:\n\n- `nautilus_trader:latest` has the latest release version installed.\n- `nautilus_trader:nightly` has the head of the `nightly` branch installed.\n- `jupyterlab:latest` has the latest release version installed along with `jupyterlab` and an\n  example backtest notebook with accompanying data.\n- `jupyterlab:nightly` has the head of the `nightly` branch installed along with `jupyterlab` and an\n  example backtest notebook with accompanying data.\n\nYou can pull the container images as follows:\n\n```bash\ndocker pull ghcr.io\u002Fnautechsystems\u002F\u003Cimage_variant_tag> --platform linux\u002Famd64\n```\n\nYou can launch the backtest example container by running:\n\n```bash\ndocker pull ghcr.io\u002Fnautechsystems\u002Fjupyterlab:nightly --platform linux\u002Famd64\ndocker run -p 8888:8888 ghcr.io\u002Fnautechsystems\u002Fjupyterlab:nightly\n```\n\nThen open your browser at the following address:\n\n```bash\nhttp:\u002F\u002F127.0.0.1:8888\u002Flab\n```\n\n> [!WARNING]\n>\n> Examples use `log_level=\"ERROR\"` because Nautilus logging exceeds Jupyter's stdout rate limit,\n> causing notebooks to hang at lower log levels.\n\n## Development\n\nWe aim to provide the most pleasant developer experience possible for this hybrid codebase of Rust, Python, and Cython.\nSee the [Developer Guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fdeveloper_guide\u002F) for helpful information.\n\n> [!TIP]\n>\n> Run `make build-debug` to compile after changes to Rust or Cython code for the most efficient development workflow.\n\n### Testing with Rust\n\n[cargo-nextest](https:\u002F\u002Fnexte.st) is the standard Rust test runner for NautilusTrader.\nIts key benefit is isolating each test in its own process, ensuring test reliability\nby avoiding interference.\n\nYou can install cargo-nextest by running:\n\n```bash\ncargo install cargo-nextest\n```\n\n> [!TIP]\n>\n> Run Rust tests with `make cargo-test`, which uses **cargo-nextest** with an efficient profile.\n\n## Contributing\n\nThank you for considering contributing to NautilusTrader! We welcome any and all help to improve\nthe project. If you have an idea for an enhancement or a bug fix, the first step is to open an [issue](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues)\non GitHub to discuss it with the team. This helps to ensure that your contribution will be\nwell-aligned with the goals of the project and avoids duplication of effort.\n\nBefore getting started, be sure to review the [open-source scope](\u002FROADMAP.md#open-source-scope) outlined in the project’s roadmap to understand what’s in and out of scope.\n\nOnce you're ready to start working on your contribution, make sure to follow the guidelines\noutlined in the [CONTRIBUTING.md](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002FCONTRIBUTING.md) file. This includes signing a Contributor License Agreement (CLA)\nto ensure that your contributions can be included in the project.\n\n> [!NOTE]\n>\n> Pull requests should target the `develop` branch (the default branch). This is where new features and improvements are integrated before release.\n\nThank you again for your interest in NautilusTrader! We look forward to reviewing your contributions and working with you to improve the project.\n\n## Community\n\nJoin our community of users and contributors on [Discord](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader) to chat\nand stay up-to-date with the latest announcements and features of NautilusTrader. Whether you're a\ndeveloper looking to contribute or just want to learn more about the platform, all are welcome on our Discord server.\n\n> [!WARNING]\n>\n> NautilusTrader does not issue, promote, or endorse any cryptocurrency tokens. Any claims or communications suggesting otherwise are unauthorized and false.\n>\n> All official updates and communications from NautilusTrader will be shared exclusively through \u003Chttps:\u002F\u002Fnautilustrader.io>, our [GitHub](https:\u002F\u002Fgithub.com\u002Fnautechsystems), our [Discord server](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader), or our verified X (Twitter) account: [@NautilusTrader](https:\u002F\u002Fx.com\u002FNautilusTrader).\n>\n> If you encounter any suspicious activity, please report it to the appropriate platform and contact us at \u003Cinfo@nautechsystems.io>.\n\n## Security\n\nTo report a vulnerability, see our [Security Policy](SECURITY.md).\nFor full security policies including supply chain security, see \u003Chttps:\u002F\u002Fnautilustrader.io\u002Fsecurity\u002F>.\n\n## License\n\nThe source code for NautilusTrader is available on GitHub under the [GNU Lesser General Public License v3.0](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Flgpl-3.0.en.html).\nContributions to the project are welcome and require the completion of a standard [Contributor License Agreement (CLA)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002FCLA.md).\n\n---\n\nNautilusTrader™ is developed and maintained by Nautech Systems, a technology\ncompany specializing in the development of high-performance trading systems.\nFor more information, visit \u003Chttps:\u002F\u002Fnautilustrader.io>.\n\nUse of this software is subject to the [Disclaimer](https:\u002F\u002Fnautilustrader.io\u002Flegal\u002Fdisclaimer\u002F).\n\n© 2015-2026 Nautech Systems Pty Ltd. All rights reserved.\n\n![nautechsystems](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fns-logo.png \"nautechsystems\")\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_5fb1fd35b48b.png\" width=\"128\">\n","# \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_d1fd7392d809.png\" width=\"500\">\n\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fnautechsystems\u002Fnautilus_trader\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=DXO9QQI40H)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fnautechsystems\u002Fnautilus_trader)\n[![codspeed](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fcodspeed.io\u002Fbadge.json)](https:\u002F\u002Fcodspeed.io\u002Fnautechsystems\u002Fnautilus_trader)\n![pythons](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fnautilus_trader)\n![pypi-version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fnautilus_trader)\n![pypi-format](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fformat\u002Fnautilus_trader?color=blue)\n[![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_ed6316d49b5e.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fnautilus-trader)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-%235865F2.svg?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader)\n\n| 分支      | 版本                                                                                                                                                                                                                        | 状态                                                                                                                                                                                            |\n| :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `master`  | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fmaster%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html)  | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=master)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml)  |\n| `nightly` | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fnightly%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html) | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=nightly)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml) |\n| `develop` | [![version](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fdevelop%2Fversion.json)](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html) | [![build](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg?branch=develop)](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Factions\u002Fworkflows\u002Fbuild.yml) |\n\n| 平台               | Rust   | Python    |\n| :----------------- | :----- | :-------- |\n| `Linux (x86_64)`   | 1.94.1 | 3.12-3.14 |\n| `Linux (ARM64)`    | 1.94.1 | 3.12-3.14 |\n| `macOS (ARM64)`    | 1.94.1 | 3.12-3.14 |\n| `Windows (x86_64)` | 1.94.1 | 3.12-3.14 |\n\n- **文档**: \u003Chttps:\u002F\u002Fnautilustrader.io\u002Fdocs\u002F>\n- **官网**: \u003Chttps:\u002F\u002Fnautilustrader.io>\n- **支持**: [support@nautilustrader.io](mailto:support@nautilustrader.io)\n\n## 简介\n\nNautilusTrader 是一个开源的、可用于生产环境的、原生基于 Rust 的多资产（multi-asset）、多交易场所（multi-venue）交易系统引擎。\n\n该系统在单一事件驱动架构内，覆盖研究（research）、确定性仿真（deterministic simulation）和实盘执行（live execution）。Python 作为控制平面（control plane），用于策略逻辑、配置和编排。\n\n这种分离方式结合了编译型交易引擎的性能与安全性，以及 Python 在系统组合和策略开发方面的灵活性。对于任务关键型工作负载，交易系统也可以完全使用 Rust 编写。\n\n研究环境和实盘环境采用相同的执行语义和确定性时间模型。策略从研究到生产部署无需修改代码，实现了“研究即生产”（research-to-live parity），减少了通常因环境差异而引入的部署风险。\n\nNautilusTrader 对资产类别无依赖（asset-class-agnostic）。任何提供 REST API 或 WebSocket 数据流的交易场所均可通过模块化适配器（modular adapters）集成。当前已支持的集成包括加密货币交易所（中心化 CEX 和去中心化 DEX）、传统金融市场（外汇 FX、股票 equities、期货 futures、期权 options）以及博彩交易所（betting exchanges）。\n\n![nautilus-trader](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fnautilus-trader.png \"nautilus-trader\")\n\n## 功能特性\n\n- **高性能**：基于 Rust 核心，使用 [tokio](https:\u002F\u002Fcrates.io\u002Fcrates\u002Ftokio) 实现异步网络通信。\n- **高可靠**：由 Rust 提供类型安全（type-safety）和线程安全（thread-safety），并可选支持基于 Redis 的状态持久化。\n- **可移植**：支持 Linux、macOS 和 Windows，可通过 Docker 部署。\n- **高灵活**：模块化适配器可集成任意 REST API 或 WebSocket 数据源。\n- **功能强大**：支持多种有效时间类型（Time in force）如 `IOC`、`FOK`、`GTC`、`GTD`、`DAY`、`AT_THE_OPEN`、`AT_THE_CLOSE`，高级订单类型及条件触发；支持执行指令如 `post-only`、`reduce-only` 和冰山订单（icebergs）；支持关联订单（contingency orders），包括 `OCO`、`OUO`、`OTO`。\n- **高度可定制**：支持用户自定义组件，或利用[缓存（cache）](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcache)和[消息总线（message bus）](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fmessage_bus)从零构建完整系统。\n- **回测能力**：支持多交易场所、多金融工具（instruments）和多策略同时运行，使用历史报价 tick、成交 tick、K 线（bar）、订单簿（order book）及自定义数据，时间精度达纳秒级。\n- **实盘一致性**：研究与实盘部署使用完全相同的策略实现。\n- **多交易场所支持**：可同时在多个交易场所运行做市（market-making）和跨场所策略。\n- **AI 训练友好**：引擎速度足够快，可用于训练 AI 交易智能体（如强化学习 RL \u002F 进化策略 ES）。\n\n![nautilus](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fnautilus-art.png \"nautilus\")\n\n> *nautilus（鹦鹉螺）——源自古希腊语 'sailor'（水手）和 naus（船）。*\n>\n> *鹦鹉螺壳由多个模块化腔室组成，其生长因子近似对数螺旋。*\n> *这一理念可延伸至设计与建筑的美学之中。*\n\n## 为什么选择 NautilusTrader？\n\n交易策略研究通常使用 Python 并采用向量化（vectorized）方法进行，而生产环境的交易系统则通常使用编译型语言并基于事件驱动架构（event-driven architecture）单独实现。\n\nNautilusTrader 消除了这种割裂。\n\n其原生 Rust 核心为研究和实盘执行提供了一个确定性的事件驱动运行时（runtime），而 Python 则作为控制平面（control plane）。相同的架构、执行语义和时间模型在两种环境中一致运行，使得策略可以从研究阶段无缝迁移到生产环境，无需重新实现。\n\n项目通过 [PyO3](https:\u002F\u002Fpyo3.rs) 提供 Python 绑定，并正在从 Cython 迁移中。安装时无需 Rust 工具链。\n\n本项目作出 [Soundness Pledge（健全性承诺）](https:\u002F\u002Fraphlinus.github.io\u002Frust\u002F2020\u002F01\u002F18\u002Fsoundness-pledge.html)：\n\n> “本项目的意图是杜绝健全性（soundness）漏洞。  \n> 开发者将尽最大努力避免此类问题，并欢迎社区协助分析和修复。”\n\n> [!NOTE]\n>\n> **MSRV（最低支持 Rust 版本）**：NautilusTrader 严重依赖 Rust 语言和编译器的改进。  \n> 因此，最低支持 Rust 版本（Minimum Supported Rust Version, MSRV）通常等同于 Rust 的最新稳定版。\n\n## 集成\n\nNautilusTrader 采用模块化设计，通过 *适配器（adapters）* 实现与交易场所和数据提供商的连接，将它们原始的 API 转换为统一的接口和标准化的领域模型。\n\n目前支持以下集成；详情请参阅 [docs\u002Fintegrations\u002F](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fintegrations\u002F)：\n\n| 名称                                                                         | ID                    | 类型                    | 状态                                               | 文档                                       |\n| :--------------------------------------------------------------------------- | :-------------------- | :---------------------- | :----------------------------------------------------| :----------------------------------------- |\n| [AX Exchange](https:\u002F\u002Farchitect.exchange)                                    | `AX`                  | 永续合约交易所          | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbeta-yellow)  | [指南](docs\u002Fintegrations\u002Farchitect_ax.md) |\n| [Architect](https:\u002F\u002Farchitect.co)                                            | `ARCHITECT`           | 经纪商（多市场）        | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplanned-gray) | -                                          |\n| [Betfair](https:\u002F\u002Fbetfair.com)                                               | `BETFAIR`             | 体育博彩交易所          | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fbetfair.md)      |\n| [Binance](https:\u002F\u002Fbinance.com)                                               | `BINANCE`             | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fbinance.md)      |\n| [BitMEX](https:\u002F\u002Fwww.bitmex.com)                                             | `BITMEX`              | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fbitmex.md)       |\n| [Bybit](https:\u002F\u002Fwww.bybit.com)                                               | `BYBIT`               | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fbybit.md)        |\n| [Databento](https:\u002F\u002Fdatabento.com)                                           | `DATABENTO`           | 数据提供商              | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fdatabento.md)    |\n| [Deribit](https:\u002F\u002Fwww.deribit.com)                                           | `DERIBIT`             | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fderibit.md)      |\n| [dYdX](https:\u002F\u002Fdydx.exchange\u002F)                                               | `DYDX`                | 加密货币交易所（DEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fdydx.md)         |\n| [Hyperliquid](https:\u002F\u002Fhyperliquid.xyz)                                       | `HYPERLIQUID`         | 加密货币交易所（DEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fhyperliquid.md)  |\n| [Interactive Brokers](https:\u002F\u002Fwww.interactivebrokers.com)                    | `INTERACTIVE_BROKERS` | 经纪商（多市场）        | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fib.md)           |\n| [Kraken](https:\u002F\u002Fkraken.com)                                                 | `KRAKEN`              | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fkraken.md)       |\n| [OKX](https:\u002F\u002Fokx.com)                                                       | `OKX`                 | 加密货币交易所（CEX）   | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fokx.md)          |\n| [Polymarket](https:\u002F\u002Fpolymarket.com)                                         | `POLYMARKET`          | 预测市场（DEX）         | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Fpolymarket.md)   |\n| [Tardis](https:\u002F\u002Ftardis.dev)                                                 | `TARDIS`              | 加密货币数据提供商      | ![status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstable-green) | [指南](docs\u002Fintegrations\u002Ftardis.md)       |\n\n- **ID**：集成适配器客户端的默认客户端 ID。\n- **类型**：集成的类型（通常是交易场所类型）。\n\n### 状态说明\n\n- `planned`：计划在未来开发。\n- `building`：正在构建中，可能尚不可用。\n- `beta`：已达到最小可用状态，处于 Beta 测试阶段。\n- `stable`：功能集和 API 已稳定，该集成已由开发者和用户进行了合理程度的测试（仍可能存在一些 bug）。\n\n更多详情请参阅 [集成文档](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fintegrations\u002F)。\n\n## 路线图\n\n[路线图](\u002FROADMAP.md) 概述了 NautilusTrader 的战略方向。  \n当前重点包括完成原生 Rust 核心、改进文档以及提升代码易用性（ergonomics）。\n\n该开源项目聚焦于面向个人及小型量化交易团队的单节点回测与实盘交易。  \nUI 仪表盘、分布式编排（distributed orchestration）以及内置 AI\u002FML 工具不在项目范围内，以确保核心引擎和生态系统的可持续发展。\n\n新的集成提案应首先提交 RFC（Request for Comments）议题，讨论其适用性后再提交 PR。  \n相关指南请参阅 [社区贡献的集成](\u002FROADMAP.md#community-contributed-integrations)。\n\n## 版本与发布\n\n> [!WARNING]\n>\n> **NautilusTrader 仍处于积极开发阶段**。某些功能可能尚未完成，尽管 API 正在趋于稳定，但在不同版本之间仍可能发生破坏性变更（breaking changes）。\n> 我们会尽最大努力（**best-effort basis**）在发布说明中记录这些变更。\n\n我们目标是遵循**每两周一次的发布节奏**，但实验性或较大的功能可能会导致延迟。\n\n### 分支\n\n我们力求在所有分支上保持构建稳定并通过测试。\n\n- `master`：反映最新已发布版本的源代码；推荐用于生产环境。\n- `nightly`：每日从 `develop` 分支生成的快照，用于早期测试；每天 **14:00 UTC** 合并，必要时也会额外合并。\n- `develop`：活跃的开发分支，供贡献者进行功能开发。\n\n> [!NOTE]\n>\n> 我们的 [路线图](\u002FROADMAP.md) 目标是在 **2.x 版本实现稳定的 API**（很可能在完成 Rust 移植之后）。\n> 达成该里程碑后，我们将为任何 API 变更实施正式的弃用流程（deprecation process）。\n> 当前这种做法使我们能够保持快速的开发节奏。\n\n## 精度模式\n\nNautilusTrader 为其核心数值类型（`Price`、`Quantity`、`Money`）支持两种精度模式，它们在内部位宽和最大小数精度方面有所不同。\n\n- **高精度（High-precision）**：使用 128 位整数，最多支持 16 位小数，且数值范围更大。\n- **标准精度（Standard-precision）**：使用 64 位整数，最多支持 9 位小数，数值范围较小。\n\n> [!NOTE]\n>\n> 默认情况下，官方提供的 Python wheel 在 Linux 和 macOS 上以高精度（128 位）模式发布。\n> 在 Windows 上，仅提供标准精度（64 位）的 Python wheel，因为 MSVC 的 C\u002FC++ 前端不支持 `__int128`，导致 Cython\u002FFFI 层无法处理 128 位整数。\n>\n> 对于纯 Rust crate，高精度模式可在所有平台（包括 Windows）上正常工作，因为 Rust 通过软件模拟支持 `i128`\u002F`u128`。除非显式启用 `high-precision` 功能标志（feature flag），否则默认使用标准精度。\n\n更多详情请参阅 [安装指南](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation)。\n\n**Rust 功能标志**：要在 Rust 中启用高精度模式，请在 Cargo.toml 中添加 `high-precision` 功能：\n\n```toml\n[dependencies]\nnautilus_model = { version = \"*\", features = [\"high-precision\"] }\n```\n\n## 安装\n\n我们建议使用最新受支持的 Python 版本，并在虚拟环境中安装 [nautilus_trader](https:\u002F\u002Fpypi.org\u002Fproject\u002Fnautilus_trader\u002F) 以隔离依赖项。\n\n**支持以下两种安装方式**：\n\n1. 从 PyPI 或 Nautech Systems 软件包索引安装预编译的二进制 wheel。\n2. 从源码构建。\n\n> [!TIP]\n>\n> 我们强烈推荐使用 [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv) 包管理器配合“原生”CPython 进行安装。\n>\n> Conda 和其他 Python 发行版*可能*可以工作，但未被官方支持。\n\n### 从 PyPI 安装\n\n使用 Python 的 pip 包管理器从 PyPI 安装最新的二进制 wheel（或 sdist 包）：\n\n```bash\npip install -U nautilus_trader\n```\n\n可通过“extras”安装可选依赖项以支持特定集成（例如 `betfair`、`docker`、`dydx`、`ib`、`polymarket`、`visualization`）：\n\n```bash\npip install -U \"nautilus_trader[docker,ib]\"\n```\n\n完整的 extras 列表请参阅 [安装指南](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation#extras)。\n\n### 来自 Nautech Systems 软件包索引\n\nNautech Systems 软件包索引（`packages.nautechsystems.io`）符合 [PEP-503](https:\u002F\u002Fpeps.python.org\u002Fpep-0503\u002F) 规范，托管了 `nautilus_trader` 的稳定版和开发版二进制 wheel 包。  \n这使得用户可以安装最新稳定版本或用于测试的预发布版本。\n\n#### 稳定版 wheel 包\n\n稳定版 wheel 包对应于 PyPI 上 `nautilus_trader` 的官方发布版本，并使用标准版本号。\n\n安装最新稳定版：\n\n```bash\npip install -U nautilus_trader --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\n> [!TIP]\n>\n> 如果希望 pip 在找不到包时自动回退到 PyPI，请使用 `--extra-index-url` 而非 `--index-url`。\n\n#### 开发版 wheel 包\n\n开发版 wheel 包从 `nightly` 和 `develop` 分支发布，  \n允许用户在稳定版本发布前测试新功能和修复。\n\n该流程还有助于节省计算资源，并提供对 CI（持续集成）流水线中所测试的精确二进制文件的便捷访问，  \n同时遵循 [PEP-440](https:\u002F\u002Fpeps.python.org\u002Fpep-0440\u002F) 版本规范：\n\n- `develop` 分支的 wheel 使用版本格式 `dev{日期}+{构建编号}`（例如：`1.208.0.dev20241212+7001`）。\n- `nightly` 分支的 wheel 使用版本格式 `a{日期}`（alpha，例如：`1.208.0a20241212`）。\n\n| 平台                | Nightly | Develop |\n| :------------------ | :------ | :------ |\n| `Linux (x86_64)`    | ✓       | ✓       |\n| `Linux (ARM64)`     | ✓       | -       |\n| `macOS (ARM64)`     | ✓       | -       |\n| `Windows (x86_64)`  | ✓       | ✓       |\n\n**注意**：`develop` 分支的开发版 wheel 仅针对 Linux x86_64 和 Windows 发布。  \nmacOS 和 Linux ARM64 的构建安排在 nightly（每日）计划中运行，以保持 CI 反馈速度。\n\n> [!WARNING]\n>\n> 我们不建议在生产环境（例如控制真实资金的实盘交易）中使用开发版 wheel 包。\n\n#### 安装命令\n\n默认情况下，pip 会安装最新的稳定版本。添加 `--pre` 标志可确保 pip 考虑预发布版本（包括开发版 wheel）。\n\n安装最新的可用预发布版本（含开发版 wheel）：\n\n```bash\npip install -U nautilus_trader --pre --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\n安装特定的开发版 wheel（例如 `1.221.0a20251026` 表示 2025 年 10 月 26 日的版本）：\n\n```bash\npip install nautilus_trader==1.221.0a20251026 --index-url=https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\n```\n\n#### 可用版本\n\n你可以在 [软件包索引](https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html) 页面查看所有可用的 `nautilus_trader` 版本。\n\n通过命令行程序化获取并列出所有可用版本：\n\n```bash\ncurl -s https:\u002F\u002Fpackages.nautechsystems.io\u002Fsimple\u002Fnautilus-trader\u002Findex.html | sed -n 's\u002F.*\u003Ca href=\"\\([^\"]*\\)\".*\u002F\\1\u002Fp' | awk -F'#' '{print $1}' | sort\n```\n\n> [!NOTE]\n>\n> 在 Linux 上，请使用 `ldd --version` 确认你的 glibc 版本，并确保其为 **2.35** 或更新版本，然后再安装二进制 wheel 包。\n\n#### 分支更新策略\n\n- `develop` 分支 wheel（`.dev`）：每次合并提交后持续构建并发布。\n- `nightly` 分支 wheel（`a`）：每天在 **UTC 14:00** 自动将 `develop` 分支合并后构建并发布（若有变更）。\n\n#### 保留策略\n\n- `develop` 分支 wheel（`.dev`）：仅保留最近一次构建的 wheel。\n- `nightly` 分支 wheel（`a`）：仅保留最近 30 次构建的 wheel。\n\n#### 验证构建来源\n\n所有发布到 PyPI、GitHub Releases 以及 Nautech Systems 软件包索引的发布产物（wheel 和源码分发包）均包含加密证明（cryptographic attestations），用于验证其真实性与构建来源。\n\n这些证明由 CI\u002FCD 流水线使用 [SLSA](https:\u002F\u002Fslsa.dev\u002F) 构建来源标准自动生成，可用于验证：\n\n- 该产物由官方的 NautilusTrader GitHub Actions 工作流构建。\n- 该产物对应仓库中的特定 commit SHA。\n- 自构建完成后，该产物未被篡改。\n\n使用 GitHub CLI 验证 wheel 文件：\n\n```bash\ngh attestation verify nautilus_trader-1.220.0-*.whl --owner nautechsystems\n```\n\n这提供了软件供应链安全保障，使你可以通过密码学方式验证所安装的包确实来自官方的 NautilusTrader 构建流程。\n\n> [!NOTE]\n>\n> 验证证明需要安装 [GitHub CLI](https:\u002F\u002Fcli.github.com\u002F)（`gh`）。  \n> 来自 `develop` 和 `nightly` 分支的开发版 wheel 同样附带证明，也可用相同方式验证。\n\n### 从源码安装\n\n如果你先安装了 `pyproject.toml` 中指定的构建依赖项，就可以使用 pip 从源码进行安装。\n\n1. 安装 [rustup](https:\u002F\u002Frustup.rs\u002F)（Rust 工具链安装器）：\n   - Linux 和 macOS：\n\n       ```bash\n       curl https:\u002F\u002Fsh.rustup.rs -sSf | sh\n       ```\n\n   - Windows：\n       - 下载并安装 [`rustup-init.exe`](https:\u002F\u002Fwin.rustup.rs\u002Fx86_64)\n       - 使用 [Visual Studio 2022 生成工具](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F) 安装 “C++ 桌面开发” 工作负载\n   - 验证（任意系统）：\n       在终端中运行：`rustc --version`\n\n2. 在当前 shell 中启用 `cargo`：\n   - Linux 和 macOS：\n\n       ```bash\n       source $HOME\u002F.cargo\u002Fenv\n       ```\n\n   - Windows：\n     - 启动一个新的 PowerShell\n\n3. 安装 [clang](https:\u002F\u002Fclang.llvm.org\u002F)（LLVM 的 C 语言前端）：\n   - Linux：\n\n       ```bash\n       sudo apt-get install clang\n       ```\n\n   - macOS：\n\n       ```bash\n       xcode-select --install\n       ```\n\n   - Windows：\n       1. 将 Clang 添加到你的 [Visual Studio 2022 生成工具](https:\u002F\u002Fvisualstudio.microsoft.com\u002Fvisual-cpp-build-tools\u002F) 中：\n          - 开始菜单 | Visual Studio Installer | 修改 | 勾选 “适用于 Windows 的 C++ Clang 工具（最新版）” | 修改\n       2. 在当前 shell 中启用 `clang`：\n\n          ```powershell\n          [System.Environment]::SetEnvironmentVariable('path', \"C:\\Program Files\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\Llvm\\x64\\bin\\;\" + $env:Path,\"User\")\n          ```\n\n   - 验证（任意系统）：\n       在终端中运行：`clang --version`\n\n4. 安装 uv（更多详情请参阅 [uv 安装指南](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fgetting-started\u002Finstallation)）：\n\n    - Linux 和 macOS：\n\n        ```bash\n        curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n        ```\n\n    - Windows（PowerShell）：\n\n        ```powershell\n        irm https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.ps1 | iex\n        ```\n\n5. 使用 `git` 克隆源码，并在项目根目录下进行安装：\n\n    ```bash\n    git clone --branch develop --depth 1 https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\n    cd nautilus_trader\n    uv sync --all-extras\n    ```\n\n> [!NOTE]\n>\n> `--depth 1` 标志仅获取最新提交，以实现更快、更轻量的克隆。\n\n6. 为 PyO3 编译设置环境变量（仅限 Linux 和 macOS）：\n\n    ```bash\n    # 仅限 Linux：设置 Python 解释器的库路径\n    export LD_LIBRARY_PATH=\"$(python -c 'import sys; print(sys.base_prefix)')\u002Flib:$LD_LIBRARY_PATH\"\n\n    # 为 PyO3 设置 Python 可执行文件路径\n    export PYO3_PYTHON=$(pwd)\u002F.venv\u002Fbin\u002Fpython\n\n    # 当使用 uv 安装的 Python 时，运行 Rust 测试所必需\n    export PYTHONHOME=$(python -c \"import sys; print(sys.base_prefix)\")\n    ```\n\n> [!NOTE]\n>\n> `LD_LIBRARY_PATH` 的设置仅适用于 Linux，在 macOS 上不需要。\n>\n> 当使用 `uv` 安装的 Python 运行 `make cargo-test` 时，需要设置 `PYTHONHOME` 环境变量。\n> 否则，依赖 PyO3 的测试可能无法找到 Python 运行时。\n\n其他选项和详细信息请参阅 [安装指南](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation)。\n\n## Redis\n\n在 NautilusTrader 中使用 [Redis](https:\u002F\u002Fredis.io) 是**可选的**，仅当你将其配置为 [缓存](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcache) 数据库或 [消息总线](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fconcepts\u002Fmessage_bus) 的后端时才需要。更多详情请参阅 [安装指南](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fgetting_started\u002Finstallation#redis) 中的 **Redis** 部分。\n\n## Makefile\n\n项目提供了一个 `Makefile`，用于自动化大部分开发相关的安装和构建任务。部分目标包括：\n\n- `make install`：以 `release` 模式安装，包含所有依赖组和额外功能。\n- `make install-debug`：与 `make install` 相同，但使用 `debug` 构建模式。\n- `make install-just-deps`：仅安装 `main`、`dev` 和 `test` 依赖（不安装本包）。\n- `make build`：以 `release` 模式运行构建脚本（默认）。\n- `make build-debug`：以 `debug` 模式运行构建脚本。\n- `make build-wheel`：在 `release` 模式下使用 uv 构建 wheel 格式的包。\n- `make build-wheel-debug`：在 `debug` 模式下使用 uv 构建 wheel 格式的包。\n- `make cargo-test`：使用 `cargo-nextest` 运行所有 Rust crate 的测试。\n- `make clean`：删除所有构建产物，例如 `.so` 或 `.dll` 文件。\n- `make distclean`：**注意** 删除仓库中所有不在 git 索引中的文件。这包括尚未执行 `git add` 的源文件。\n- `make docs`：使用 Sphinx 构建 HTML 文档。\n- `make pre-commit`：对所有文件运行 pre-commit 检查。\n- `make ruff`：使用 `pyproject.toml` 配置对所有文件运行 ruff（自动修复）。\n- `make pytest`：使用 `pytest` 运行所有测试。\n- `make test-performance`：使用 [codspeed](https:\u002F\u002Fcodspeed.io) 运行性能测试。\n\n> [!TIP]\n>\n> 运行 `make help` 可查看所有可用 make 目标的文档。\n\n> [!TIP]\n>\n> 关于运行基础设施集成测试，请参阅 [crates\u002Finfrastructure\u002FTESTS.md](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002Fcrates\u002Finfrastructure\u002FTESTS.md) 文件。\n\n## 示例\n\n指标（Indicators）和策略（Strategies）可以用 Python、Cython 或 Rust 开发。对于性能和延迟敏感的应用，我们推荐使用 Rust。以下是一些示例：\n\n- 用 Python 编写的 [指标](\u002Fnautilus_trader\u002Fexamples\u002Findicators\u002Fema_python.py) 示例。\n- 用 Cython 实现的 [指标](\u002Fnautilus_trader\u002Findicators\u002F)。\n- 用 Python 编写的 [策略](\u002Fnautilus_trader\u002Fexamples\u002Fstrategies\u002F) 示例。\n- 直接使用 `BacktestEngine` 的 [回测](\u002Fexamples\u002Fbacktest\u002F) 示例。\n\n## Docker\n\nDocker 镜像使用以下变体标签构建：\n\n- `nautilus_trader:latest` 安装了最新的正式发布版本。\n- `nautilus_trader:nightly` 安装了 `nightly` 分支的最新提交。\n- `jupyterlab:latest` 安装了最新的正式发布版本，并附带 `jupyterlab` 和一个包含示例数据的回测 notebook。\n- `jupyterlab:nightly` 安装了 `nightly` 分支的最新提交，并附带 `jupyterlab` 和一个包含示例数据的回测 notebook。\n\n你可以按如下方式拉取容器镜像：\n\n```bash\ndocker pull ghcr.io\u002Fnautechsystems\u002F\u003Cimage_variant_tag> --platform linux\u002Famd64\n```\n\n你可以通过以下命令启动回测示例容器：\n\n```bash\ndocker pull ghcr.io\u002Fnautechsystems\u002Fjupyterlab:nightly --platform linux\u002Famd64\ndocker run -p 8888:8888 ghcr.io\u002Fnautechsystems\u002Fjupyterlab:nightly\n```\n\n然后在浏览器中打开以下地址：\n\n```bash\nhttp:\u002F\u002F127.0.0.1:8888\u002Flab\n```\n\n> [!WARNING]\n>\n> 示例中使用了 `log_level=\"ERROR\"`，因为 Nautilus 的日志输出会超过 Jupyter 的 stdout 速率限制，\n> 导致在较低日志级别下 notebook 卡住。\n\n## 开发\n\n我们致力于为这个由 Rust、Python 和 Cython 组成的混合代码库提供尽可能愉悦的开发者体验。  \n请参阅 [开发者指南](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Flatest\u002Fdeveloper_guide\u002F) 获取有用的信息。\n\n> [!TIP]\n>\n> 为了获得最高效的开发工作流，在修改 Rust 或 Cython 代码后，请运行 `make build-debug` 进行编译。\n\n### 使用 Rust 进行测试\n\n[cargo-nextest](https:\u002F\u002Fnexte.st) 是 NautilusTrader 的标准 Rust 测试运行器。  \n其主要优势在于将每个测试隔离在独立的进程中运行，从而避免测试之间的相互干扰，确保测试的可靠性。\n\n你可以通过以下命令安装 cargo-nextest：\n\n```bash\ncargo install cargo-nextest\n```\n\n> [!TIP]\n>\n> 使用 `make cargo-test` 运行 Rust 测试，该命令会使用 **cargo-nextest** 并搭配一个高效配置文件。\n\n## 贡献\n\n感谢您考虑为 NautilusTrader 做出贡献！我们欢迎任何形式的帮助来改进本项目。  \n如果您有功能增强或错误修复的想法，第一步是在 GitHub 上提交一个 [issue](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues)，与团队进行讨论。这有助于确保您的贡献与项目目标保持一致，并避免重复劳动。\n\n开始之前，请务必查阅项目路线图中概述的 [开源范围](\u002FROADMAP.md#open-source-scope)，以了解哪些内容属于项目范畴，哪些不属于。\n\n当您准备好开始贡献时，请遵循 [CONTRIBUTING.md](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002FCONTRIBUTING.md) 文件中列出的指南。其中包括签署一份贡献者许可协议（Contributor License Agreement, CLA），以确保您的贡献可以被纳入项目。\n\n> [!NOTE]\n>\n> Pull Request 应提交至 `develop` 分支（默认分支）。新功能和改进将在该分支集成，之后才会发布。\n\n再次感谢您对 NautilusTrader 的关注！我们期待审阅您的贡献，并与您携手共同改进项目。\n\n## 社区\n\n加入我们在 [Discord](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader) 上的用户与贡献者社区，与其他成员交流，并及时获取 NautilusTrader 的最新公告和功能更新。无论您是希望参与开发的开发者，还是只想进一步了解该平台，我们都欢迎您加入我们的 Discord 服务器。\n\n> [!WARNING]\n>\n> NautilusTrader 不发行、推广或背书任何加密货币代币。任何暗示与此相反的声明或通信均属未经授权且虚假的信息。\n>\n> NautilusTrader 的所有官方更新和通信将仅通过以下渠道发布：\u003Chttps:\u002F\u002Fnautilustrader.io>、我们的 [GitHub](https:\u002F\u002Fgithub.com\u002Fnautechsystems)、我们的 [Discord 服务器](https:\u002F\u002Fdiscord.gg\u002FNautilusTrader)，或我们经过验证的 X（Twitter）账号：[@NautilusTrader](https:\u002F\u002Fx.com\u002FNautilusTrader)。\n>\n> 如果您遇到任何可疑活动，请向相关平台举报，并通过 \u003Cinfo@nautechsystems.io> 与我们联系。\n\n## 安全\n\n如需报告安全漏洞，请参阅我们的 [安全策略](SECURITY.md)。  \n有关包括软件供应链安全在内的完整安全策略，请访问 \u003Chttps:\u002F\u002Fnautilustrader.io\u002Fsecurity\u002F>。\n\n## 许可证\n\nNautilusTrader 的源代码在 GitHub 上以 [GNU 宽通用公共许可证 v3.0（GNU Lesser General Public License v3.0）](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Flgpl-3.0.en.html) 发布。  \n我们欢迎对项目的贡献，但需要完成标准的 [贡献者许可协议（Contributor License Agreement, CLA）](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002FCLA.md)。\n\n---\n\nNautilusTrader™ 由 Nautech Systems 开发和维护，该公司是一家专注于高性能交易系统开发的技术公司。  \n更多信息请访问 \u003Chttps:\u002F\u002Fnautilustrader.io>。\n\n使用本软件需遵守 [免责声明](https:\u002F\u002Fnautilustrader.io\u002Flegal\u002Fdisclaimer\u002F)。\n\n© 2015-2026 Nautech Systems Pty Ltd. 保留所有权利。\n\n![nautechsystems](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fraw\u002Fdevelop\u002Fassets\u002Fns-logo.png \"nautechsystems\")\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_readme_5fb1fd35b48b.png\" width=\"128\">","# NautilusTrader 快速上手指南\n\n## 环境准备\n\n- **操作系统**：Linux (x86_64\u002FARM64)、macOS (ARM64)、Windows (x86_64)\n- **Python 版本**：3.12 - 3.14（推荐使用最新稳定版）\n- **Rust 版本**：无需手动安装，安装包已预编译（但若需从源码构建，则需 Rust 1.94.1 或更高）\n\n> 💡 提示：国内用户建议配置 PyPI 镜像源（如清华源）以加速安装。\n\n## 安装步骤\n\n### 1. 创建虚拟环境（推荐）\n\n```bash\npython -m venv nt-env\nsource nt-env\u002Fbin\u002Factivate  # Linux\u002FmacOS\n# nt-env\\Scripts\\activate   # Windows\n```\n\n### 2. 安装 NautilusTrader\n\n使用 PyPI 官方源：\n\n```bash\npip install nautilus_trader\n```\n\n或使用国内镜像加速（例如清华源）：\n\n```bash\npip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple nautilus_trader\n```\n\n> ✅ 安装过程无需 Rust 工具链，官方提供预编译 wheel 包。\n\n## 基本使用\n\n以下是一个最简示例：创建一个模拟交易环境并打印系统信息。\n\n```python\nfrom nautilus_trader.backtest.engine import BacktestEngine\nfrom nautilus_trader.model.identifiers import Venue\n\n# 初始化回测引擎\nengine = BacktestEngine()\n\n# 添加交易所（例如 BINANCE）\nengine.add_venue(\n    venue=Venue(\"BINANCE\"),\n    oms_type=\"NETTING\",\n    account_type=\"CASH\",\n    base_currency=\"USDT\",\n    starting_balances=[\"10000 USDT\"],\n)\n\nprint(\"NautilusTrader 已成功初始化！\")\n```\n\n运行该脚本：\n\n```bash\npython example.py\n```\n\n如无报错并输出提示信息，说明环境已正确配置。\n\n> 📚 更多示例和详细文档请访问：[https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002F](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002F)","一家量化私募团队正在开发一套跨市场套利策略，需同时对接加密货币交易所和传统期货市场，对系统稳定性、执行速度和回测真实性要求极高。\n\n### 没有 nautilus_trader 时\n- 团队用 Python 自研交易框架，回测与实盘逻辑不一致，经常出现“回测盈利、实盘亏损”的偏差。\n- 多交易所订单管理混乱，缺乏统一的事件驱动架构，订单状态同步延迟高，易造成重复下单或漏单。\n- 系统性能瓶颈明显，在高频行情下 CPU 占用飙升，难以支撑低延迟策略。\n- 缺乏确定性仿真能力，无法精确复现历史场景进行策略调试。\n- Rust 或 C++ 编写的高性能模块与 Python 策略层耦合复杂，维护成本高。\n\n### 使用 nautilus_trader 后\n- 借助其确定性事件驱动架构，回测、仿真与实盘共用同一套核心逻辑，彻底消除策略表现差异。\n- 内置多资产、多交易所适配器，统一订单生命周期管理，确保跨市场指令精准同步。\n- 核心引擎基于 Rust 编写，吞吐量高、延迟低，轻松应对毫秒级行情处理需求。\n- 支持基于真实行情数据的确定性回放仿真，便于复现极端市场条件下的策略行为。\n- Python 作为控制平面专注策略编写，底层由 nautilus_trader 高效执行，开发与运维效率显著提升。\n\nnautilus_trader 以生产级可靠性打通了从研究到实盘的全链路，让量化团队专注策略本身而非基础设施。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnautechsystems_nautilus_trader_e4a594cb.png","nautechsystems","Nautech Systems","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fnautechsystems_e3ebeff7.png","next-generation algorithmic trading technologies",null,"info@nautechsystems.io","NautilusTrader","https:\u002F\u002Fnautilustrader.io","https:\u002F\u002Fgithub.com\u002Fnautechsystems",[85,89,93,97,101,105,109,112,116],{"name":86,"color":87,"percentage":88},"Rust","#dea584",64.1,{"name":90,"color":91,"percentage":92},"Python","#3572A5",27.5,{"name":94,"color":95,"percentage":96},"Cython","#fedf5b",7.7,{"name":98,"color":99,"percentage":100},"Shell","#89e051",0.3,{"name":102,"color":103,"percentage":104},"C","#555555",0.2,{"name":106,"color":107,"percentage":108},"Cap'n Proto","#c42727",0.1,{"name":110,"color":111,"percentage":108},"Makefile","#427819",{"name":113,"color":114,"percentage":115},"PLpgSQL","#336790",0,{"name":117,"color":118,"percentage":115},"Dockerfile","#384d54",21659,2593,"2026-04-05T10:09:22","LGPL-3.0","Linux, macOS, Windows","未说明",{"notes":126,"python":127,"dependencies":128},"需要 Rust 1.94.1 或更高版本（但安装时无需 Rust 工具链）；支持 Docker 部署；项目使用 PyO3 提供 Python 绑定，正在从 Cython 迁移中。","3.12-3.14",[],[13],[131,132,133,134,135,136,137,138,139,140,141,142,143],"algorithmic-trading-engine","trading-platform","crypto-trading","artificial-intelligence","machine-learning","trading","python","equity-trading","forex","futures-trading","sports-betting","rust","options-trading",47,"2026-03-27T02:49:30.150509","2026-04-06T05:37:39.459390",[148,153,158,163,167,171],{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},1574,"Nautilus Trader 是否支持 Windows？如何在 Windows 上构建和运行？","Nautilus Trader 已基本完成对 Windows 的支持。Windows 用户需安装 Microsoft Visual C++ 14.0（含 rc.exe）以编译 Cython 生成的 .c 文件。推荐使用 WSL2 + Ubuntu 运行 Redis，并在 Windows 上构建修正后的版本（NTV_CORR_Windows）。构建时可能会遇到 NumPy API 警告，但可暂时忽略，直到新版 Cython 修复。使用 pip install . 安装时若遇警告（如 scheme.headers 不匹配），建议更新至最新 develop 分支。","https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues\u002F257",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},1575,"如何将 CSV 数据导入 Nautilus Trader 的 DataCatalog 并保存为 Parquet 文件？","当前文档可能已过时。正确做法是：设置环境变量 NAUTILUS_CATALOG（而非 NAUTILUS_BACKTEST_DIR）指向数据目录；使用 CSVBarDataLoader 加载数据后，调用 write_parquet 方法并传入对应 schema（schema 可通过 nautilus_trader.persistence.catalog.parquet 模块中的 Bar 或 Quote 类型获取）。也可使用 process_files 函数配合 CSVReader，但需提供 block_parser 参数，该参数通常由具体数据类型（如 Bar）的解析函数实现。","https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues\u002F532",{"id":159,"question_zh":160,"answer_zh":161,"source_url":162},1576,"Nautilus Trader 是否集成 CCXT？如何实现交易所连接？","项目计划通过 adapters\u002Fccxt 模块集成 CCXT。需要实现 DataClient 和 ExecClient 接口。架构设计要求所有实时数据流运行在同一事件循环中，因此像 cryptofeed 这类自带事件循环的库需改造。目前已有基于 cryptofeed + ZeroMQ 的工作示例：通过 FeedHandler 订阅行情，用 ZMQ 发布数据，再由 Nautilus 接收处理。未来会统一网络层抽象以支持 HTTP\u002F2 和 WebSocket。","https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues\u002F39",{"id":164,"question_zh":165,"answer_zh":166,"source_url":152},1577,"在 Windows 上使用 pip install . 安装时出现 'scheme.headers does not match' 警告怎么办？","该警告源于 pip 与 distutils\u002Fsysconfig 路径不一致，通常不影响安装。建议升级到最新 develop 分支，因为维护者已修复相关构建问题。若仍存在问题，可尝试使用 --use-feature=in-tree-build 参数测试新行为，或检查 Python 环境是否损坏（如无效的 matplotlib 分发包）。",{"id":168,"question_zh":169,"answer_zh":170,"source_url":157},1578,"回测时如何处理仅包含 K 线（Bar）数据的执行？","Nautilus Trader 已在 develop 分支实现“仅 K 线执行”功能。系统会在内部自动将 Bar 数据转换为 TradeTick，并传入交易所订单簿进行撮合。用户无需手动创建 Tick 数据，直接使用 Bar 数据回测即可触发该机制。",{"id":172,"question_zh":173,"answer_zh":174,"source_url":152},1579,"构建时遇到 'Using deprecated NumPy API' 警告该如何处理？","该警告由 Cython 使用旧版 NumPy API 引起。维护者已移除 NPY_NO_DEPRECATED_API 宏以兼容 PEP-517 构建。目前可安全忽略此警告，待新版 Cython 发布后将彻底解决。",[176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266,271],{"id":177,"version":178,"summary_zh":179,"released_at":180},101075,"v1.224.0","# NautilusTrader 1.224.0 Beta\n\nReleased on 3rd March 2026 (UTC).\n\n### Enhancements\n- Added matching engine L1 quote-based queue position tracking for backtests\n- Added `fill_limit_inside_spread` to `FillModel` and `MatchingCore` for at-or-inside-spread limit fill control\n- Added synthetic book support for binary markets (#3495), thanks @Javdu10\n- Added `get_target_px_for_quantity` method on `OrderBook` (#3627), thanks @Javdu10\n- Added Betfair batch submit and cancel order support\n- Added BitMEX dead man's switch (cancelAllAfter) support (Rust and Python)\n- Added BitMEX grid market maker example (Rust)\n- Added BitMEX instrument status subscription support (Rust and Python)\n- Added Bybit book snapshot and funding rate request support (Rust)\n- Added Databento `skip_on_error` flag for `load_instruments` to skip unparsable definitions (#3657), thanks for reporting @davidsblom\n- Added Deribit instrument status subscription support (Rust and Python)\n- Added dYdX instrument status subscription support (Rust and Python)\n- Added Hyperliquid order modify support (Rust and Python)\n- Added OKX trailing stop market order support (Rust and Python)\n- Added OKX algo order amend support (Rust and Python)\n- Added OKX instrument status updates from WebSocket instruments channel (Rust)\n- Added OKX index price subscriptions with base-pair remapping to derivatives (Rust)\n- Added OKX book snapshot and funding rate request support (Rust)\n- Removed Hyperliquid builder fee charges (builder-fee approval no longer required)\n\n### Breaking Changes\n- Removed Coinbase International (`COINBASE_INTX`) adapter, see RFC (#3555)\n- Removed Binance `BINANCE_ED25519_*` env vars for Spot\u002FMargin (use `BINANCE_API_KEY`\u002F`BINANCE_API_SECRET`; Futures deprecated with warning)\n- Removed Hyperliquid `builder_fee_refresh_mins` config option (builder fees no longer charged)\n- Removed Polymarket `fetch_orderbook_history`, `load_orderbook_snapshots`, `fetch_price_history` and related methods (endpoints decommissioned, #3635)\n\n### Security\n- Added `pip-audit` to security audit pipeline\n- Added Docker image cosign signing and SBOM generation\n- Standardized credential zeroization across all adapters (`Ustr` replaced with `Box\u003Cstr>` for API keys)\n- Standardized secret redaction in `Debug` impls across all adapter credentials\n- Updated `SECURITY.md` with expanded scope, reporting guidelines, and responsible disclosure policy\n- Bumped all eligible GitHub Actions pinned SHAs to latest versions (2-week release policy)\n\n### Fixes\n- Fixed matching engine applying order book deltas for L1 books (#3615), thanks @maksym-mikheienko\n- Fixed streaming backtest producing dummy bars past batch data exhaustion (#3628), thanks for reporting @cauta\n- Fixed `OrderEmulator` trailing stop activation ignoring `LAST_PRICE` trigger type (#3629), thanks for reporting @HaakonFlaaronning\n- Fixed `LiveExecEngine` position reconciliation infinite loop when venue reports flat (#3622), thanks for reporting @mrbaron3\n- Fixed `CryptoOption` instrument pyo3 transform for (#3626), thanks @davidsblom\n- Fixed `StreamingFeatherWriter` duplicate events from multiple message bus topics (#3625), thanks for reporting @fomotoshi\n- Fixed `VolumeImbalanceBarAggregator` and `VolumeRunsBarAggregator` integer overflow for step >= 923 in high-precision mode (#3658), thanks for reporting @honvl\n- Fixed `InstrumentProvider` `load_ids_async` loading all instruments instead of filtering to requested IDs (affected dYdX, Kraken, AX, Hyperliquid)\n- Fixed Python WS callbacks running off asyncio event-loop thread in Rust adapters (#3653), thanks for reporting @camilorodegheri\n- Fixed Binance Futures algo order serde field renames for WS and HTTP parsing (#3624), thanks for reporting @qu1zzyboy\n- Fixed Binance silent HMAC fallback when using encrypted Ed25519 PEM keys (now warns)\n- Fixed BinanceSymbol COIN-M perpetual symbol conversion (#3641), thanks @YeeTsai\n- Fixed Binance algo order cancellation parsing (#3646), thanks @qu1zzyboy\n- Fixed Binance Spot testnet WebSocket API URL (#3661), thanks @penguinwokrs\n- Fixed Hyperliquid stop\u002Ftrigger order price derivation (#3611), thanks for reporting @h-tsun3\n- Fixed Hyperliquid price normalization and inner error detection (#3612), thanks for reporting @h-tsun3\n- Fixed Interactive Brokers BarType\u002Fstr comparison in get_historical_bars (#3616), thanks @powerseed\n- Fixed Interactive Brokers historical bar processing crash (#3619), thanks @shzhng\n- Fixed Interactive Brokers contract details parsing (#3638), thanks @davidsblom\n- Fixed Kraken Spot and Futures execution clients not loading instruments during connect (#3644), thanks for reporting @husariancom\n- Fixed Kraken Spot execution client HTTP client created without credentials (#3650), thanks for reporting @husariancom\n- Fixed Kraken sequential `ClientOrderId` exceeding `cl_ord_id` 18-char free-text limit (#3651), thanks for reporting @husariancom\n- Fixed Kraken missing account state registration during connect (#3652), thank","2026-03-03T07:48:59",{"id":182,"version":183,"summary_zh":184,"released_at":185},101076,"v1.223.0","# NautilusTrader 1.223.0 Beta\r\n\r\nReleased on 21st February 2026 (UTC).\r\n\r\n### Enhancements\r\n- Added `bulk_read_batch_size` option to `CacheConfig` for batched Redis bulk reads, thanks @shzhng\r\n- Added sandbox execution adapter in Rust\r\n- Added multi-account execution support (#3194), thanks @faysou\r\n- Added Nasdaq ITCH 5.0 parser\r\n- Added grid market maker example strategy in Rust\r\n- Added `OrderBookDeltas` historical request support (#3438), thanks @faysou\r\n- Added `market_exit()` method for `Strategy` with configurable `market_exit_time_in_force` and `market_exit_reduce_only` options (supports venues requiring IOC for market orders)\r\n- Added `manage_stop` config option to `StrategyConfig` for automatic market exit on stop\r\n- Added matching engine `queue_position` tracking heuristic for backtests\r\n- Added matching engine trade consumption seeding for L2\u002FL3 book backtests\r\n- Added tracing subscriber for external Rust library logs (`use_tracing=True` in `LoggingConfig`, filter with `RUST_LOG` env var)\r\n- Added `use_market_order_acks` venue config option to generate `OrderAccepted` events for market orders before filling (mimics behavior of venues like Binance)\r\n- Added `oto_trigger_mode` venue config option to control whether OTO child orders activate on partial fills (PARTIAL) or only after full fill (FULL) (default PARTIAL) (#3454), thanks @godnight10061\r\n- Added `request_funding_rates` and `FundingRateUpdate` Arrow serialization (#3467), thanks @dxwil\r\n- Added `optimize_file_loading` as BacktestDataConfig parameter (#3518), thanks @faysou\r\n- Added `bulk_read_batch_size` option to `CacheConfig` for batched Redis bulk reads (#3535), thanks @shzhng\r\n- Added `PerpetualContract` instrument for asset-class agnostic perpetual swaps\r\n- Added Ichimoku Cloud indicator (#3552), thanks @faysou\r\n- Added Betfair RCM parsing for TPD race data\r\n- Added Betfair race stream subscription via `subscribe_race_data` config\r\n- Added Betfair market version price protection for orders\r\n- Added Betfair `BetfairOrderVoided` custom data type for VAR voids\r\n- Added `BetfairOrderVoided` custom data type for VAR voids\r\n- Added Binance `BinanceEnvironment` enum with `LIVE`, `TESTNET`, `DEMO` variants for explicit environment selection\r\n- Added Binance `environment` config field to `BinanceDataClientConfig` and `BinanceExecClientConfig`\r\n- Added Binance Demo environment support with `BINANCE_DEMO_API_KEY`\u002F`BINANCE_DEMO_API_SECRET` env vars\r\n- Added BitMEX trailing stop support\r\n- Added BitMEX pegged order (BBO) support via params\r\n- Added Bybit mark price subscriptions support\r\n- Added Bybit index price subscriptions support\r\n- Added Databento bulk subscription and historical request support (#3490), thanks @shzhng\r\n- Added Databento support for conversion of OPRA venues (#3605), thanks @faysou\r\n- Added Interactive Brokers subscribe index price functionality (#3514), thanks @Murph24\r\n- Added Interactive Brokers `TotalCashValue` to account summary `info` dict, exposing actual cash balance (#3567), thanks @shzhng\r\n- Added Interactive Brokers `request_timeout_secs` config to `InteractiveBrokersExecClientConfig` and consolidated all IB request timeouts into a single configurable value (#3602), thanks @shzhng\r\n- Added OKX batch cancel support for conditional (algo) orders\r\n- Added Polymarket data loader event-level API support (#3484), thanks @jsemldonado\r\n- Added Polymarket `event_slug_builder` support (#3501), thanks @jsemldonado\r\n- Added Polymarket batch order support (#3506), thanks @loafer-19\r\n- Added Tardis data client with factory in Rust\r\n- Improved tearsheet with dynamic Nautilus version and refined run info table (#3396), thanks @KaulSe\r\n\r\n### Breaking Changes\r\n- Removed dYdX v3 (legacy) Python adapter (the v3 exchange was decommissioned at end of 2024)\r\n- Removed `dydx` optional install extra (the v4 Rust-backed adapter has no additional Python dependencies)\r\n- Renamed `nautilus_trader.adapters.dydx_v4` module to `nautilus_trader.adapters.dydx` and standardized class names to `Dydx` prefix (e.g. `DydxDataClientConfig`, `DydxLiveDataClientFactory`)\r\n- Removed dead `subscribe_order_book_snapshots` and `unsubscribe_order_book_snapshots` methods from `LiveMarketDataClient` (were never called by the data engine)\r\n- Removed OKX URL environment variable overrides (`OKX_BASE_URL_HTTP`, `OKX_BASE_URL_WS_*`, `OKX_DEMO_BASE_URL_WS_*`); use config `base_url_*` fields instead\r\n- Removed deprecated `get_ws_base_url` function from OKX Rust adapter; use `get_ws_base_url_private` or `get_ws_base_url_public` instead\r\n- Removed `AddAssign`, `SubAssign`, `MulAssign` trait implementations from `Price`, `Quantity`, and `Money` types (Rust); use `x = x + y` instead of `x += y`\r\n- Removed `add_assign` and `sub_assign` cdef methods from `Price`, `Quantity`, and `Money` types (Cython); use `x = x + y` instead\r\n- Renamed `subscribed_order_book_snapshots` to `subscribed_order_book_depth` for consistency with data engine routing\r\n- Removed `listen_key_ping_max","2026-02-21T10:54:03",{"id":187,"version":188,"summary_zh":189,"released_at":190},101077,"v1.222.0","# NautilusTrader 1.222.0 Beta\n\nReleased on 1st January 2026 (UTC).\n\nThis release adds support for Python 3.14 with the following limitations:\n- dYdX adapter extras (`[dydx]`) unavailable due to upstream `coincurve` compatibility (available on Python 3.12-3.13)\n- Interactive Brokers adapter extras (`[ib]`) unavailable due to upstream `nautilus-ibapi` compatibility (available on Python 3.12-3.13)\n\n### Enhancements\n- Added support for Python 3.14\n- Added Kraken integration adapter\n- Added Cap'n Proto (`capnp`) serialization for efficient zero-copy data interchange (opt-in via `capnp` feature flag in `nautilus-serialization` crate)\n- Added initial backtest visualization tearsheets with plotly\n- Added matching engine `liquidity_consumption` config option to track per-level consumption and prevent overfilling displayed book liquidity (default `False` to retain current behavior)\n- Added matching engine trade consumption tracking (when `liquidity_consumption=True` and `trade_execution=True`) to prevent multiple orders matching the same trade tick from collectively overfilling\n- Added theme support to `bars_with_fills` chart (#3329), thanks @faysou\n- Added price protection support for market orders (#3065), thanks @Antifrajz\n- Added `Quantity.from_decimal` constructor (#3189), thanks @faysou\n- Added `Price.from_decimal` constructor\n- Added `Money.from_decimal` constructor\n- Added `create_bars_with_fills` to Tearsheet (#3137), thanks @faysou\n- Added `proxy_url` support for HTTP clients\n- Added `CAGR` portfolio statistic\n- Added `CalmarRatio` portfolio statistic\n- Added `MaxDrawdown` portfolio statistic\n- Added `quote_quantity` parameter for `close_position(...)` and `close_all_positions(...)` strategy methods\n- Added remaining bar aggregation methods: `TICK_IMBALANCE`, `TICK_RUNS`, `VOLUME_IMBALANCE`, `VOLUME_RUNS`, `VALUE_IMBALANCE`, `VALUE_RUNS` (#3217), thanks @nicolad\n- Added `ParquetDataCatalog.query_first_timestamp` (#3253), thanks @MK27MK\n- Added `PolymarketDataLoader` for loading historical data with docs and example\n- Added Binance accurate commission rates per symbol (#3208), thanks @delusionpig\n- Added Binance cross-margin info to `AccountState`\n- Added `BinanceInstrumentProviderConfig` to support the `query_commission_rates` config option\n- Added Bybit spot margin auto-borrow and auto-repay with `auto_repay_spot_borrows` config option\n- Added Bybit spot margin manual operations (`BybitMarginAction`) for strategy-controlled borrow\u002Frepay via `query_account`\n- Added Bybit HTTP request_tickers support (#3241), thanks @TaiShanQ\n- Added Databento subscription acknowledgement handling (#3337), thanks @shzhng\n- Added Databento historical client consolidated schema support (#3338), thanks @shzhng\n- Added Interactive Brokers optional exchange param for spread contracts (#3319), thanks @faysou\n- Added Polymarket Gamma API support for instrument loading (#3141), thanks @DeirhX\n- Added OKX historical trades requests\n- Added Tardis `book_snapshot_output` config option for tardis machine replays (default `deltas` to retain current behavior)\n- Added `allow_overfills` config option to `ExecEngineConfig` (default `False`) to handle order fills exceeding order quantity with warning instead of raising\n- Added `overfill_qty` field to orders for tracking fill quantities exceeding original order quantity\n- Introduced `PositionAdjusted` events for tracking quantity\u002FPnL changes outside normal order fills (base currency commissions, funding payments, manual adjustments)\n- Upgraded continuous reconciliation for execution engine using position reports to detect missed fills\n\n### Breaking Changes\n- Dropped support for Python 3.11\n- Removed `prob_fill_on_stop` parameter from `FillModel` and `FillModelConfig` (stop orders have no queue position to simulate as triggers are deterministic when price reaches the trigger level)\n- Removed `use_ws_trade_api` config option from Bybit execution client (using WebSocket trade API only)\n- Renamed `parse_instrument` to `parse_polymarket_instrument` in Polymarket adapter for clarity\n- Renamed `ExecTesterConfig.enable_buys` to `enable_limit_buys`\n- Renamed `ExecTesterConfig.enable_sells` to `enable_limit_sells`\n- Changed `ParquetDataCatalog.register_data` to now treat `files=[]` as registering no files; pass `files=None` (default) to include all files\n- **Standardized data catalog directory naming**: Order book data directory names now use plural forms to align with the Rust catalog and Tardis Machine conventions; this ensures data written by the Python `StreamingFeatherWriter` can be read by the Rust catalog\n  - `order_book_delta\u002F` → `order_book_deltas\u002F`\n  - `order_book_depth10\u002F` → `order_book_depths\u002F`\n\n  **Migration**: Rename existing data directories to use plural forms:\n  ```bash\n  # If you have existing order book data, rename the directories:\n  mv \u003Cyour_data_path>\u002Forder_book_delta \u003Cyour_data_path>\u002Forder_book_deltas\n  mv \u003Cyour_data_path>\u002Forder_book_depth10 \u003Cyour_data_path>\u002Forder_book_depths\n  ``","2026-01-02T05:23:05",{"id":192,"version":193,"summary_zh":194,"released_at":195},101078,"v1.221.0","# NautilusTrader 1.221.0 Beta\n\nReleased on 26th October 2025 (UTC).\n\nThis will be the final release with support for Python 3.11.\n\n### Enhancements\n- Added support for `OrderBookDepth10` requests (#2955), thanks @faysou\n- Added support for quotes from book depths (#2977), thanks @faysou\n- Added support for quotes from order book deltas updates (#3106), thanks @faysou\n- Added execution engine rate limiting for single-order reconciliation queries\n- Added `subscribe_order_fills(...)` and `unsubscribe_order_fills(...)` for `Actor` allowing to subscribe to all fills for an instrument ID\n- Added `on_order_filled(...)` for `Actor`\n- Added Renko bar aggregator (#2941), thanks @faysou\n- Added `time_range_generator` for on-the-fly data data subscriptions (#2952), thanks @faysou\n- Added `__repr__` to `NewsEvent` (#2958), thanks @MK27MK\n- Added `convert_quote_qty_to_base` config option to `ExecEngineConfig` (default `True` to retain current behavior) allows adapters to keep quote-denominated sizes when needed\n- Added contingent order fields `parent_order_id` and `linked_order_ids` for `OrderStatusReport` and reconciliation\n- Added `fs_rust_storage_options` to Python catalog (#3008), thanks @faysou and @Johnkhk\n- Added matching engine fallback to default order book for custom fill models (#3039), thanks @Hamish-Leahy\n- Added filesystem parameter to parquet in the consolidate functions (#3097), thanks @huracosunah\n- Added azure support for az protocol (#3102), thanks @huracosunah\n- Added Binance BBO `price_match` parameter support for order submission\n- Added BitMEX conditional orders support\n- Added BitMEX batch cancel support\n- Added BitMEX contingent orders support (OCO, OTO, brackets)\n- Added BitMEX historical data requests (trades and bars)\n- Added BitMEX configurable `recv_window_ms` for signed HTTP request expiration\n- Added Bybit SPOT position reports with opt-in `use_spot_position_reports` config option for `BybitExecClientConfig`\n- Added Bybit `ignore_uncached_instrument_executions` config option for `BybitExecClientConfig` (default `False` to retain current behavior)\n- Added Databento CME sandbox example\n- Added Interactive Brokers cache config support for historical provider (#2942), thanks @ms32035\n- Added Interactive Brokers support for fetching orders from all clients (#2948), thanks @dinana\n- Added Interactive Brokers order conditions (#2988), thanks @faysou\n- Added Interactive Brokers `generate_fill_reports` implementation (#2989), thanks @faysou\n- Added OKX conditional trigger orders support\n- Added OKX trade mode per order via `params` using `td_mode` key\n- Added OKX margin configuration and spot margin support\n- Added OKX demo account support\n- Added OKX batch cancel support\n- Added Polymarket native market orders support\n\n### Breaking Changes\n- Removed `nautilus_trader.analysis.statistics` subpackage - all statistics are now implemented in Rust and must be imported from `nautilus_trader.analysis` (e.g., `from nautilus_trader.analysis import WinRate`)\n- Removed partial bar functionality from bar aggregators and subscription APIs (#3020), thanks @faysou\n- Renamed `nautilus-cli` crate feature flag from `hypersync` to `defi` (gates blockchain\u002FDeFi commands)\n- Polymarket execution client no longer accepts market BUY orders unless `quote_quantity=True`\n\n### Security\n- Fixed non-executable stack for Cython extensions to support hardened Linux systems\n- Fixed divide-by-zero and overflow bugs in model crate that could cause crashes\n- Fixed core arithmetic operations to reject NaN\u002FInfinity values and improve overflow handling\n\n### Fixes\n- Fixed reduce-only order panic when quantity exceeds position\n- Fixed position purge logic to prevent purging re-opened position\n- Fixed `Position.purge_events_for_order` to properly rebuild state from remaining order fills\n- Fixed cache index cleanup bugs in purge_order operations\n- Fixed order average price calculation that was double-counting current fill in weighted average\n- Fixed own order book cleanup for terminal orders and inflight handling\n- Fixed order book depth snapshot processing to avoid padding levels and metadata tracking for L1 top-of-book ticks\n- Fixed crypto instruments PyO3 -> Cython conversion for `lot_size` where it was not being passed through\n- Fixed `serialization` crate bugs and improve error handling\n- Fixed PyO3 interpreter lifecycle for async shutdown preventing edge case `\"interpreter not initialized\"` panics during shutdown\n- Fixed `RiskEngine` reduce-only cash exits (#2986), thanks for reporting @dennisnissle\n- Fixed `RiskEngine` quote quantity validation\n- Fixed `BacktestEngine` to retain instruments on reset (#3096), thanks for reporting @woung717\n- Fixed overflow in `NautilusKernel` build time calculation due to negative duration (#2998), thanks for reporting @HaakonFlaaronning\n- Fixed handling of asyncio.CancelledError in execution reconciliation (#3073), thanks @dinana\n- Fixed edge case where rejected orders can remain in own order book\n- ","2025-10-26T14:41:37",{"id":197,"version":198,"summary_zh":199,"released_at":200},101079,"v1.220.0","# NautilusTrader 1.220.0 Beta\r\n\r\nReleased on 9th September 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added initial BitMEX integration adapter\r\n- Added `FundingRateUpdate` data type with caching support through data engine\r\n- Added `subscribe_funding_rates(...)` and `unsubscribe_funding_rates(...)` methods for actors\r\n- Added `on_funding_rate(...)` handler for actors\r\n- Added `funding_rate(...)` and `add_funding_rate(...)` for `Cache`\r\n- Added `due_post_only` field for `OrderRejected` event, only properly populated for Binance and Bybit for now\r\n- Added `log_rejected_due_post_only_as_warning` config option for `StrategyConfig` (default `True` to retain current behavior)\r\n- Added `log_rejected_due_post_only_as_warning` config option for `BinanceExecClientConfig` (default `True` to retain current behavior)\r\n- Added `log_components_only` config option for Logger (#2931), thanks @faysou\r\n- Added support for additional Databento schemas: `CMBP_1`, `CBBO_1S`, `CBBO_1M`, `TCBBO`, and `OHLCV_EOD`\r\n- Added configurable schema parameters for Databento quote and trade subscriptions, allowing `TBBO`\u002F`TCBBO` for efficient combined data feeds\r\n- Added support for option combos for Interactive Brokers (#2812), thanks @faysou\r\n- Added support for execution of option spreads in backtesting (#2853), thanks @faysou\r\n- Added support for option spread quotes in backtest (#2845), thanks @faysou\r\n- Added loading of options chain from `request_instruments` for Interactive Brokers (#2809), thanks @faysou\r\n- Added `OptionExerciseModule` (#2907), thanks @faysou\r\n- Added `MarginModel` concept, base models, config, and factory for backtesting (#2794), thanks @faysou and @stefansimik\r\n- Added additional built-in backtest fill models (#2795), thanks @faysou and @stefansimik\r\n- Added `OrderBookDepth10DataWrangler` (#2801), thanks @trylovetom\r\n- Added `group_size` parameter for PyO3 `OrderBook.pprint(...)` and `OwnOrderBook.pprint(...)`\r\n- Added custom error logging function support for `RetryManager`\r\n- Added Bybit options support (#2821), thanks @Baerenstein\r\n- Added Bybit `is_leverage` order parameter support\r\n- Added `persist_account_events` config option for `CacheConfig` (default `True` to retain current behavior)\r\n- Added `query_account` method for `Strategy`\r\n- Added `QueryAccount` execution message\r\n- Added streaming methods for `TardisCSVDataLoader`\r\n- Added stream iterators support for `BacktestEngine` low-level streaming API\r\n- Added `YEAR` aggregation and improved bar specification validation (#2771), thanks @stastnypremysl\r\n- Added support for requesting any number of historical bars for dYdX (#2766, #2777), thanks @DeirhX\r\n- Added `use_hyphens_in_client_order_ids` config option for `StrategyConfig`\r\n- Added `greeks_filter` function to `portfolio_greeks` (#2756), thanks @faysou\r\n- Added time weighted and percent vega for `GreeksCalculator` (#2817), thanks @faysou\r\n- Added `VERBOSE` option to common make targets (#2759), thanks @faysou\r\n- Added bulk key loading capability for Redis cache database adapter\r\n- Added `multiplier` field for `CurrencyPair` instrument (required for some crypto pairs)\r\n- Added `tick_scheme_name` field for instrument dictionary conversions\r\n- Added default `FixedTickScheme`(s) for all valid precisions\r\n- Added PancakeSwapV3 pool parsing (#2829), thanks @filipmacek\r\n- Added `PortfolioConfig.min_account_state_logging_interval_ms` config option for throttling account state logging\r\n- Added `allow_cash_borrowing` config option for `BacktestVenueConfig` to enable negative balances in cash accounts\r\n- Added borrowing support for Bybit SPOT accounts, enabling margin trading with negative balances\r\n- Added initial DEX Pool filtering configuration (#2842, #2887), thanks @filipmacek\r\n- Added Arbitrum FluidDEX pool parsing (#2897), thanks @filipmacek\r\n- Added a complete `.env.example` template to guide environment configuration (#2877), thanks @nicolad\r\n- Added Interactive Brokers OCA setting to order groups (#2899), thanks @faysou\r\n- Added Interactive Brokers subscriptions for position updates (#2887), thanks @faysou\r\n- Added support for running separate live and paper IB Gateway containers without port conflicts. Simplified container naming and made VNC optional.\r\n- Added `avg_px_open` field to `PositionStatusReport` for IB adapter (#2925), thanks @dinana\r\n- Added support for running separate live and paper IB Gateway containers simultaneously (#2937), thanks @Bshara23\r\n- Added support for data deduplication on catalog consolidation (#2934), thanks @ms32035\r\n\r\n### Breaking Changes\r\n- Added `multiplier` field for `CurrencyPair` Arrow schema\r\n- Changed `start` parameter to required for `Actor` data request methods\r\n- Reverted implementation of `delete_account_event` from cache database that was too inefficient and is now a no-op pending redesign\r\n- Renamed `ParquetDataCatalog.reset_catalog_file_names` to `reset_all_file_names`\r\n- Renamed `BinanceAccountType.USDT_FUTURE` to `USDT_FUTURES` for more conventional terminology","2025-09-10T09:11:11",{"id":202,"version":203,"summary_zh":204,"released_at":205},101080,"v1.219.0","# NautilusTrader 1.219.0 Beta\r\n\r\nReleased on 5th July 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added `graceful_shutdown_on_exception` config option for live engines (default `False` to retain intended hard crash on unexpected system exceptions)\r\n- Added `purge_from_database` config option for `LiveExecEngineConfig` to support cache backing database management\r\n- Added support for data download during backtest (#2652), thanks @faysou\r\n- Added delete data range to catalog (#2744), thanks @faysou\r\n- Added consolidate catalog by period (#2727), thanks @faysou\r\n- Added `fire_immediately` flag parameter for timers where a time event will be fired at the `start` instant and then every interval thereafter (default `False` to retain current behavior) (#2600), thanks for the idea @stastnypremysl\r\n- Added `time_bars_build_delay` config option for `DataEngineConfig` (#2676), thanks @faysou\r\n- Added immediate firing capability for time alerts and corresponding test (#2745), thanks @stastnypremysl\r\n- Added missing serialization mappings for some instruments (#2702), thanks @faysou\r\n- Added support for DEX swaps for blockchain adapter (#2683), thanks @filipmacek\r\n- Added support for Pool liquidity updates for blockchain adapter (#2692), thanks @filipmacek\r\n- Added fill report reconciliation warning when discrepancy with existing fill (#2706), thanks @faysou\r\n- Added optional metadata function for custom data query (#2724), thanks @faysou\r\n- Added support for order-list submission in the sandbox execution client (#2714), thanks @petioptrv\r\n- Added hidden order support for IBKR (#2739), thanks @sunlei\r\n- Added `subscribe_order_book_deltas` support for IBKR (#2749), thanks @sunlei\r\n- Added `bid_levels` and `ask_levels` for `OrderBook.pprint`\r\n- Added `accepted_buffer_ns` filter param for `Cache.own_bid_orders(...)` and `Cache.own_ask_orders(...)`\r\n- Added trailing stop orders `activation_price` support in Rust (#2750), thanks @nicolad\r\n\r\n### Breaking Changes\r\n- Renamed catalog `instrument_ids` filter param to `identifiers` to more accurately describe strings which can represent either instrument IDs or bar types\r\n- Changed behavior of timers `allow_past=False` to permit `start` times in the past if the next event time is still in the future\r\n- Changed Databento DBN upgrade policy to default v3\r\n- Removed problematic negative balance check for margin accounts (cash account negative balance check remains unchanged)\r\n- Removed support for Databento DBN v1 schemas (migrate to DBN v2 or v3, see [DBN Changelog](https:\u002F\u002Fgithub.com\u002Fdatabento\u002Fdbn\u002Fblob\u002Fmain\u002FCHANGELOG.md#0350---2025-05-28))\r\n\r\n### Internal Improvements\r\n- Added logging macros for custom component and color in Rust\r\n- Added Cython-level parameter validation for timer operations to prevent Rust panics and provide clearer Python error messages\r\n- Added property-based testing for `Price`, `Quantity`, `Money` value types in Rust\r\n- Added property-based testing for `UnixNanos` in Rust\r\n- Added property-based testing for `OrderBook` in Rust\r\n- Added property-based testing for `TestTimer` in Rust\r\n- Added property-based testing for `network` crate in Rust\r\n- Added chaos testing with `turmoil` for socket clients in Rust\r\n- Added `check_positive_decimal` correctness function and use for instrument validations (#2736), thanks @nicolad\r\n- Added `check_positive_money` correctness function and use for instrument validations (#2738), thanks @nicolad\r\n- Ported data catalog refactor to Rust (#2681, #2720), thanks @faysou\r\n- Optimized `TardisCSVDataLoader` performance (~90% memory usage reduction, ~60-70% faster)\r\n- Consolidated the clocks and timers v2 feature from @twitu\r\n- Consolidated on pure Rust cryptography crates with no dependencies on native certs or openssl\r\n- Consolidated on `aws-lc-rs` cryptography for FIPS compliance\r\n- Confirmed parity between Cython and Rust indicators (#2700, #2710, #2713), thanks @nicolad\r\n- Implemented `From\u003CPool>` -> `CurrencyPair` & `InstrumentAny` (#2693), thanks @nicolad\r\n- Updated `Makefile` to use new docker compose syntax (#2746), thanks @stastnypremysl\r\n- Updated Tardis exchange mappings\r\n- Improved live engine message processing to ensure exceptions result in a crash rather than continuing without the queue processing messages\r\n- Improved live reconciliation robustness and testing\r\n- Improved listen key error handling and recovery for Binance\r\n- Improved handling of negative balances in backtests (#2730), thanks @ms32035\r\n- Improved robustness of cash and margin account locked balance calculations to avoid negative free balance\r\n- Improved robustness of fill price parsing for Betfair\r\n- Improved implementation, validations and testing for Rust instruments (#2723, #2733), thanks @nicolad\r\n- Improved `Currency` equality to use `strcmp` to avoid C pointer comparison issues with `ustr` string interning\r\n- Improved unsubscribe cleanup(s) for Bybit adapter\r\n- Improved `Makefile` to be self-documenting (#2741), thanks @sunlei\r\n- Refactored IB adapter (#26","2025-07-05T14:51:35",{"id":207,"version":208,"summary_zh":209,"released_at":210},101081,"v1.218.0","# NautilusTrader 1.218.0 Beta\r\n\r\nReleased on 31st May 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added convenience re-exports for Betfair adapter (constants, configs, factories, types)\r\n- Added convenience re-exports for Binance adapter (constants, configs, factories, loaders, types)\r\n- Added convenience re-exports for Bybit adapter (constants, configs, factories, loaders, types)\r\n- Added convenience re-exports for Coinbase International adapter (constants, configs, factories)\r\n- Added convenience re-exports for Databento adapter (constants, configs, factories, loaders, types)\r\n- Added convenience re-exports for dYdX adapter (constants, configs, factories)\r\n- Added convenience re-exports for Polymarket adapter (constants, configs, factories)\r\n- Added convenience re-exports for Tardis adapter (constants, configs, factories, loaders)\r\n- Added support for `FillModel`, `LatencyModel` and `FeeModel` in BacktestNode (#2601), thanks @faysou\r\n- Added bars caching from `request_aggregated_bars` (#2649), thanks @faysou\r\n- Added `BacktestDataIterator` to backtest engine to provide on-the-fly data loading (#2545), thanks @faysou\r\n- Added support for `MarkPriceUpdate` streaming from catalog (#2582), thanks @bartolootrit\r\n- Added support for Binance Futures margin type (#2660), thanks @bartolootrit\r\n- Added support for mark price stream across all markets for Binance (#2670), thanks @sunlei\r\n- Added `bars_timestamp_on_close` config option for Databento which defaults to `True` to consistently align with Nautilus conventions\r\n- Added `activation_price` support for trailing stop orders (#2610), thanks @hope2see\r\n- Added trailing stops for OrderFactory bracket orders (#2654), thanks @hope2see\r\n- Added `raise_exception` config option for `BacktestRunConfig` (default `False` to retain current behavior) which will raise exceptions to interrupt a nodes run process\r\n- Added `UnixNanos::is_zero()` convenience method to check for a zero\u002Fepoch value\r\n- Added SQL schema, model, and query for `OrderCancelRejected`\r\n- Added SQL schema, model, and query for `OrderModifyRejected`\r\n- Added HyperSync client to blockchain adapter (#2606), thanks @filipmacek\r\n- Added support for DEXs, pools, and tokens to blockchain adapter (#2638), thanks @filipmacek\r\n\r\n### Breaking Changes\r\n- Changed trailing stops to use `activation_price` rather than `trigger_price` for Binance to more closely match the Binance API conventions\r\n\r\n### Internal Improvements\r\n- Added `activation_price` str and repr tests for trailing stop orders (#2620), thanks @hope2see\r\n- Added condition check for order `contingency_type` and `linked_order_ids` where a contingency should have associated linked order IDs\r\n- Improved robustness of socket client reconnects and disconnects to avoid state race conditions\r\n- Improved error handling for socket clients, will now raise Python exceptions on send errors rather than logging with `tracing` only\r\n- Improved error handling for Databento adapter by changing many unwraps to instead log or raise Python exceptions (where applicable)\r\n- Improved error handling for Tardis adapter by changing many unwraps to instead log or raise Python exceptions (where applicable)\r\n- Improved fill behavior for limit orders in `L1_MBP` books, will now fill entire size when marketable as `TAKER` or market moves through limit as `MAKER`\r\n- Improved account state event generation for margin accounts, avoiding the generation of redundant intermediate account states for the same execution event\r\n- Improved ergonomics of messaging topics, patterns, and endpoints in Rust (#2658), thanks @twitu\r\n- Improved development debug builds with cranelift backend for Rust (#2640), thanks @twitu\r\n- Improved validations for `LimitOrder` in Rust (#2613), thanks @nicolad\r\n- Improved validations for `LimitIfTouchedOrder` in Rust (#2533), thanks @nicolad\r\n- Improved validations for `MarketIfTouchedOrder` in Rust (#2577), thanks @nicolad\r\n- Improved validations for `MarketToLimitOrder` in Rust (#2584), thanks @nicolad\r\n- Improved validations for `StopLimitOrder` in Rust (#2593), thanks @nicolad\r\n- Improved validations for `StopMarketOrder` in Rust (#2596), thanks @nicolad\r\n- Improved validations for `TrailingStopMarketOrder` in Rust (#2607), thanks @nicolad\r\n- Improved orders initialize and display tests in Rust (#2617), thanks @nicolad\r\n- Improved testing for Rust orders module (#2578), thanks @dakshbtc\r\n- Improved Cython-Rust indicator parity for `AdaptiveMovingAverage` (AMA) (#2626), thanks @nicolad\r\n- Improved Cython-Rust indicator parity for `DoubleExponentialMovingAverage` (DEMA) (#2633), thanks @nicolad\r\n- Improved Cython-Rust indicator parity for `ExponentialMovingAverage` (EMA) (#2642), thanks @nicolad\r\n- Improved Cython-Rust indicator parity for `HullMovingAverage` (HMA) (#2648), thanks @nicolad\r\n- Improved Cython-Rust indicator parity for `LinearRegression` (#2651), thanks @nicolad\r\n- Improved Cython-Rust indicator parity for `WilderMovingAverage` (RMA) (#2653), thanks @nicolad\r\n-","2025-05-31T05:30:15",{"id":212,"version":213,"summary_zh":214,"released_at":215},101082,"v1.217.0","# NautilusTrader 1.217.0 Beta\r\n\r\nReleased on 30th April 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added processing of `OrderBookDepth10` for `BacktestEngine` and `OrderMatchingEngine` (#2542), thanks @limx0\r\n- Added `Actor.subscribe_order_book_depth(...)` subscription method (#2555), thanks @limx0\r\n- Added `Actor.unsubscribe_order_book_depth(...)` subscription method\r\n- Added `Actor.on_order_book_depth(...)` handler method (#2555), thanks @limx0\r\n- Added `UnixNanos::max()` convenience method for the maximum valid value\r\n- Added `available_offset` filter parameter for `TardisInstrumentProvider`\r\n- Added `NAUTILUS_WORKER_THREADS` environment variable for common tokio runtime builder\r\n- Added `Quantity::non_zero(...)` method\r\n- Added `Quantity::non_zero_checked(...)` method\r\n- Added `round_down` param for `Instrument.make_qty(...)` that is `False` by default to maintain current behavior\r\n- Added WebSocket batch order operations for Bybit (#2521), thanks @sunlei\r\n- Added mark price subscription for Binance Futures (#2548), thanks @bartolootrit\r\n- Added `Chain` struct to represent blockchain network (#2526), thanks @filipmacek\r\n- Added `Block` primitive for blockchain domain model (#2535), thanks @filipmacek\r\n- Added `Transaction` primitive for blockchain domain model (#2551), thanks @filipmacek\r\n- Added initial blockchain adapter with live block subscription (#2557), thanks @filipmacek\r\n\r\n### Breaking Changes\r\n- Removed fees from locked balance calculations for `CASH` accounts\r\n- Removed fees from margin calculations for `MARGIN` accounts\r\n- Renamed `id` constructor parameter to `instrument_id` across all PyO3 instruments, aligning with equivalent Cython instrument constructors\r\n\r\n### Internal Improvements\r\n- Implemented exponential backoff and jitter for the `RetryManager` (#2518), thanks @davidsblom\r\n- Simplified default locked balance and margin calculations to not include fees\r\n- Improved handling of time range and effective date filters for `TardisInstrumentProvider`\r\n- Improved reconnection robustness for Bybit private\u002Ftrading channels (#2520), thanks @sunlei\r\n- Improved logger buffers flushing post backtest\r\n- Improved validations for Tardis trades data\r\n- Improved correctness of client registration and deregistration for `ExecutionEngine`\r\n- Improved build time by only compiling libraries (#2539), thanks @twitu\r\n- Improved logging flush (#2568), thanks @faysou\r\n- Improved `clear_log_file` to happen for each kernel initialization (#2569), thanks @faysou\r\n- Refined `Price` and `Quantity` validations and correctness\r\n- Filter fill events if order is already filled for dYdX (#2547), thanks @davidsblom\r\n- Fixed some clippy lints (#2517), thanks @twitu\r\n- Upgraded `databento` crate to v0.24.0\r\n- Upgraded `datafusion` crate to v47.0.0\r\n- Upgraded `redis` crate to v0.30.0\r\n- Upgraded `sqlx` crate to v0.8.5\r\n- Upgraded `pyo3` crate to v0.24.2\r\n\r\n### Fixes\r\n- Fixed consistent ordering of execution events (#2513, #2554), thanks for reporting @stastnypremysl\r\n- Fixed type error when generating an elapsed time for backtests with no elapsed time\r\n- Fixed memory leak in `RetryManager` by simplifying the acquire-release pattern, avoiding the asynchronous context manager protocol that led to state sharing, thanks for reporting @DeevsDeevs\r\n- Fixed locked balance and initial margin calculations for reduce-only orders (#2505), thanks for reporting @stastnypremysl\r\n- Fixed purging order events from position (these needed to be purged prior to removing cache index entry), thanks @DeevsDeevs\r\n- Fixed `TypeError` when formatting backtest post run timestamps which were `None` (#2514), thanks for reporting @stastnypremysl\r\n- Fixed handling of `BetfairSequenceCompleted` as custom data\r\n- Fixed the instrument class of `IndexInstrument`, changing to `SPOT` to correctly represent a spot index of underlying constituents\r\n- Fixed data range request `end` handling for `DataEngine`\r\n- Fixed unsubscribe instrument close for `DataEngine`\r\n- Fixed network clients authentication for OKX (#2553), thanks for reporting @S3toGreen\r\n- Fixed account balance calculation for dYdX (#2563), thanks @davidsblom\r\n- Fixed `ts_init` for databento historical data (#2566), thanks @faysou\r\n- Fixed `RequestInstrument` in `query_catalog` (#2567), thanks @faysou\r\n- Reverted removal of rotate log file on UTC date change (#2552), thanks @twitu\r\n\r\n### Documentation Updates\r\n- Improved environment setup guide with recommended rust analyzer settings (#2538), thanks @twitu\r\n- Fixed alignment with code for some `ExecutionEngine` docstrings\r\n\r\n### Deprecations\r\nNone\r\n\r\n","2025-04-30T14:27:02",{"id":217,"version":218,"summary_zh":219,"released_at":220},101083,"v1.216.0","# NautilusTrader 1.216.0 Beta\r\n\r\nReleased on 13th April 2025 (UTC).\r\n\r\nThis release adds support for Python 3.13 (*not* yet compatible with free-threading),\r\nand introduces support for Linux on ARM64 architecture.\r\n\r\n### Enhancements\r\n- Added `allow_past` boolean flag for `Clock.set_timer(...)` to control behavior with start times in the past (default `True` to allow start times in the past)\r\n- Added `allow_past` boolean flag for `Clock.set_time_alert(...)` to control behavior with alert times in the past (default `True` to fire immediate alert)\r\n- Added risk engine check for GTD order expire time, which will deny if expire time is already in the past\r\n- Added instrument updating for exchange and matching engine\r\n- Added additional price and quantity precision validations for matching engine\r\n- Added log file rotation with additional config options `max_file_size` and `max_backup_count` (#2468), thanks @xingyanan and @twitu\r\n- Added `bars_timestamp_on_close` config option for `BybitDataClientConfig` (default `True` to match Nautilus conventions)\r\n- Added `BetfairSequenceCompleted` custom data type for Betfair to mark the completion of a sequence of messages\r\n- Added Arrow schema for `MarkPriceUpdate` in Rust\r\n- Added Arrow schema for `IndexPriceUpdate` in Rust\r\n- Added Arrow schema for `InstrumentClose` in Rust\r\n- Added `BookLevel.side` property\r\n- Added `Position.closing_order_side()` instance method\r\n- Improved robustness of in-flight order check for `LiveExecutionEngine`, once exceeded query retries will resolve submitted orders as rejected and pending orders as canceled\r\n- Improved logging for `BacktestNode` crashes with full stack trace and prettier config logging\r\n\r\n### Breaking Changes\r\n- Changed external bar requests `ts_event` timestamping from on open to on close for Bybit\r\n\r\n### Internal Improvements\r\n- Added handling and warning for Betfair zero sized fills\r\n- Improved WebSocket error handling for dYdX (#2499), thanks @davidsblom\r\n- Ported `GreeksCalculator` to Rust (#2493, #2496), thanks @faysou\r\n- Upgraded Cython to v3.1.0b1\r\n- Upgraded `redis` crate to v0.29.5\r\n- Upgraded `tokio` crate to v1.44.2\r\n\r\n### Fixes\r\n- Fixed setting component clocks to backtest start time\r\n- Fixed overflow error in trailing stop calculations\r\n- Fixed missing `SymbolFilterType` enum member for Binance (#2495), thanks @sunlei\r\n- Fixed `ts_event` for Bybit bars (#2502), thanks @davidsblom\r\n- Fixed position ID handling for Binance Futures in hedging mode with execution algorithm order (#2504), thanks for reporting @Oxygen923\r\n\r\n### Documentation Updates\r\n- Removed obsolete bar limitations in portfolio docs (#2501), thanks @stefansimik\r\n\r\n### Deprecations\r\nNone\r\n\r\n","2025-04-13T13:41:35",{"id":222,"version":223,"summary_zh":224,"released_at":225},101084,"v1.215.0","# NautilusTrader 1.215.0 Beta\r\n\r\nReleased on 5th April 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added `Cache.purge_closed_order(...)`\r\n- Added `Cache.purge_closed_orders(...)`\r\n- Added `Cache.purge_closed_position(...)`\r\n- Added `Cache.purge_closed_positions(...)`\r\n- Added `Cache.purge_account_events(...)`\r\n- Added `Account.purge_account_events(...)`\r\n- Added `purge_closed_orders_interval_mins` config option for `LiveExecEngineConfig`\r\n- Added `purge_closed_orders_buffer_mins` config option for `LiveExecEngineConfig`\r\n- Added `purge_closed_positions_interval_mins` config option for `LiveExecEngineConfig`\r\n- Added `purge_closed_positions_buffer_mins` config option for `LiveExecEngineConfig`\r\n- Added `purge_account_events_interval_mins` config option for `LiveExecEngineConfig`\r\n- Added `purge_account_events_lookback_mins` config option for `LiveExecEngineConfig`\r\n- Added `Order.ts_closed` property\r\n- Added `instrument_ids` and `bar_types` for `BacktestDataConfig` to improve catalog query efficiency (#2478), thanks @faysou\r\n- Added `venue_dataset_map` config option for `DatabentoDataConfig` to override the default dataset used for a venue (#2483, #2485), thanks @faysou\r\n\r\n### Breaking Changes\r\nNone\r\n\r\n### Internal Improvements\r\n- Added `Position.purge_events_for_order(...)` for purging `OrderFilled` events and `TradeId`s associated with a client order ID\r\n- Added `Consumer` for `WebSocketClient` (#2488), thanks @twitu\r\n- Improved instrument parsing for Tardis with consistent `effective` timestamp filtering, settlement currency, increments and fees changes\r\n- Improved error logging for Betfair `update_account_state` task by logging the full stack trace on error\r\n- Improved logging for Redis cache database operations\r\n- Standardized unexpected exception logging to include full stack trace\r\n- Refined type handling for backtest configs\r\n- Refined databento venue dataset mapping and configuration (#2483), thanks @faysou\r\n- Refined usage of databento `use_exchange_as_venue` (#2487), thanks @faysou\r\n- Refined time initialization of components in backtest (#2490), thanks @faysou\r\n- Upgraded Rust MSRV to 1.86.0\r\n- Upgraded `pyo3` crate to v0.24.1\r\n\r\n### Fixes\r\n- Fixed MBO feed handling for Databento where an initial snapshot was decoding a trade tick with zero size (#2476), thanks for reporting @JackWCollins\r\n- Fixed position state snapshots for closed positions where these snapshots were being incorrectly filtered\r\n- Fixed handling of `PolymarketTickSizeChanged` message\r\n- Fixed parsing spot instruments for Tardis where `size_increment` was zero, now inferred from base currency\r\n- Fixed default log colors for Rust (#2489), thanks @filipmacek\r\n- Fixed sccache key for uv in CI (#2482), thanks @davidsblom\r\n\r\n### Documentation Updates\r\n- Clarified partial fills in backtesting concept guide (#2481), thanks @stefansimik\r\n\r\n### Deprecations\r\n- Deprecated strategies written in Cython and removed `ema_cross_cython` strategy example\r\n\r\n","2025-04-05T01:33:14",{"id":227,"version":228,"summary_zh":229,"released_at":230},101085,"v1.214.0","# NautilusTrader 1.214.0 Beta\r\n\r\nReleased on 28th March 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added [Coinbase International Exchange](https:\u002F\u002Fwww.coinbase.com\u002Fen\u002Finternational-exchange) initial integration adapter\r\n- Added `time_in_force` parameter for `Strategy.close_position(...)`\r\n- Added `time_in_force` parameter for `Strategy.close_all_positions(...)`\r\n- Added `MarkPriceUpdate` data type\r\n- Added `IndexPriceUpdate` data type\r\n- Added `Actor.subscribe_mark_prices(...)`\r\n- Added `Actor.subscribe_index_prices(...)`\r\n- Added `Actor.unsubscribe_mark_prices(...)`\r\n- Added `Actor.unsubscribe_index_prices(...)`\r\n- Added `Actor.on_mark_price(...)`\r\n- Added `Actor.on_index_price(...)`\r\n- Added `Cache.mark_price(...)`\r\n- Added `Cache.index_price(...)`\r\n- Added `Cache.mark_prices(...)`\r\n- Added `Cache.index_prices(...)`\r\n- Added `Cache.mark_price_count(...)`\r\n- Added `Cache.index_price_count(...)`\r\n- Added `Cache.has_mark_prices(...)`\r\n- Added `Cache.has_index_prices(...)`\r\n- Added `UnixNanos.to_rfc3339()` for ISO 8601 (RFC 3339) strings\r\n- Added `recv_window_ms` config for Bybit WebSocket order client (#2466), thanks @sunlei\r\n- Enhanced `UnixNanos` string parsing to support YYYY-MM-DD date format (interpreted as midnight UTC)\r\n\r\n### Breaking Changes\r\n- Changed `Cache.add_mark_price(self, InstrumentId instrument_id, Price price)` to `add_mark_price(self, MarkPriceUpdate mark_price)`\r\n\r\n### Internal Improvements\r\n- Improved `WebSocketClient` and `SocketClient` design with dedicated writer task and message channel\r\n- Completed global message bus design in Rust (#2460), thanks @filipmacek\r\n- Refactored enum dispatch (#2461), thanks @filipmacek\r\n- Refactored data interfaces to messages in Rust\r\n- Refined catalog file operations in Rust (#2454), thanks @faysou\r\n- Refined quote ticks and klines for Bybit (#2465), thanks @davidsblom\r\n- Standardized use of `anyhow::bail` (#2459), thanks @faysou\r\n- Ported `add_venue` for `BacktestEngine` in Rust (#2457), thanks @filipmacek\r\n- Ported `add_instrument` for `BacktestEngine` in Rust (#2469), thanks @filipmacek\r\n- Upgraded `redis` crate to v0.29.2\r\n\r\n### Fixes\r\n- Fixed race condition on multiple reconnect attempts for `WebSocketClient` and `SocketClient`\r\n- Fixed position state snapshot `ts_snapshot` value, which was always `ts_last` instead of timestamp when the snapshot was taken\r\n- Fixed instrument parsing for Tardis, now correctly applies changes and filters by `effective`\r\n- Fixed `OrderStatusReport` for conditional orders of dYdX (#2467), thanks @davidsblom\r\n- Fixed submitting stop market orders for dYdX (#2471), thanks @davidsblom\r\n- Fixed retrying HTTP calls on `DecodeError` for dYdX (#2472), thanks @davidsblom\r\n- Fixed `LIMIT_IF_TOUCHED` order type enum parsing for Bybit\r\n- Fixed `MARKET` order type enum parsing for Bybit\r\n- Fixed quote ticks for Polymarket to only emit new quote ticks when the top-of-book changes\r\n- Fixed error on cancel order for IB (#2475), thanks @FGU1\r\n\r\n### Documentation Updates\r\n- Improved custom data documentation (#2470), thanks @faysou\r\n\r\n### Deprecations\r\nNone\r\n\r\n","2025-03-28T13:10:59",{"id":232,"version":233,"summary_zh":234,"released_at":235},101086,"v1.213.0","# NautilusTrader 1.213.0 Beta\r\n\r\nReleased on 16th March 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added `CryptoOption` instrument, supporting inverse and fractional sizes\r\n- Added `Cache.prices(...)` to return a map of latest price per instrument for a price type\r\n- Added `use_uuid_client_order_ids` config option for `StrategyConfig`\r\n- Added catalog consolidation functions of several parquet files into one (#2421), thanks @faysou\r\n- Added FDUSD (First Digital USD) crypto `Currency` constant\r\n- Added initial leverage, `margin_mode` and `position_mode` config options for Bybit (#2441), thanks @sunlei\r\n- Updated parquet catalog in Rust with recent features (#2442), thanks @faysou\r\n\r\n### Breaking Changes\r\nNone\r\n\r\n### Internal Improvements\r\n- Added `timeout_secs` parameter to `HttpClient` for default timeouts\r\n- Added additional precision validations for `OrderMatchingEngine`\r\n- Added symmetric comparison impls between `u64` and `UnixNanos`\r\n- Improved `InstrumentProvider` error handling when loading (#2444), thanks @davidsblom\r\n- Improved order denied reason message for balance impact\r\n- Handle BybitErrors when updating instruments for ByBit (#2437), thanks @davidsblom\r\n- Handle unexpected errors when fetching order books for dYdX (#2445), thanks @davidsblom\r\n- Retry if HttpError is raised for dYdX (#2438), thanks @davidsblom\r\n- Refactored some Rust logs to use named parameters in format strings (#2443), thanks @faysou\r\n- Some minor performance optimizations for Bybit and dYdX adapters (#2448), thanks @sunlei\r\n- Ported backtest engine and kernel to Rust (#2449), thanks @filipmacek\r\n- Upgraded `pyo3` and `pyo3-async-runtimes` crates to v0.24.0\r\n- Upgraded `tokio` crate to v1.44.1\r\n\r\n### Fixes\r\n- Fixed source distribution (sdist) packaging\r\n- Fixed `Clock.timer_names()` memory issue resulting in an empty list\r\n- Fixed underflow panic when setting a time alert in the past (#2446), thanks for reporting @uxbux\r\n- Fixed logger name for `Strategy` custom `strategy_id`s\r\n- Fixed unbound variable for Bybit (#2433), thanks @sunlei \r\n\r\n### Documentation Updates\r\n- Clarify docs for timestamp properties in `Data` (#2450), thanks @stefansimik\r\n- Updated environment setup document (#2452), thanks @faysou\r\n\r\n### Deprecations\r\nNone\r\n\r\n","2025-03-16T09:56:19",{"id":237,"version":238,"summary_zh":239,"released_at":240},101087,"v1.212.0","# NautilusTrader 1.212.0 Beta\r\n\r\nReleased on 11th March 2025 (UTC).\r\n\r\nThis release introduces [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv) as the Python project and dependency management tool.\r\n\r\n### Enhancements\r\n- Added `OwnOrderBook` and `OwnBookOrder` to track own orders and prevent self-trades in market making\r\n- Added `manage_own_order_books` config option for `ExecEngineConfig` to enable own order tracking\r\n- Added `Cache.own_order_book(...)`, `Cache.own_bid_orders(...)` and `Cache.own_ask_orders(...)` for own order tracking\r\n- Added optional beta weighting and percent option greeks (#2317), thanks @faysou\r\n- Added pnl information to greeks data (#2378), thanks @faysou\r\n- Added precision inference for `TardisCSVDataLoader`, where `price_precision` and `size_precision` are now optional\r\n- Added `Order.ts_accepted` property\r\n- Added `Order.ts_submitted` property\r\n- Added `UnixNanos::to_datetime_utc()` in Rust\r\n- Added `Mark` variant for `PriceType` enum\r\n- Added mark price handling for `Cache`\r\n- Added mark exchange rate handling for `Cache`\r\n- Added `PortfolioConfig` for configuration settings specific to the `Portfolio`\r\n- Added `use_mark_prices`, `use_mark_xrates` and `convert_to_account_base_currency` options for `PortfolioConfig`\r\n- Added mark price calculations and xrate handling for `Portfolio`\r\n- Added Rust debugging support and refined cargo nextest usage (#2335, #2339), thanks @faysou\r\n- Added catalog write mode options (#2365), thanks @faysou\r\n- Added `BarSpecification` to msgspec encoding and decoding hooks (#2373), thanks @pierianeagle\r\n- Added `ignore_external_orders` config option for `BetfairExecClientConfig`, default `False` to retain current behavior\r\n- Added requests for order book snapshots with HTTP for dYdX (#2393), thanks @davidsblom\r\n\r\n### Breaking Changes\r\n- Removed [talib](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Ftree\u002Fdevelop\u002Fnautilus_trader\u002Findicators\u002Fta_lib) subpackage (see deprecations for v1.211.0)\r\n- Removed internal `ExchangeRateCalculator`, replaced with `get_exchange_rate(...)` function implemented in Rust\r\n- Replaced `ForexSession` enum with equivalent from PyO3\r\n- Replaced `ForexSessionFilter` with equivalent functions from PyO3\r\n- Renamed `InterestRateData` to `YieldCurveData`\r\n- Renamed `Cache.add_interest_rate_curve` to `add_yield_curve`\r\n- Renamed `Cache.interest_rate_curve` to `yield_curve`\r\n- Renamed `OrderBook.count` to `update_count` for clarity\r\n- Moved `ExecEngineConfig.portfolio_bar_updates` config option to `PortfolioConfig.bar_updates`\r\n\r\n### Internal Improvements\r\n- Added initial `Cache` benchmarking for orders (#2341), thanks @filipmacek\r\n- Added support for `CARGO_BUILD_TARGET` environment variable in `build.py` (#2385), thanks @sunlei\r\n- Added test for time-bar aggregation (#2391), thanks @stefansimik and @faysou\r\n- Implemented actor framework and message bus v3 (#2402), thanks @twitu\r\n- Implemented latency modeling for SimulatedExchange in Rust (#2423), thanks @filipmacek\r\n- Implemented exchange rate calculations in Rust\r\n- Improved handling of `oms_type` for `StrategyConfig` which now correctly handles the `OmsType` enum\r\n- Improved Binance websocket connections management to allow more than 200 streams (#2369), thanks @lidarbtc\r\n- Improved log event timestamping to avoid clock or time misalignments when events cross to the logging thread\r\n- Improved error logging for live engines to now include stacktrace for easier debugging\r\n- Improved logging initialization error handling to avoid panicking in Rust\r\n- Improved Redis cache database queries, serialization, error handling and connection management (#2295, #2308, #2318), thanks @Pushkarm029\r\n- Improved validation for `OrderList` to check all orders are for the same instrument ID\r\n- Improved `Controller` functionality with ability to create actors and strategies from configs (#2322), thanks @faysou\r\n- Improved `Controller` creation for more streamlined trader registration, and separate clock for timer namespacing (#2357), thanks @faysou\r\n- Improved build by adding placeholders to avoid unnecessary rebuilds (#2336), thanks @bartolootrit\r\n- Improved consistency of `OrderMatchingEngine` between Cython and Rust and fix issues (#2350), thanks @filipmacek\r\n- Removed obsolete reconnect guard for dYdX (#2334), thanks @davidsblom\r\n- Refactored data request interfaces into messages (#2260), thanks @faysou\r\n- Refactored data subscribe interfaces into messages (#2280), thanks @faysou\r\n- Refactored reconciliation interface into messages (#2375), thanks @faysou\r\n- Refactored `_handle_query_group` to work with `update_catalog` (#2412), thanks @faysou\r\n- Refactored execution message handling in Rust (#2291), thanks @filipmacek\r\n- Refactored repetitive code in backtest examples (#2387, #2395), thanks @stefansimik\r\n- Refined yield curve data (#2300), thanks @faysou\r\n- Refined bar aggregators in Rust (#2311), thanks @faysou\r\n- Refined greeks computation (#2312), thanks @faysou\r\n- Refined underlying filtering in portfolio","2025-03-11T04:50:06",{"id":242,"version":243,"summary_zh":244,"released_at":245},101088,"v1.211.0","# NautilusTrader 1.211.0 Beta\r\n\r\nReleased on 9th February 2025 (UTC).\r\n\r\nThis release introduces [high-precision mode](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Fnightly\u002Fconcepts\u002Foverview#value-types), where value types such as `Price`, `Quantity` and `Money` are now backed by 128-bit integers (instead of 64-bit), thereby increasing maximum precision to 16, and vastly expanding the allowable value ranges.\r\n\r\nThis will address precision and value range issues experienced by some crypto users, alleviate higher timeframe bar volume limitations, as well as future proofing the platform.\r\n\r\nSee the [RFC](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fissues\u002F2084) for more details. For an explanation on compiling with or without high-precision mode, see the [precision-mode](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Fnightly\u002Fgetting_started\u002Finstallation\u002F#precision-mode) section of the installation guide.\r\n\r\n**For migrating data catalogs due to the breaking changes, see the [data migrations guide](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Fnightly\u002Fconcepts\u002Fdata#data-migrations)**.\r\n\r\n**This release will be the final version that uses Poetry for package and dependency management.**\r\n\r\n### Enhancements\r\n- Added `high-precision` mode for 128-bit integer backed value types (#2072), thanks @twitu\r\n- Added instrument definitions range requests for `TardisHttpClient` with optional `start` and `end` filter parameters\r\n- Added `quote_currency`, `base_currency`, `instrument_type`, `contract_type`, `active`, `start` and `end` filters for `TardisInstrumentProvider`\r\n- Added `log_commands` config option for `ActorConfig`, `StrategyConfig`, `ExecAlgorithmConfig` for more efficient log filtering\r\n- Added additional limit parameters for `BettingInstrument` constructor\r\n- Added `venue_position_id` parameter for `OrderStatusReport`\r\n- Added bars update support for `Portfolio` PnLs (#2239), thanks @faysou\r\n- Added optional `params` for `Strategy` order management methods (symmetry with `Actor` data methods) (#2251), thanks @faysou\r\n- Added heartbeats for Betfair clients to keep streams alive (more robust when initial subscription delays)\r\n- Added `timeout_shutdown` config option for `NautilusKernelConfig`\r\n- Added IOC time in force mapping for Betfair orders\r\n- Added `min_market_start_time` and `max_market_start_time` time range filtering for `BetfairInstrumentProviderConfig`\r\n- Added `default_min_notional` config option for `BetfairInstrumentProviderConfig`\r\n- Added `stream_conflate_ms` config option for `BetfairDataClientConfig`\r\n- Added `recv_window_ms` config option for `BybitDataClientConfig` and `BybitExecClientConfig`\r\n- Added `open_check_open_only` config option for `LiveExecEngineConfig`\r\n- Added `BetSide` enum (to support `Bet` and `BetPosition`)\r\n- Added `Bet` and `BetPosition` for betting market risk and PnL calculations\r\n- Added `total_pnl` and `total_pnls` methods for `Portfolio`\r\n- Added optional `price` parameter for `Portfolio` unrealized PnL and net exposure methods\r\n\r\n### Breaking Changes\r\n- Renamed `OptionsContract` instrument to `OptionContract` for more technically correct terminology (singular)\r\n- Renamed `OptionsSpread` instrument to `OptionSpread` for more technically correct terminology (singular)\r\n- Renamed `options_contract` modules to `option_contract` (see above)\r\n- Renamed `options_spread` modules to `option_spread` (see above)\r\n- Renamed `InstrumentClass.FUTURE_SPREAD` to `InstrumentClass.FUTURES_SPREAD` for more technically correct terminology\r\n- Renamed `event_logging` config option to `log_events`\r\n- Renamed `BetfairExecClientConfig.request_account_state_period` to `request_account_state_secs`\r\n- Moved SQL schema directory to `schemas\u002Fsql` (reinstall the Nautilus CLI with `make install-cli`)\r\n- Changed `OrderBookDelta` Arrow schema to use `FixedSizeBinary` fields to support the new precision modes\r\n- Changed `OrderBookDepth10` Arrow schema to use `FixedSizeBinary` fields to support the new precision modes\r\n- Changed `QuoteTick` Arrow schema to use `FixedSizeBinary` fields to support the new precision modes\r\n- Changed `TradeTick` Arrow schema to use `FixedSizeBinary` fields to support the new precision modes\r\n- Changed `Bar` Arrow schema to use `FixedSizeBinary` fields to support the new precision modes\r\n- Changed `BettingInstrument` default `min_notional` to `None`\r\n- Changed meaning of `ws_connection_delay_secs` for [PolymarketDataClientConfig](https:\u002F\u002Fgithub.com\u002Fnautechsystems\u002Fnautilus_trader\u002Fblob\u002Fdevelop\u002Fnautilus_trader\u002Fadapters\u002Fpolymarket\u002Fconfig.py) to be **non-initial** delay (#2271)\r\n- Changed `GATEIO` Tardis venue to `GATE_IO` for consistency with `CRYPTO_COM` and `BLOCKCHAIN_COM`\r\n- Removed `max_ws_reconnection_tries` for dYdX configs (no longer applicable with infinite retries and exponential backoff)\r\n- Removed `max_ws_reconnection_tries` for Bybit configs (no longer applicable with infinite retries and exponential backoff)\r\n- Removed remaining `max_ws_reconnection_tries` for Bybit configs (#2290), thanks @sunlei\r\n\r\n### In","2025-02-09T18:59:31",{"id":247,"version":248,"summary_zh":249,"released_at":250},101089,"v1.210.0","# NautilusTrader 1.210.0 Beta\r\n\r\nReleased on 10th January 2025 (UTC).\r\n\r\n### Enhancements\r\n- Added `PerContractFeeModel`, thanks @stefansimik\r\n- Added `DYDXInternalError` and `DYDXOraclaPrice` data types for dYdX (#2155), thanks @davidsblom\r\n- Added proper `OrderBookDeltas` flags parsing for Betfair\r\n- Added Binance TradeLite message support (#2156), thanks @DeevsDeevs\r\n- Added `DataEngineConfig.time_bars_skip_first_non_full_bar` config option (#2160), thanks @faysou\r\n- Added `execution.fast` support for Bybit (#2165), thanks @sunlei\r\n- Added catalog helper functions to export data (#2135), thanks @twitu\r\n- Added additional timestamp properties for `NautilusKernel`\r\n- Added `event_logging` config option for `StrategyConfig` (#2183), thanks @sunlei\r\n- Added `bar_adaptive_high_low_ordering` to `BacktestVenueConfig` (#2188), thanks @faysou and @stefansimik\r\n\r\n### Breaking Changes\r\n- Removed optional `value` param from `UUID4` (use `UUID4.from_str(...)` instead), aligns with Nautilus PyO3 API\r\n- Changed `unix_nanos_to_iso8601` to output an ISO 8601 (RFC 3339) format string with nanosecond precision\r\n- Changed `format_iso8601` to output ISO 8601 (RFC 3339) format string with nanosecond precision\r\n- Changed `format_iso8601` `dt` parameter to enforce `pd.Timestamp` (which has nanosecond precision)\r\n- Changed `TradingNode.is_built` from a property to a method `.is_built()`\r\n- Changed `TradingNode.is_running` from a property to a method `.is_running()`\r\n- Changed `OrderInitialized` Arrow schema (`linked_order_ids` and `tags` data types changed from `string` to `binary`)\r\n- Changed order dictionary representation field types for `avg_px` and `slippage`  from `str` to `float` (as out of alignment with position events)\r\n- Changed `aggregation_source` filter parameter for `Cache.bar_types(...)` to optional with default of `None`\r\n\r\n### Internal Improvements\r\n- Improved market order handling when no size available in book (now explicitly rejects)\r\n- Improved validation for `TradeTick` by ensuring `size` is always positive\r\n- Improved validation for `OrderBookDelta` by ensuring `order.size` is positive when `action` is either `ADD` or `UPDATE`\r\n- Improved validation for `BarSpecification` by ensuring `step` is always positive\r\n- Standardized ISO 8601 timestamps to RFC 3339 spec with nanosecond precision\r\n- Standardized flags for `OrderBookDeltas` parsing across adapters\r\n- Refined parsing candles for dYdX (#2148), thanks @davidsblom\r\n- Refined imports for type hints in Bybit (#2149), thanks @sunlei\r\n- Refined private WebSocket message processing for Bybit (#2170), thanks @sunlei\r\n- Refined WebSocket client re-subscribe log for Bybit (#2179), thanks @sunlei\r\n- Refined margin balance report for dYdX (#2154), thanks @davidsblom\r\n- Enhanced `lotSizeFilter` field for Bybit (#2166), thanks @sunlei\r\n- Renamed WebSocket private client for Bybit (#2180), thanks @sunlei\r\n- Added unit tests for custom dYdX types (#2163), thanks @davidsblom\r\n- Allow bar aggregators to persist after `request_aggregated_bars` (#2144), thanks @faysou\r\n- Handle directory and live streams to catalog (#2153), thanks @limx0\r\n- Use timeout when initializing account for dYdX (#2169), thanks @davidsblom\r\n- Use retry manager when sending websocket messages for dYdX (#2196), thanks @davidsblom\r\n- Refined error logs when sending pong for dYdX (#2184), thanks @davidsblom\r\n- Optimized message bus topic `is_matching` (#2151), thanks @ryantam626\r\n- Added tests for `bar_adaptive_high_low_ordering` (#2197), thanks @faysou\r\n- Ported `OrderManager` to Rust (#2161), thanks @Pushkarm029\r\n- Ported trailing stop logic to Rust (#2174), thanks @DeevsDeevs\r\n- Ported `FeeModel` to Rust (#2191), thanks @filipmacek\r\n- Implemented IDs generator for `OrderMatchingEngine` in Rust (#2193), thanks @filipmacek\r\n- Upgraded Cython to v3.1.0a1\r\n- Upgraded `tokio` crate to v1.43.0\r\n- Upgraded `datafusion` crate to v44.0.0\r\n\r\n### Fixes\r\n- Fixed type check for `DataClient` on requests to support clients other than `MarketDataClient`\r\n- Fixed processing trade ticks from bars in `OrderMatchingEngine` - that could result in zero-size trades, thanks for reporting @stefansimik\r\n- Fixed `instrument is None` check flows for `DataEngine` and `PolymarketExecutionClient`\r\n- Fixed instrument updates in `BetfairDataClient` (#2152), thanks @limx0\r\n- Fixed processing of time events on backtest completion when they occur after the final data timestamp\r\n- Fixed missing enum member `CANCELED_MARKET_RESOLVED` for `PolymarketOrderStatus`\r\n- Fixed missing `init_id` field from some order `.to_dict()` representations\r\n- Fixed writing `DYDXOraclePrice` to catalog (#2158), thanks @davidsblom\r\n- Fixed account balance for dYdX (#2167), thanks @davidsblom\r\n- Fixed markets schema for dYdX (#2190), thanks @davidsblom\r\n- Fixed missing `OrderEmulated` and `OrderReleased` Arrow schemas\r\n- Fixed websocket public channel reconnect for Bybit (#2176), thanks @sunlei\r\n- Fixed execution report parsing for Binance Spot (client ord","2025-01-10T04:22:38",{"id":252,"version":253,"summary_zh":254,"released_at":255},101090,"v1.209.0","# NautilusTrader 1.209.0 Beta\n\nReleased on 25th December 2024 (UTC).\n\n### Enhancements\n- Added WebSocket API trading support for Bybit (#2129), thanks @sunlei\n- Added `BybitOrderBookDeltaDataLoader` with tutorial for Bybit backtesting (#2131), thanks @DeevsDeevs\n- Added margin and commission docs (#2128), thanks @stefansimik\n- Added optional `depth` param for some `OrderBook` methods\n- Added trade execution support where trades are processed by the matching engine (can be useful backtesting with throttled book and trades data)\n- Refactored to use `exchange` MIC code as `venue` for instrument IDs with Databento GLBX dataset (#2108, #2121, #2124, #2126), thanks @faysou\n- Refactored to use `self.config` attributes consistently (#2120), thanks @stefansimik\n\n### Internal Improvements\n- Optimized `UUID4::new()` avoiding unnecessary string allocation, achieving a ~2.8x performance improvement (added benches)\n- Upgraded v4-proto for dYdX (#2136), thanks @davidsblom\n- Upgraded `databento` crate to v0.17.0\n\n### Breaking Changes\n- Moved `BinanceOrderBookDeltaDataLoader` from `nautilus_trader.persistence.loaders` to `nautilus_trader.adapters.binance.loaders`\n\n### Fixes\n- Fixed multi-threaded monotonicity for `AtomicTime` in real-time mode\n- Fixed timeout error code for Bybit (#2130), thanks @sunlei\n- Fixed instruments info retrieval for Bybit (#2134), thanks @sunlei\n- Fixed `request_aggregated_bars` metadata handling (#2137), thanks @faysou\n- Fixed demo notebook `backtest_high_level.ipynb` (#2142), thanks @stefansimik\n\n","2024-12-25T12:19:36",{"id":257,"version":258,"summary_zh":259,"released_at":260},101091,"v1.208.0","# NautilusTrader 1.208.0 Beta\r\n\r\nReleased on 15th December 2024 (UTC).\r\n\r\n### Enhancements\r\n- Added specific `params` for data subscriptions and requests which supports Databento `bbo-1s` and `bbo-1m` quotes (#2083, #2094), thanks @faysou\r\n- Added support for `STOP_LIMIT` entry order type for `OrderFactory.bracket(...)`\r\n- Added `.group_bids(...)` and `.group_asks(...)` for `OrderBook`\r\n- Added `.bids_to_dict()` and `.asks_to_dict()` for `OrderBook`\r\n- Added `ShutdownSystem` command and `shutdown_system(...)` method for components (system-wide shutdown for backtest, sandbox, or live environments)\r\n- Added `max_ws_reconnection_tries` to `BybitDataClientConfig` (#2100), thanks @sunlei\r\n- Added additional API functionality for Bybit (#2102), thanks @sunlei\r\n- Added position and execution.fast subscriptions for Bybit (#2104), thanks @sunlei\r\n- Added `max_ws_reconnection_tries` to `BybitExecClientConfig` (#2109), thanks @sunlei\r\n- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `FuturesContract`\r\n- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `FuturesSpread`\r\n- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `OptionsContract`\r\n- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `OptionsSpread`\r\n- Improved Databento symbology support for Interactive Brokers (#2113), thanks @rsmb7z\r\n- Improved support of `STOP_MARKET` and `STOP_LIMIT` orders for dYdX (#2069), thanks @Saransh-Bhandari\r\n- Improved timer validation for `interval_ns` (avoids panicking from Rust)\r\n\r\n### Internal Improvements\r\n- Added `.bids_as_map()` and `.asks_as_map()` for `OrderBook` in Rust\r\n- Added type stubs for `core` subpackage\r\n- Added type stubs for `common` and `model` enums\r\n- Added type stubs for `common.messages`\r\n- Added re-exports and module declarations to enhance code ergonomics and improve import discoverability\r\n- Added subscriptions for block height websocket messages for dYdX (#2085), thanks @davidsblom\r\n- Added sccache in CI (#2093), thanks @sunlei\r\n- Refined `BybitWebSocketClient` private channel authentication (#2101), thanks @sunlei\r\n- Refined `BybitWebSocketClient` subscribe and unsubscribe (#2105), thanks @sunlei\r\n- Refined place order class definitions for Bybit (#2106), thanks @sunlei\r\n- Refined `BybitEnumParser` (#2107), thanks @sunlei\r\n- Refined batch cancel orders for Bybit (#2111), thanks @sunlei\r\n- Upgraded `tokio` crate to v1.42.0\r\n\r\n### Breaking Changes\r\n- Renamed `Level` to `BookLevel` (standardizes order book type naming conventions)\r\n- Renamed `Ladder` to `BookLadder` (standardizes order book type naming conventions)\r\n- Changed `FuturesContract` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)\r\n- Changed `FuturesSpread` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)\r\n- Changed `OptionsContract` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)\r\n- Changed `OptionsSpread` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)\r\n\r\n### Fixes\r\n- Fixed data requests when specifying `end` with no catalog registered (comparison between `pd.Timestamp` and `NoneType`)\r\n- Fixed `BEST_EFFORT_CANCELED` order status report for dYdX (#2082), thanks @davidsblom\r\n- Fixed order handling for `BEST_EFFORT_CANCELED` messages of dYdX (#2095), thanks @davidsblom\r\n- Fixed specifying price for market orders on dYdX (#2088), thanks @davidsblom\r\n- Fixed interest rate curve custom data and interpolation (#2090), thanks @gcheshkov\r\n- Fixed `BybitHttpClient` error handling when not a JSON string (#2096), thanks @sunlei\r\n- Fixed `BybitWebSocketClient` private channel reconnect (#2097), thanks @sunlei\r\n- Fixed incorrect order side use in `BybitExecutionClient` (#2098), thanks @sunlei\r\n- Fixed default `http_base_url` for Bybit (#2110), thanks @sunlei\r\n\r\n","2024-12-15T13:41:15",{"id":262,"version":263,"summary_zh":264,"released_at":265},101092,"v1.207.0","# NautilusTrader 1.207.0 Beta\n\nReleased on 29th November 2024 (UTC).\n\n### Enhancements\n- Implemented mixed catalog data requests with catalog update (#2043), thanks @faysou\n- Added Databento symbology support for Interactive Brokers (#2073), thanks @rsmb7z\n- Added `metadata` parameter for data requests (#2043), thanks @faysou\n- Added `STOP_MARKET` and `STOP_LIMIT` order support for dYdX (#2066), thanks @davidsblom\n- Added `max_reconnection_tries` to data client config for dYdX (#2066), thanks @davidsblom\n- Added wallet subscription for Bybit (#2076), thanks @sunlei\n- Added docs clarity on loading historical bars (#2078), thanks @dodofarm\n- Added `price_precision` optional parameter for `DatabentoDataLoader` methods\n- Improved `Cache` behavior when adding more recent quotes, trades, or bars (now adds to cache)\n\n### Internal Improvements\n- Ported `Portfolio` and `AccountManager` to Rust (#2058), thanks @Pushkarm029\n- Implemented `AsRef\u003Cstr>` for `Price`, `Money`, and `Currency`\n- Improved expired timer cleanup in clocks (#2064), thanks @twitu\n- Improved live engines error logging (will now log all exceptions rather than just `RuntimeError`)\n- Improved symbol normalization for Tardis\n- Improved historical bar request performance for Tardis\n- Improved `TradeId` Debug implementation to display value as proper UTF-8 string\n- Refined `HttpClient` for use directly from Rust\n- Refined Databento decoder (removed currency hard coding and use of `unsafe`)\n- Upgraded `datafusion` crate to v43.0.0 (#2056), thanks @twitu\n\n### Breaking Changes\n- Renamed `TriggerType.LAST_TRADE` to `LAST_PRICE` (more conventional terminology)\n\n### Fixes\n- Fixed missing venue -> exchange mappings for Tardis integration\n- Fixed account balance and order status parsing for dYdX (#2067), thanks @davidsblom\n- Fixed parsing best effort opened order status for dYdX (#2068), thanks @davidsblom\n- Fixed occasionally incorrect `price_precision`, `multiplier` and `lot_size` decoding for Databento instruments\n- Fixed missing Arrow schemas for instrument deserialization\n- Reconcile order book for dYdX when inconsistent (#2077), thanks @davidsblom\n\n","2024-11-29T11:35:27",{"id":267,"version":268,"summary_zh":269,"released_at":270},101093,"v1.206.0","# NautilusTrader 1.206.0 Beta\r\n\r\nReleased on 17th November 2024 (UTC).\r\n\r\n### Enhancements\r\n- Added `TardisDataClient` providing live data streams from a Tardis Machine WebSocket server\r\n- Added `TardisInstrumentProvider` providing instrument definitions from Tardis through the HTTP instrument metadata API\r\n- Added `Portfolio.realized_pnl(...)` method for per instrument realized PnL (based on positions)\r\n- Added `Portfolio.realized_pnls(...)` method for per venue realized PnL (based on positions)\r\n- Added configuration warning for `InstrumentProvider` (to warn when node starts with no instrument loading)\r\n- Implemented Tardis optional [symbol normalization](https:\u002F\u002Fnautilustrader.io\u002Fdocs\u002Fnightly\u002Fintegrations\u002Ftardis\u002F#symbology-and-normalization)\r\n- Implemented `WebSocketClient` reconnection retries (#2044), thanks @davidsblom\r\n- Implemented `OrderCancelRejected` event generation for Binance and Bybit\r\n- Implemented `OrderModifyRejected` event generation for Binance and Bybit\r\n- Improved `OrderRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)\r\n- Improved `OrderCancelRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)\r\n- Improved `OrderModifyRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)\r\n\r\n### Internal Improvements\r\n- Ported `RiskEngine` to Rust (#2035), thanks @Pushkarm029 and @twitu\r\n- Ported `ExecutionEngine` to Rust (#2048), thanks @twitu\r\n- Added globally shared data channels to send events from engines to Runner in Rust (#2042), thanks @twitu\r\n- Added LRU caching for dYdX HTTP client (#2049), thanks @davidsblom\r\n- Improved identifier constructors to take `AsRef\u003Cstr>` for a cleaner more flexible API\r\n- Refined identifiers `From` trait impls\r\n- Refined `InstrumentProvider` initialization behavior and logging\r\n- Refined `LiveTimer` cancel and performance testing\r\n- Simplified `LiveTimer` cancellation model (#2046), thanks @twitu\r\n- Refined Bybit HMAC authentication signatures (now using Rust implemented function)\r\n- Refined Tardis instrument ID parsing\r\n- Removed Bybit `msgspec` redundant import alias (#2050), thanks @sunlei\r\n- Upgraded `databento` crate to v0.16.0\r\n\r\n### Breaking Changes\r\nNone\r\n\r\n### Fixes\r\n- Fixed loading specific instrument IDs for `InstrumentProviderConfig`\r\n- Fixed PyO3 instrument conversions for `raw_symbol` (was incorrectly using the normalized symbol)\r\n- Fixed reconcile open orders and account websocket message for dYdX (#2039), thanks @davidsblom\r\n- Fixed market order `avg_px` for Polymarket trade reports\r\n- Fixed Betfair clients keepalive (#2040), thanks @limx0\r\n- Fixed Betfair reconciliation (#2041), thanks @limx0\r\n- Fixed Betfair customer order ref limit to 32 chars\r\n- Fixed Bybit handling of `PARTIALLY_FILLED_CANCELED` status orders\r\n- Fixed Polymarket size precision for `BinaryOption` instruments (precision 6 to match USDC.e)\r\n- Fixed adapter instrument reloading (providers were not reloading instruments at the configured interval due to internal state flags)\r\n- Fixed static time logging for `BacktestEngine` when running with `use_pyo3` logging config\r\n- Fixed in-flight orders check and improve error handling (#2053), thanks @davidsblom\r\n- Fixed dYdX handling for liquidated fills (#2052), thanks @davidsblom\r\n- Fixed `BybitResponse.time` field as optional `int` (#2051), thanks @sunlei\r\n- Fixed single instrument requests for `DatabentoDataClient` (was incorrectly calling `_handle_instruments` instead of `_handle_instrument`), thanks for reporting @Emsu\r\n- Fixed `fsspec` recursive globbing behavior to ensure only file paths are included, and bumped dependency to version 2024.10.0\r\n- Fixed jupyterlab url typo (#2057), thanks @Alsheh\r\n\r\n","2024-11-17T08:56:25",{"id":272,"version":273,"summary_zh":274,"released_at":275},101094,"v1.205.0","# NautilusTrader 1.205.0 Beta\r\n\r\nReleased on 3rd November 2024 (UTC).\r\n\r\n### Enhancements\r\n- Added Tardis Machine and HTTP API integration in Python and Rust\r\n- Added `LiveExecEngineConfig.open_check_interval_secs` config option to actively reconcile open orders with the venue\r\n- Added aggregation of bars from historical data (#2002), thanks @faysou\r\n- Added monthly and weekly bar aggregations (#2025), thanks @faysou\r\n- Added `raise_exception` optional parameter to `TradingNode.run` (#2021), thanks @faysou\r\n- Added `OrderBook.get_avg_px_qty_for_exposure` in Rust (#1893), thanks @elementace\r\n- Added timeouts to Interactive Brokers adapter configurations (#2026), thanks @rsmb7z\r\n- Added optional time origins for time bar aggregation (#2028), thanks @faysou\r\n- Added Polymarket position status reports and order status report generation based on fill reports\r\n- Added USDC.e (PoS) currency (used by Polymarket) to internal currency map\r\n- Upgraded Polymarket WebSocket API to new version\r\n\r\n### Internal Improvements\r\n- Ported analysis subpackage to Rust (#2016), thanks @Pushkarm029\r\n- Improved Postgres testing (#2018), thanks @filipmacek\r\n- Improved Redis version parsing to support truncated versions (improves compatibility with Redis-compliant databases)\r\n- Refined Arrow serialization (record batch functions now also available in Rust)\r\n- Refined core `Bar` API to remove unnecessary unwraps\r\n- Standardized network client logging\r\n- Fixed all pyo3 deprecations for API breaking changes\r\n- Fixed all clippy warning lints for PyO3 changes (#2030), thanks @Pushkarm029\r\n- PyO3 upgrade refactor and repair catalog tests (#2032), thanks @twitu\r\n- Upgraded `pyo3` crate to v0.22.5\r\n- Upgraded `pyo3-async-runtimes` crate to v0.22.0\r\n- Upgraded `tokio` crate to v1.41.0\r\n\r\n### Breaking Changes\r\n- Removed pyo3 `DataTransformer` (was being used for namespacing, so refactored to separate functions)\r\n- Moved `TEST_DATA_DIR` constant from `tests` to `nautilus_trader` package (#2020), thanks @faysou\r\n\r\n### Fixes\r\n- Fixed use of Redis `KEYS` command which, is unsupported in cluster environments (replaced with `SCAN` for compatibility)\r\n- Fixed decoding fill HTTP messages for dYdX (#2022), thanks @davidsblom\r\n- Fixed account balance report for dYdX (#2024), thanks @davidsblom\r\n- Fixed Interactive Brokers market data client subscription log message (#2012), thanks @marcodambros\r\n- Fixed Polymarket execution reconciliation (was not able to reconcile from closed orders)\r\n- Fixed catalog query mem leak test (#2031), thanks @Pushkarm029\r\n- Fixed `OrderInitialized.to_dict()` `tags` value type to `list[str]` (was a concatenated `str`)\r\n- Fixed `OrderInitialized.to_dict()` `linked_order_ids` value type to `list[str]` (was a concatenated `str`)\r\n- Fixed Betfair clients shutdown (#2037), thanks @limx0\r\n\r\n","2024-11-03T17:50:20"]