v1.199.0

nautechsystems/nautilus_traderv1.199.0Aug 19, 2024by github-actions[bot]

AI Summary

Enhanced live reconciliation robustness, added LogLevel::TRACE (Rust), and improved Binance HEDGE mode support.

Key Highlights

  • Added LiveExecEngineConfig.generate_missing_orders reconciliation option.
  • Added LogLevel::TRACE support (Rust only).
  • Added Binance Futures support for HEDGE mode.

Breaking Changes

  • Changed VolumeWeightedAveragePrice calculation formula.
  • Changed OptionsContract constructor parameter ordering.
  • Renamed snapshot_positions_interval to snapshot_positions_interval_secs.
  • Moved snapshot configs to ExecEngineConfig.

New Features

  • generate_missing_orders option
  • Actor.subscribe_signal method
  • on_signal(signal) handler
  • Improved error modeling in Rust

Full Release Notes

# NautilusTrader 1.199.0 Beta

Released on 19th August 2024 (UTC).

### Enhancements
- Added `LiveExecEngineConfig.generate_missing_orders` reconciliation config option to align internal and external position states
- Added `LogLevel::TRACE` (only available in Rust for debug/development builds)
- Added `Actor.subscribe_signal(...)` method and `Data.is_signal(...)` class method (#1853), thanks @faysou
- Added Binance Futures support for `HEDGE` mode (#1846), thanks @DevRoss
- Overhauled and refined error modeling and handling in Rust (#1849, #1858), thanks @twitu
- Improved `BinanceExecutionClient` position report requests (can now filter by instrument and includes reporting for flat positions)
- Improved `BybitExecutionClient` position report requests (can now filter by instrument and includes reporting for flat positions)
- Improved `LiveExecutionEngine` reconciliation robustness and recovery when internal positions do not match external positions
- Improved `@customdataclass` decorator constructor to allow more positional arguments (#1850), thanks @faysou
- Improved `@customdataclass` documentation (#1854), thanks @faysou
- Upgraded `datafusion` crate to v41.0.0
- Upgraded `tokio` crate to v1.39.3
- Upgraded `uvloop` to v0.20.0 (upgrades libuv to v1.48.0)

### Breaking Changes
- Changed `VolumeWeightedAveragePrice` calculation formula to use each bars "typical" price (#1842), thanks @evgenii-prusov
- Changed `OptionsContract` constructor parameter ordering and Arrow schema (consistently group option kind and strike price)
- Renamed `snapshot_positions_interval` to `snapshot_positions_interval_secs` (more explicitly indicates time units)
- Moved `snapshot_orders` config setting to `ExecEngineConfig` (can now be used for all environment contexts)
- Moved `snapshot_positions` config setting to `ExecEngineConfig` (can now be used for all environment contexts)
- Moved `snapshot_positions_interval_secs` config setting to `ExecEngineConfig` (can now be used for all environment contexts)

### Fixes
- Fixed `Position` exception type on duplicate fill (should be `KeyError` to align with the same error for `Order`)
- Fixed Bybit position report parsing when position is flat (`BybitPositionSide` now correctly handles the empty string)