v1.172.0

nautechsystems/nautilus_traderv1.172.0Apr 30, 2023by github-actions[bot]

AI Summary

This release refactors naming conventions to remove ambiguity (renaming `Future` and `Option` instruments) and introduces new execution algorithms while removing legacy data backends.

Key Highlights

  • Renamed `Future` instrument to `FuturesContract` and `Option` to `OptionsContract`.
  • Added `TWAPExecAlgorithm` and `TWAPExecAlgorithmConfig`.
  • Removed legacy Rust parquet data catalog backend.
  • Added `external_order_claims` config option for `StrategyConfig`.
  • Reinstated hours and minutes time component for default order and position IDs.

Breaking Changes

  • Removed legacy Rust parquet data catalog backend.
  • Removed Binance config for `clock_sync_interval_secs`.
  • Removed redundant rate limiting from Rust logger.
  • Renamed `Future` to `FuturesContract`.
  • Renamed `Option` to `OptionsContract`.
  • Reinstate hours and minutes time component for default order and position identifiers.

New Features

  • Added new DataFusion Rust parquet data catalog backend.
  • Added `Order.signed_decimal_qty()`.
  • Added `Cache.orders_for_exec_algorithm(...)` and `Cache.orders_for_exec_spawn(...)`.
  • Define public API for instruments, orders, and orderbook (denest namespace).
  • Now stripping debug symbols after build.

Full Release Notes

# NautilusTrader 1.172.0 Beta

Released on 30th April 2023 (UTC).

### Breaking Changes
- Removed legacy Rust parquet data catalog backend (based on arrow2)
- Removed Binance config for `clock_sync_interval_secs` (redundant/unused and should be handled at system level)
- Removed redundant rate limiting from Rust logger (and associated `rate_limit` config params)
- Renamed `Future` instrument to `FuturesContract` (avoids ambiguity)
- Renamed `Option` instrument to `OptionsContract` (avoids ambiguity and naming conflicts in Rust)
- Reinstate hours and minutes time component for default order and position identifiers (easier debugging, less collisions)
- Setting time alerts for in the past or current time will generate an immediate `TimeEvent` (rather than being invalid)

### Enhancements
- Added new DataFusion Rust parquet data catalog backend (yet to be integrated into Python)
- Added `external_order_claims` config option for `StrategyConfig` (for claiming external orders per instrument)
- Added `Order.signed_decimal_qty()`
- Added `Cache.orders_for_exec_algorithm(...)`
- Added `Cache.orders_for_exec_spawn(...)`
- Added `TWAPExecAlgorithm` and `TWAPExecAlgorithmConfig` to examples
- Build out `ExecAlgorithm` base class for implementing 'first class' execution algorithms
- Rewired execution for improved flow flexibility between emulated orders, execution algorithms and the `RiskEngine`
- Improved handling for `OrderEmulator` updating of contingency orders from execution algorithms
- Define public API for instruments, can now import directly from `nautilus_trader.model.instruments` (denest namespace)
- Define public API for orders, can now import directly from `nautilus_trader.model.orders` (denest namespace)
- Define public API for order book, can now import directly from `nautilus_trader.model.orderbook` (denest namespace)
- Now stripping debug symbols after build (reduced binary sizes)
- Refined build and added additional `debug` Makefile convenience targets

### Fixes
- Fixed processing of contingency orders when in a pending update state
- Fixed calculation of PnL for flipped positions (only book realized PnL against open position)
- Fixed `WebSocketClient` session disconnect, thanks for reporting @miller-moore
- Added missing `BinanceSymbolFilterType.NOTIONAL`
- Fixed incorrect `Mul` trait for `Price` and `Quantity` (not being used in Cython/Python layer)