NautilusTrader 1.206.0 Beta
Released on 17th November 2024 (UTC).
Enhancements
- Added
TardisDataClient
providing live data streams from a Tardis Machine WebSocket server - Added
TardisInstrumentProvider
providing 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
WebSocketClient
reconnection retries (#2044), thanks @davidsblom - Implemented
OrderCancelRejected
event generation for Binance and Bybit - Implemented
OrderModifyRejected
event generation for Binance and Bybit - Improved
OrderRejected
handling ofreason
string (None
is now allowed which will become the string'None'
) - Improved
OrderCancelRejected
handling ofreason
string (None
is now allowed which will become the string'None'
) - Improved
OrderModifyRejected
handling ofreason
string (None
is now allowed which will become the string'None'
)
Internal Improvements
- Ported
RiskEngine
to Rust (#2035), thanks @Pushkarm029 and @twitu - Ported
ExecutionEngine
to 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
From
trait impls - Refined
InstrumentProvider
initialization behavior and logging - Refined
LiveTimer
cancel and performance testing - Simplified
LiveTimer
cancellation model (#2046), thanks @twitu - Refined Bybit HMAC authentication signatures (now using Rust implemented function)
- Refined Tardis instrument ID parsing
- Removed Bybit
msgspec
redundant import alias (#2050), thanks @sunlei - Upgraded
databento
crate 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_px
for 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_CANCELED
status orders - Fixed Polymarket size precision for
BinaryOption
instruments (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
BacktestEngine
when running withuse_pyo3
logging config - Fixed in-flight orders check and improve error handling (#2053), thanks @davidsblom
- Fixed dYdX handling for liquidated fills (#2052), thanks @davidsblom
- Fixed
BybitResponse.time
field as optionalint
(#2051), thanks @sunlei - Fixed single instrument requests for
DatabentoDataClient
(was incorrectly calling_handle_instruments
instead of_handle_instrument
), thanks for reporting @Emsu - Fixed
fsspec
recursive globbing behavior to ensure only file paths are included, and bumped dependency to version 2024.10.0 - Fixed jupyterlab url typo (#2057), thanks @Alsheh