NautilusTrader 1.206.0 Beta
Released on 17th November 2024 (UTC).
Enhancements
- Added
TardisDataClientproviding live data streams from a Tardis Machine WebSocket server - Added
TardisInstrumentProviderproviding instrument definitions from Tardis through the HTTP instrument metadata API - Added
Portfolio.realized_pnl(...)method for per instrument realized PnL (based on positions) - Added
Portfolio.realized_pnls(...)method for per venue realized PnL (based on positions) - Added configuration warning for
InstrumentProvider(to warn when node starts with no instrument loading) - Implemented Tardis optional symbol normalization
- Implemented
WebSocketClientreconnection retries (#2044), thanks @davidsblom - Implemented
OrderCancelRejectedevent generation for Binance and Bybit - Implemented
OrderModifyRejectedevent generation for Binance and Bybit - Improved
OrderRejectedhandling ofreasonstring (Noneis now allowed which will become the string'None') - Improved
OrderCancelRejectedhandling ofreasonstring (Noneis now allowed which will become the string'None') - Improved
OrderModifyRejectedhandling ofreasonstring (Noneis now allowed which will become the string'None')
Internal Improvements
- Ported
RiskEngineto Rust (#2035), thanks @pushkarm029 and @twitu - Ported
ExecutionEngineto Rust (#2048), thanks @twitu - Added globally shared data channels to send events from engines to Runner in Rust (#2042), thanks @twitu
- Added LRU caching for dYdX HTTP client (#2049), thanks @davidsblom
- Improved identifier constructors to take
AsRef<str>for a cleaner more flexible API - Refined identifiers
Fromtrait impls - Refined
InstrumentProviderinitialization behavior and logging - Refined
LiveTimercancel and performance testing - Simplified
LiveTimercancellation model (#2046), thanks @twitu - Refined Bybit HMAC authentication signatures (now using Rust implemented function)
- Refined Tardis instrument ID parsing
- Removed Bybit
msgspecredundant import alias (#2050), thanks @sunlei - Upgraded
databentocrate to v0.16.0
Breaking Changes
None
Fixes
- Fixed loading specific instrument IDs for
InstrumentProviderConfig - Fixed PyO3 instrument conversions for
raw_symbol(was incorrectly using the normalized symbol) - Fixed reconcile open orders and account websocket message for dYdX (#2039), thanks @davidsblom
- Fixed market order
avg_pxfor Polymarket trade reports - Fixed Betfair clients keepalive (#2040), thanks @limx0
- Fixed Betfair reconciliation (#2041), thanks @limx0
- Fixed Betfair customer order ref limit to 32 chars
- Fixed Bybit handling of
PARTIALLY_FILLED_CANCELEDstatus orders - Fixed Polymarket size precision for
BinaryOptioninstruments (precision 6 to match USDC.e) - Fixed adapter instrument reloading (providers were not reloading instruments at the configured interval due to internal state flags)
- Fixed static time logging for
BacktestEnginewhen running withuse_pyo3logging config - Fixed in-flight orders check and improve error handling (#2053), thanks @davidsblom
- Fixed dYdX handling for liquidated fills (#2052), thanks @davidsblom
- Fixed
BybitResponse.timefield as optionalint(#2051), thanks @sunlei - Fixed single instrument requests for
DatabentoDataClient(was incorrectly calling_handle_instrumentsinstead of_handle_instrument), thanks for reporting @Emsu - Fixed
fsspecrecursive globbing behavior to ensure only file paths are included, and bumped dependency to version 2024.10.0 - Fixed jupyterlab url typo (#2057), thanks @Alsheh