v1.179.0
nautechsystems/nautilus_traderv1.179.0Oct 22, 2023by github-actions[bot]
AI Summary
A major feature is the ParquetDataCatalog version 2, which supports built-in data types and includes Strategy-specific event handlers.
Key Highlights
- Added ParquetDataCatalog v2 supporting built-in data types
- Added Strategy specific order and position event handlers
- Added Controller for dynamic actor and strategy control
- Added ReportProvider.generate_fills_report
Breaking Changes
- Renamed BookType.L1_TBBO to BookType.L1_MBP
- Renamed VenueStatusUpdate to VenueStatus
- Moved manage_gtd_expiry to StrategyConfig
New Features
- ParquetDataCatalog v2
- Strategy event handlers
- Dynamic Controller
- Fills report generator
Full Release Notes
# NautilusTrader 1.179.0 Beta Released on 22nd October 2023 (UTC). A major feature of this release is the `ParquetDataCatalog` version 2, which represents months of collective effort thanks to contributions from Brad @limx0, @twitu, @ghill2 and @davidsblom. This will be the final release with support for Python 3.9. ### Enhancements - Added `ParquetDataCatalog` v2 supporting built-in data types `OrderBookDelta`, `QuoteTick`, `TradeTick` and `Bar` - Added `Strategy` specific order and position event handlers - Added `ExecAlgorithm` specific order and position event handlers - Added `Cache.is_order_pending_cancel_local(...)` (tracks local orders in cancel transition) - Added `BinanceTimeInForce.GTD` enum member (futures only) - Added Binance Futures support for GTD orders - Added Binance internal bar aggregation inference from aggregated trade ticks or 1-MINUTE bars (depending on lookback window) - Added `BinanceExecClientConfig.use_gtd` option (to remap to GTC and locally manage GTD orders) - Added package version check for `nautilus_ibapi`, thanks @rsmb7z - Added `RiskEngine` min/max instrument notional limit checks - Added `Controller` for dynamically controlling actor and strategy instances for a `Trader` - Added `ReportProvider.generate_fills_report(...)` which provides a row per individual fill event, thanks @r3k4mn14r - Moved indicator registration and data handling down to `Actor` (now available for `Actor`) - Implemented Binance `WebSocketClient` live subscribe and unsubscribe - Implemented `BinanceCommonDataClient` retries for `update_instruments` - Decythonized `Trader` ### Breaking Changes - Renamed `BookType.L1_TBBO` to `BookType.L1_MBP` (more accurate definition, as L1 is the top-level price either side) - Renamed `VenueStatusUpdate` -> `VenueStatus` - Renamed `InstrumentStatusUpdate` -> `InstrumentStatus` - Renamed `Actor.subscribe_venue_status_updates(...)` to `Actor.subscribe_venue_status(...)` - Renamed `Actor.subscribe_instrument_status_updates(...)` to `Actor.subscribe_instrument_status(...)` - Renamed `Actor.unsubscribe_venue_status_updates(...)` to `Actor.unsubscribe_venue_status(...)` - Renamed `Actor.unsubscribe_instrument_status_updates(...)` to `Actor.unsubscribe_instrument_status(...)` - Renamed `Actor.on_venue_status_update(...)` to `Actor.on_venue_status(...)` - Renamed `Actor.on_instrument_status_update(...)` to `Actor.on_instrument_status(...)` - Changed `InstrumentStatus` fields/schema and constructor - Moved `manage_gtd_expiry` from `Strategy.submit_order(...)` and `Strategy.submit_order_list(...)` to `StrategyConfig` (simpler and allows re-activiting any GTD timers on start) ### Fixes - Fixed `LimitIfTouchedOrder.create` (exec_algorithm_params were not being passed in) - Fixed `OrderEmulator` start-up processing of OTO contingent orders (when position from parent is open) - Fixed `SandboxExecutionClientConfig` `kw_only=True` to allow importing without initializing - Fixed `OrderBook` pickling (did not include all attributes), thanks @limx0 - Fixed open position snapshots race condition (added `open_only` flag) - Fixed `Strategy.cancel_order` for orders in `INITIALIZED` state and with an `emulation_trigger` (was not sending command to `OrderEmulator`) - Fixed `BinanceWebSocketClient` reconnect behavior (reconnect handler was not being called due event loop issue from Rust) - Fixed Binance instruments missing max notional values, thanks for reporting @AnthonyVince and thanks for fixing @filipmacek - Fixed Binance Futures fee rates for backtesting - Fixed `Timer` missing condition check for non-positive intervals - Fixed `Condition` checks involving integers, was previously defaulting to 32-bit and overflowing - Fixed `ReportProvider.generate_order_fills_report(...)` which was missing partial fills for orders not in a final `FILLED` status, thanks @r3k4mn14r