v1.208.0

nautechsystems/nautilus_traderv1.208.0Dec 15, 2024by github-actions[bot]

AI Summary

This release adds specific parameters for Databento BBO quotes, STOP_LIMIT support for bracket orders, and `ShutdownSystem` command. It also standardizes order book naming and adds margin parameters to contract types.

Key Highlights

  • Added specific `params` for Databento BBO quotes (bbo-1s, bbo-1m)
  • Added `STOP_LIMIT` entry order type support for `OrderFactory.bracket`
  • Added `ShutdownSystem` command for system-wide shutdown
  • Renamed `Level` to `BookLevel` and `Ladder` to `BookLadder`

Breaking Changes

  • Renamed `Level` to `BookLevel`
  • Renamed `Ladder` to `BookLadder`
  • Changed `FuturesContract`, `FuturesSpread`, `OptionsContract`, and `OptionsSpread` Arrow schemas to include margin parameters

New Features

  • Added `params` for data subscriptions supporting Databento BBO
  • Added `.group_bids` and `.group_asks` methods to `OrderBook`
  • Added `.bids_to_dict` and `.asks_to_dict` methods to `OrderBook`
  • Added `ShutdownSystem` command and `shutdown_system` method
  • Added `max_ws_reconnection_tries` to Bybit configs
  • Added margin parameters (`margin_init`, `margin_maint`, maker/taker fees) to contract types
  • Added Databento symbology support for Interactive Brokers
  • Improved support for STOP_MARKET and STOP_LIMIT orders for dYdX

Full Release Notes

# NautilusTrader 1.208.0 Beta

Released on 15th December 2024 (UTC).

### Enhancements
- Added specific `params` for data subscriptions and requests which supports Databento `bbo-1s` and `bbo-1m` quotes (#2083, #2094), thanks @faysou
- Added support for `STOP_LIMIT` entry order type for `OrderFactory.bracket(...)`
- Added `.group_bids(...)` and `.group_asks(...)` for `OrderBook`
- Added `.bids_to_dict()` and `.asks_to_dict()` for `OrderBook`
- Added `ShutdownSystem` command and `shutdown_system(...)` method for components (system-wide shutdown for backtest, sandbox, or live environments)
- Added `max_ws_reconnection_tries` to `BybitDataClientConfig` (#2100), thanks @sunlei
- Added additional API functionality for Bybit (#2102), thanks @sunlei
- Added position and execution.fast subscriptions for Bybit (#2104), thanks @sunlei
- Added `max_ws_reconnection_tries` to `BybitExecClientConfig` (#2109), thanks @sunlei
- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `FuturesContract`
- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `FuturesSpread`
- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `OptionsContract`
- Added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee` params and attributes for `OptionsSpread`
- Improved Databento symbology support for Interactive Brokers (#2113), thanks @rsmb7z
- Improved support of `STOP_MARKET` and `STOP_LIMIT` orders for dYdX (#2069), thanks @Saransh-Bhandari
- Improved timer validation for `interval_ns` (avoids panicking from Rust)

### Internal Improvements
- Added `.bids_as_map()` and `.asks_as_map()` for `OrderBook` in Rust
- Added type stubs for `core` subpackage
- Added type stubs for `common` and `model` enums
- Added type stubs for `common.messages`
- Added re-exports and module declarations to enhance code ergonomics and improve import discoverability
- Added subscriptions for block height websocket messages for dYdX (#2085), thanks @davidsblom
- Added sccache in CI (#2093), thanks @sunlei
- Refined `BybitWebSocketClient` private channel authentication (#2101), thanks @sunlei
- Refined `BybitWebSocketClient` subscribe and unsubscribe (#2105), thanks @sunlei
- Refined place order class definitions for Bybit (#2106), thanks @sunlei
- Refined `BybitEnumParser` (#2107), thanks @sunlei
- Refined batch cancel orders for Bybit (#2111), thanks @sunlei
- Upgraded `tokio` crate to v1.42.0

### Breaking Changes
- Renamed `Level` to `BookLevel` (standardizes order book type naming conventions)
- Renamed `Ladder` to `BookLadder` (standardizes order book type naming conventions)
- Changed `FuturesContract` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)
- Changed `FuturesSpread` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)
- Changed `OptionsContract` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)
- Changed `OptionsSpread` Arrow schema (added `margin_init`, `margin_maint`, `maker_fee`, `taker_fee`)

### Fixes
- Fixed data requests when specifying `end` with no catalog registered (comparison between `pd.Timestamp` and `NoneType`)
- Fixed `BEST_EFFORT_CANCELED` order status report for dYdX (#2082), thanks @davidsblom
- Fixed order handling for `BEST_EFFORT_CANCELED` messages of dYdX (#2095), thanks @davidsblom
- Fixed specifying price for market orders on dYdX (#2088), thanks @davidsblom
- Fixed interest rate curve custom data and interpolation (#2090), thanks @gcheshkov
- Fixed `BybitHttpClient` error handling when not a JSON string (#2096), thanks @sunlei
- Fixed `BybitWebSocketClient` private channel reconnect (#2097), thanks @sunlei
- Fixed incorrect order side use in `BybitExecutionClient` (#2098), thanks @sunlei
- Fixed default `http_base_url` for Bybit (#2110), thanks @sunlei