NautilusTrader 1.204.0 Beta
Released on 22nd October 2024 (UTC).
Enhancements
- Added
TardisCSVDataLoaderfor loading data from Tardis format CSV files as either legacy Cython or PyO3 objects - Added
Clock.timestamp_us()method for UNIX timestamps in microseconds (μs) - Added support for
bbo-1sandbbo-1mquote schemas for Databento adapter (#1990), thanks @faysou - Added validation for venue
book_typeconfiguration vs data (prevents an issue where top-of-book data is used when order book data is expected) - Added
compute_effective_deltasconfig setting forPolymarketDataClientConfig, reducing snapshot size (Falseby default to maintain current behavior) - Added rate limiter for
WebSocketClient(#1994), thanks @pushkarm029 - Added in the money probability field to GreeksData (#1995), thanks @faysou
- Added
on_signal(signal)handler for custom signal data - Added
nautilus_trader.common.eventsmodule with re-exports forTimeEventand other system events - Improved usability of
OrderBookDepth10by filling partial levels with null orders and zero counts - Improved Postgres config (#2010), thanks @filipmacek
- Refined
DatabentoInstrumentProviderhandling of large bulks of instrument definitions (improved parent symbol support) - Standardized Betfair symbology to use hyphens instead of periods (prevents Betfair symbols being treated as composite)
- Integration guide docs fixes (#1991), thanks @FarukhS52
Internal Improvements
- Ported
Throttlerto Rust (#1988), thanks @pushkarm029 and @twitu - Ported
BettingInstrumentto Rust - Refined
RateLimiterforWebSocketClientand add tests (#2000), thanks @pushkarm029 - Refined
WebSocketClientto close existing tasks on reconnect (#1986), thanks @davidsblom - Remove mutable references in
CacheDatabaseAdaptertrait in Rust (#2015), thanks @filipmacek - Use Rust rate limiter for dYdX websockets (#1996, #1999), thanks @davidsblom
- Improved error logs for dYdX websocket subscriptions (#1993), thanks @davidsblom
- Standardized log and error message syntax in Rust
- Continue porting
SimulatedExchangeandOrderMatchingEngineto Rust (#1997, #1998, #2001, #2003, #2004, #2006, #2007, #2009, #2014), thanks @filipmacek
Breaking Changes
- Removed legacy
TardisQuoteDataLoader(now redundant with new Rust implemented loader) - Removed legacy
TardisTradeDataLoader(now redundant with new Rust implemented loader) - Custom signals are now passed to
on_signal(signal)instead ofon_data(data) - Changed
Position.to_dict()commissionsvalue type tolist[str](rather than an optionalstrof a list of strings) - Changed
Position.to_dict()avg_px_openvalue type tofloat - Changed
Position.to_dict()avg_px_closevalue type tofloat | None - Changed
Position.to_dict()realized_returnvalue type tofloat | None - Changed
BettingInstrumentArrow schema fieldsevent_open_dateandmarket_start_timefromstringtouint64
Fixes
- Fixed
SocketClientTLS implementation - Fixed
WebSocketClienterror handling on writer close, thanks for reporting @davidsblom - Fixed resubscribing to orderbook in batched mode for dYdX (#1985), thanks @davidsblom
- Fixed Betfair tests related to symbology (#1988), thanks @limx0
- Fixed check for
OmsTypeinOrderMatchingEngineposition ID processing (#2003), thanks @filipmacek - Fixed
TardisCSVDataLoadersnapshot5 and snapshot25 parsing (#2005), thanks @pushkarm029 - Fixed Binance clients venue assignment, we should use the
client_idparams (which match the custom clientname) to communicate with the clients, and use the same'BINANCE'venue identifiers - Fixed
OrderMatchingEngineincorrectly attempting to process monthly bars for execution (which will fail, as no reasonabletimedeltais available), thanks for reporting @frostRed - Fixed handling
MONTHaggregation forcache.bar_types()(sorting required an internal call for the bar intervalstimedelta), thanks for reporting @frostRed