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
ParquetDataCatalogv2 supporting built-in data typesOrderBookDelta,QuoteTick,TradeTickandBar - Added
Strategyspecific order and position event handlers - Added
ExecAlgorithmspecific order and position event handlers - Added
Cache.is_order_pending_cancel_local(...)(tracks local orders in cancel transition) - Added
BinanceTimeInForce.GTDenum 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_gtdoption (to remap to GTC and locally manage GTD orders) - Added package version check for
nautilus_ibapi, thanks @rsmb7z - Added
RiskEnginemin/max instrument notional limit checks - Added
Controllerfor dynamically controlling actor and strategy instances for aTrader - 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 forActor) - Implemented Binance
WebSocketClientlive subscribe and unsubscribe - Implemented
BinanceCommonDataClientretries forupdate_instruments - Decythonized
Trader
Breaking Changes
- Renamed
BookType.L1_TBBOtoBookType.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(...)toActor.subscribe_venue_status(...) - Renamed
Actor.subscribe_instrument_status_updates(...)toActor.subscribe_instrument_status(...) - Renamed
Actor.unsubscribe_venue_status_updates(...)toActor.unsubscribe_venue_status(...) - Renamed
Actor.unsubscribe_instrument_status_updates(...)toActor.unsubscribe_instrument_status(...) - Renamed
Actor.on_venue_status_update(...)toActor.on_venue_status(...) - Renamed
Actor.on_instrument_status_update(...)toActor.on_instrument_status(...) - Changed
InstrumentStatusfields/schema and constructor - Moved
manage_gtd_expiryfromStrategy.submit_order(...)andStrategy.submit_order_list(...)toStrategyConfig(simpler and allows re-activiting any GTD timers on start)
Fixes
- Fixed
LimitIfTouchedOrder.create(exec_algorithm_params were not being passed in) - Fixed
OrderEmulatorstart-up processing of OTO contingent orders (when position from parent is open) - Fixed
SandboxExecutionClientConfigkw_only=Trueto allow importing without initializing - Fixed
OrderBookpickling (did not include all attributes), thanks @limx0 - Fixed open position snapshots race condition (added
open_onlyflag) - Fixed
Strategy.cancel_orderfor orders inINITIALIZEDstate and with anemulation_trigger(was not sending command toOrderEmulator) - Fixed
BinanceWebSocketClientreconnect 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
Timermissing condition check for non-positive intervals - Fixed
Conditionchecks 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 finalFILLEDstatus, thanks @r3k4mn14r