v1.191.0
nautechsystems/nautilus_traderv1.191.0Apr 20, 2024by github-actions[bot]
AI Summary
This release focuses on fee models, standardization, and a major consolidation of the `OrderBook` design in Rust. It introduces new serialization types and standardizes adapter client logging.
Key Highlights
- Implemented FeeModel including FixedFeeModel and MakerTakerFeeModel.
- Consolidated `OrderBookMbo` and `OrderBookMbp` into a single `OrderBook`.
- Reordered `OrderBookDelta` and `OrderBook` params for clarity.
Breaking Changes
- Reordered `OrderBookDelta` params `flags` and `sequence` and removed default 0 values
- Reordered `OrderBook` params `flags` and `sequence` and removed default 0 values
- Added `flags` parameter to `OrderBook.add`
- Added `flags` parameter to `OrderBook.update`
- Added `flags` parameter to `OrderBook.delete`
- Changed Arrow schema for all instruments: added `info` binary field
- Changed Arrow schema for `CryptoFuture`: added `is_inverse` boolean field
- Renamed both `OrderBookMbo` and `OrderBookMbp` to `OrderBook` (consolidated)
- Renamed `Indicator.handle_book_mbo` and `Indicator.handle_book_mbp` to `handle_book` (consolidated)
- Renamed `register_serializable_object` to `register_serializable_type`
New Features
- Implemented `FeeModel` including `FixedFeeModel` and `MakerTakerFeeModel`
- Implemented `TradeTickDataWrangler.process_bar_data`
- Implemented multiple timeframe bar execution (will use lowest timeframe per instrument)
- Standardized adapter client logging
- Simplified and consolidated Rust `OrderBook` design
- Ported Bias indicator to Rust
Full Release Notes
# NautilusTrader 1.191.0 Beta Released on 20th April 2024 (UTC). ### Enhancements - Implemented `FeeModel` including `FixedFeeModel` and `MakerTakerFeeModel` (#1584), thanks @rsmb7z - Implemented `TradeTickDataWrangler.process_bar_data` (#1585), thanks @rsmb7z - Implemented multiple timeframe bar execution (will use lowest timeframe per instrument) - Optimized `LiveTimer` efficiency and accuracy with `tokio` timer under the hood - Optimized `QuoteTickDataWrangler` and `TradeTickDataWrangler` (#1590), thanks @rsmb7z - Standardized adapter client logging (handle more logging from client base classes) - Simplified and consolidated Rust `OrderBook` design - Improved `CacheDatabaseAdapter` graceful close and thread join - Improved `MessageBus` graceful close and thread join - Improved `modify_order` error logging when order values remain unchanged - Added `RecordFlag` enum for Rust and Python - Interactive Brokers further improvements and fixes, thanks @rsmb7z - Ported Bias indicator to Rust, thanks @Pushkarm029 ### Breaking Changes - Reordered `OrderBookDelta` params `flags` and `sequence` and removed default 0 values (more explicit and less chance of mismatches) - Reordered `OrderBook` params `flags` and `sequence` and removed default 0 values (more explicit and less chance of mismatches) - Added `flags` parameter to `OrderBook.add` - Added `flags` parameter to `OrderBook.update` - Added `flags` parameter to `OrderBook.delete` - Changed Arrow schema for all instruments: added `info` binary field - Changed Arrow schema for `CryptoFuture`: added `is_inverse` boolean field - Renamed both `OrderBookMbo` and `OrderBookMbp` to `OrderBook` (consolidated) - Renamed `Indicator.handle_book_mbo` and `Indicator.handle_book_mbp` to `handle_book` (consolidated) - Renamed `register_serializable_object` to `register_serializable_type` (also renames first param from `obj` to `cls`) ### Fixes - Fixed `MessageBus` pattern resolving (fixes a performance regression where topics published with no subscribers would always re-resolve) - Fixed `BacktestNode` streaming data management (was not clearing between chunks), thanks for the report @dpmabo - Fixed `RiskEngine` cumulative notional calculations for margin accounts (was incorrectly using base currency when selling) - Fixed selling `Equity` instruments with `CASH` account and `NETTING` OMS incorrectly rejecting (should be able to reduce position) - Fixed Databento bars decoding (was incorrectly applying display factor) - Fixed `Binance` bar (kline) to use `close_time` for `ts_event` was `opentime` (#1591), thanks for reporting @OnlyC - Fixed `AccountMarginExceeded` error condition (margin must actually be exceeded now, and can be zero) - Fixed `ParquetDataCatalog` path globbing which was including all paths with substrings of specified instrument IDs