v1.170.0

nautechsystems/nautilus_traderv1.170.0Mar 12, 2023by github-actions[bot]

AI Summary

Refactors data request interfaces by renaming `from/to_datetime` to `start/end` and improves strategy caching/order management.

Key Highlights

  • Renamed `from_datetime` to `start` and `to_datetime` to `end`.
  • Added `DataCatalogConfig` for cohesive data catalog configuration.
  • Changed to immediately caching orders and order lists in `Strategy`.
  • Added logging to file at core Rust level.

Breaking Changes

  • Moved `backtest.data.providers` to `test_kit.providers`.
  • Moved `backtest.data.wranglers` to `persistence.wranglers`.
  • Moved `backtest.data.loaders` to `persistence.loaders`.
  • Renamed `from_datetime` to `start` and `to_datetime` to `end`.
  • Removed `RiskEngineConfig.deny_modify_pending_update`.
  • Invalidated all pickled data due to Cython 3.0.0b1 upgrade.

New Features

  • Added `DataEngine.register_catalog` to support historical data requests.
  • `PortfolioAnalyzer` PnL statistics now take optional `unrealized_pnl`.
  • Backtest performance statistics now include unrealized PnL.

Full Release Notes

# NautilusTrader 1.170.0 Beta

Released on 11th March 2023 (UTC).

### Breaking Changes
- Moved `backtest.data.providers` to `test_kit.providers`
- Moved `backtest.data.wranglers` to `persistence.wranglers` (to be consolidated)
- Moved `backtest.data.loaders` to `persistence.loaders` (to be consolidated)
- Renamed `from_datetime` to `start` across data request methods and properties
- Renamed `to_datetime` to `end` across data request methods and properties
- Removed `RiskEngineConfig.deny_modify_pending_update` (as now redundant with new pending event sequencing)
- Removed redundant log sink machinery
- Changed parquet catalog schema dictionary integer key widths/types
- Invalidated all pickled data due to Cython 3.0.0b1 upgrade

### Enhancements
- Added logging to file at core Rust level
- Added `DataCatalogConfig` for more cohesive data catalog configuration
- Added `DataEngine.register_catalog` to support historical data requests
- Added `catalog_config` field to base `NautilusKernelConfig`
- Changed to immediately caching orders and order lists in `Strategy`
- Changed to checking duplicate `client_order_id` and `order_list_id` in `Strategy`
- Changed generating and applying `OrderPendingUpdate` and `OrderPendingCancel` in `Strategy`
- `PortfolioAnalyzer` PnL statistics now take optional `unrealized_pnl`
- Backtest performance statistics now include unrealized PnL in total PnL

### Fixes
- Fixed Binance Futures trigger type parsing
- Fixed `DataEngine` bar subscribe and unsubscribe logic, thanks for reporting @rsmb7z
- Fixed `Actor` handling of bars, thanks @limx0
- Fixed `CancelAllOrders` command handling for contingent orders not yet in matching core
- Fixed `TrailingStopMarketOrder` slippage calculation when no `trigger_price`, thanks for reporting @rsmb7z
- Fixed `BinanceSpotInstrumentProvider` parsing of quote asset (was using base), thanks for reporting @logogin
- Fixed undocumented Binance time in force 'GTE\_GTC', thanks for reporting @graceyangfan
- Fixed `Position` calculation of `last_qty` when commission currency was equal to base currency, thanks for reporting @rsmb7z
- Fixed `BacktestEngine` post backtest run PnL performance statistics for currencies traded per venue, thanks for reporting @rsmb7z