v1.224.0
ekwek1/sopranov1.224.0Mar 3, 2026by github-actions[bot]
AI Summary
A comprehensive beta release adding support for multiple exchanges (BitMEX, OKX, Hyperliquid, etc.), enhancing matching engine capabilities, and improving security through auditing and credential zeroization.
Key Highlights
- Added BitMEX grid market maker and dead man's switch support
- Added OKX trailing stop and algo order amend support
- Added Hyperliquid order modify support
- Enhanced security with pip-audit, Docker image signing (cosign), and SBOM generation
- Removed deprecated Coinbase International and Binance Ed25519 adapters
Breaking Changes
- Removed Coinbase International (COINBASE_INTX) adapter
- Removed Binance BINANCE_ED25519_* env vars for Spot/Margin
- Removed Hyperliquid builder_fee_refresh_mins config option
- Removed Polymarket orderbook and price history methods
New Features
- Synthetic book support for binary markets
- get_target_px_for_quantity method on OrderBook
- Betfair batch submit and cancel order support
- Databento skip_on_error flag for load_instruments
- Hyperliquid order modify support
Full Release Notes
# NautilusTrader 1.224.0 Beta Released on 3rd March 2026 (UTC). ### Enhancements - Added matching engine L1 quote-based queue position tracking for backtests - Added `fill_limit_inside_spread` to `FillModel` and `MatchingCore` for at-or-inside-spread limit fill control - Added synthetic book support for binary markets (#3495), thanks @Javdu10 - Added `get_target_px_for_quantity` method on `OrderBook` (#3627), thanks @Javdu10 - Added Betfair batch submit and cancel order support - Added BitMEX dead man's switch (cancelAllAfter) support (Rust and Python) - Added BitMEX grid market maker example (Rust) - Added BitMEX instrument status subscription support (Rust and Python) - Added Bybit book snapshot and funding rate request support (Rust) - Added Databento `skip_on_error` flag for `load_instruments` to skip unparsable definitions (#3657), thanks for reporting @davidsblom - Added Deribit instrument status subscription support (Rust and Python) - Added dYdX instrument status subscription support (Rust and Python) - Added Hyperliquid order modify support (Rust and Python) - Added OKX trailing stop market order support (Rust and Python) - Added OKX algo order amend support (Rust and Python) - Added OKX instrument status updates from WebSocket instruments channel (Rust) - Added OKX index price subscriptions with base-pair remapping to derivatives (Rust) - Added OKX book snapshot and funding rate request support (Rust) - Removed Hyperliquid builder fee charges (builder-fee approval no longer required) ### Breaking Changes - Removed Coinbase International (`COINBASE_INTX`) adapter, see RFC (#3555) - Removed Binance `BINANCE_ED25519_*` env vars for Spot/Margin (use `BINANCE_API_KEY`/`BINANCE_API_SECRET`; Futures deprecated with warning) - Removed Hyperliquid `builder_fee_refresh_mins` config option (builder fees no longer charged) - Removed Polymarket `fetch_orderbook_history`, `load_orderbook_snapshots`, `fetch_price_history` and related methods (endpoints decommissioned, #3635) ### Security - Added `pip-audit` to security audit pipeline - Added Docker image cosign signing and SBOM generation - Standardized credential zeroization across all adapters (`Ustr` replaced with `Box<str>` for API keys) - Standardized secret redaction in `Debug` impls across all adapter credentials - Updated `SECURITY.md` with expanded scope, reporting guidelines, and responsible disclosure policy - Bumped all eligible GitHub Actions pinned SHAs to latest versions (2-week release policy) ### Fixes - Fixed matching engine applying order book deltas for L1 books (#3615), thanks @maksym-mikheienko - Fixed streaming backtest producing dummy bars past batch data exhaustion (#3628), thanks for reporting @cauta - Fixed `OrderEmulator` trailing stop activation ignoring `LAST_PRICE` trigger type (#3629), thanks for reporting @HaakonFlaaronning - Fixed `LiveExecEngine` position reconciliation infinite loop when venue reports flat (#3622), thanks for reporting @mrbaron3 - Fixed `CryptoOption` instrument pyo3 transform for (#3626), thanks @davidsblom - Fixed `StreamingFeatherWriter` duplicate events from multiple message bus topics (#3625), thanks for reporting @fomotoshi - Fixed `VolumeImbalanceBarAggregator` and `VolumeRunsBarAggregator` integer overflow for step >= 923 in high-precision mode (#3658), thanks for reporting @honvl - Fixed `InstrumentProvider` `load_ids_async` loading all instruments instead of filtering to requested IDs (affected dYdX, Kraken, AX, Hyperliquid) - Fixed Python WS callbacks running off asyncio event-loop thread in Rust adapters (#3653), thanks for reporting @camilorodegheri - Fixed Binance Futures algo order serde field renames for WS and HTTP parsing (#3624), thanks for reporting @qu1zzyboy - Fixed Binance silent HMAC fallback when using encrypted Ed25519 PEM keys (now warns) - Fixed BinanceSymbol COIN-M perpetual symbol conversion (#3641), thanks @YeeTsai - Fixed Binance algo order cancellation parsing (#3646), thanks @qu1zzyboy - Fixed Binance Spot testnet WebSocket API URL (#3661), thanks @penguinwokrs - Fixed Hyperliquid stop/trigger order price derivation (#3611), thanks for reporting @h-tsun3 - Fixed Hyperliquid price normalization and inner error detection (#3612), thanks for reporting @h-tsun3 - Fixed Interactive Brokers BarType/str comparison in get_historical_bars (#3616), thanks @powerseed - Fixed Interactive Brokers historical bar processing crash (#3619), thanks @shzhng - Fixed Interactive Brokers contract details parsing (#3638), thanks @davidsblom - Fixed Kraken Spot and Futures execution clients not loading instruments during connect (#3644), thanks for reporting @husariancom - Fixed Kraken Spot execution client HTTP client created without credentials (#3650), thanks for reporting @husariancom - Fixed Kraken sequential `ClientOrderId` exceeding `cl_ord_id` 18-char free-text limit (#3651), thanks for reporting @husariancom - Fixed Kraken missing account state registration during connect (#3652), thanks for reporting @husariancom - Fixed Polymarket Gamma API `load_ids` path skipping sibling tokens (#3654), thanks for reporting @likenji - Fixed Polymarket loader to use Data API trades instead of decommissioned orderbook/price history endpoints (#3635), thanks for reporting @JSai23 - Fixed Binance Spot testnet WebSocket API URL (legacy URL removed by Binance in May 2025) (#3660) - Fixed pre-commit hooks portability for Windows (#3617), thanks for reporting @powerseed - Fixed `LiveNode` startup `RefCell` panic when execution reports arrive during `connect()` - Fixed dYdX new instrument discovery flooding logs with inactive/delisted markets - Fixed dYdX fills and orders API requests missing required `marketType` parameter ### Internal Improvements - Added catalog deduplication functionality (#3613), thanks @ms32035 - Extracted common SBE decoder to `nautilus-serialization` crate - Implemented `BacktestNode` with catalog streaming in Rust - Improved `OrderBookImbalance` example strategy - Improved `BestPriceFillModel` to fill inside bid ask spread (#3428), thanks @faysou - Standardized use of atomic clock across adapters - Standardized adapter credentials handling and testing - Refined build script for Windows (#3636), thanks @faysou - Optimized matching engine `_seed_trade_consumption` to use range-bounded FFI queries for deep books - Optimized backtest engine settle loop to avoid Python list allocation on idle ticks - Optimized `MatchingCore.iterate` to avoid list concatenation on every call - Upgraded `databento` crate to v0.42.0 - Upgraded `datafusion` crate to v52.2.0 ### Documentation Updates - Added AX Exchange gold perps book imbalance tutorial - Added AX Exchange spot FX bars mean reversion tutorial - Added BitMEX grid market maker tutorial - Added adapter data and execution testing specifications - Added order book concepts documentation - Improved backtesting mermaid diagram and tutorial formatting