NautilusTrader 1.210.0 Beta
Released on 10th January 2025 (UTC).
Enhancements
- Added
PerContractFeeModel, thanks @stefansimik - Added
DYDXInternalErrorandDYDXOraclaPricedata types for dYdX (#2155), thanks @davidsblom - Added proper
OrderBookDeltasflags parsing for Betfair - Added Binance TradeLite message support (#2156), thanks @DeevsDeevs
- Added
DataEngineConfig.time_bars_skip_first_non_full_barconfig option (#2160), thanks @faysou - Added
execution.fastsupport for Bybit (#2165), thanks @sunlei - Added catalog helper functions to export data (#2135), thanks @twitu
- Added additional timestamp properties for
NautilusKernel - Added
event_loggingconfig option forStrategyConfig(#2183), thanks @sunlei - Added
bar_adaptive_high_low_orderingtoBacktestVenueConfig(#2188), thanks @faysou and @stefansimik
Breaking Changes
- Removed optional
valueparam fromUUID4(useUUID4.from_str(...)instead), aligns with Nautilus PyO3 API - Changed
unix_nanos_to_iso8601to output an ISO 8601 (RFC 3339) format string with nanosecond precision - Changed
format_iso8601to output ISO 8601 (RFC 3339) format string with nanosecond precision - Changed
format_iso8601dtparameter to enforcepd.Timestamp(which has nanosecond precision) - Changed
TradingNode.is_builtfrom a property to a method.is_built() - Changed
TradingNode.is_runningfrom a property to a method.is_running() - Changed
OrderInitializedArrow schema (linked_order_idsandtagsdata types changed fromstringtobinary) - Changed order dictionary representation field types for
avg_pxandslippagefromstrtofloat(as out of alignment with position events) - Changed
aggregation_sourcefilter parameter forCache.bar_types(...)to optional with default ofNone
Internal Improvements
- Improved market order handling when no size available in book (now explicitly rejects)
- Improved validation for
TradeTickby ensuringsizeis always positive - Improved validation for
OrderBookDeltaby ensuringorder.sizeis positive whenactionis eitherADDorUPDATE - Improved validation for
BarSpecificationby ensuringstepis always positive - Standardized ISO 8601 timestamps to RFC 3339 spec with nanosecond precision
- Standardized flags for
OrderBookDeltasparsing across adapters - Refined parsing candles for dYdX (#2148), thanks @davidsblom
- Refined imports for type hints in Bybit (#2149), thanks @sunlei
- Refined private WebSocket message processing for Bybit (#2170), thanks @sunlei
- Refined WebSocket client re-subscribe log for Bybit (#2179), thanks @sunlei
- Refined margin balance report for dYdX (#2154), thanks @davidsblom
- Enhanced
lotSizeFilterfield for Bybit (#2166), thanks @sunlei - Renamed WebSocket private client for Bybit (#2180), thanks @sunlei
- Added unit tests for custom dYdX types (#2163), thanks @davidsblom
- Allow bar aggregators to persist after
request_aggregated_bars(#2144), thanks @faysou - Handle directory and live streams to catalog (#2153), thanks @limx0
- Use timeout when initializing account for dYdX (#2169), thanks @davidsblom
- Use retry manager when sending websocket messages for dYdX (#2196), thanks @davidsblom
- Refined error logs when sending pong for dYdX (#2184), thanks @davidsblom
- Optimized message bus topic
is_matching(#2151), thanks @ryantam626 - Added tests for
bar_adaptive_high_low_ordering(#2197), thanks @faysou - Ported
OrderManagerto Rust (#2161), thanks @pushkarm029 - Ported trailing stop logic to Rust (#2174), thanks @DeevsDeevs
- Ported
FeeModelto Rust (#2191), thanks @filipmacek - Implemented IDs generator for
OrderMatchingEnginein Rust (#2193), thanks @filipmacek - Upgraded Cython to v3.1.0a1
- Upgraded
tokiocrate to v1.43.0 - Upgraded
datafusioncrate to v44.0.0
Fixes
- Fixed type check for
DataClienton requests to support clients other thanMarketDataClient - Fixed processing trade ticks from bars in
OrderMatchingEngine- that could result in zero-size trades, thanks for reporting @stefansimik - Fixed
instrument is Nonecheck flows forDataEngineandPolymarketExecutionClient - Fixed instrument updates in
BetfairDataClient(#2152), thanks @limx0 - Fixed processing of time events on backtest completion when they occur after the final data timestamp
- Fixed missing enum member
CANCELED_MARKET_RESOLVEDforPolymarketOrderStatus - Fixed missing
init_idfield from some order.to_dict()representations - Fixed writing
DYDXOraclePriceto catalog (#2158), thanks @davidsblom - Fixed account balance for dYdX (#2167), thanks @davidsblom
- Fixed markets schema for dYdX (#2190), thanks @davidsblom
- Fixed missing
OrderEmulatedandOrderReleasedArrow schemas - Fixed websocket public channel reconnect for Bybit (#2176), thanks @sunlei
- Fixed execution report parsing for Binance Spot (client order ID empty string now becomes a UUID4 string)
- Fixed docs typo for
fill_orderfunction inOrderMatchingEngine(#2189), thanks @filipmacek
Documentation Updates
- Added docs for
Cache, slippage and spread handling in backtesting (#2162), thanks @stefansimik - Added docs for
FillModeland bar based execution (#2187), thanks @stefansimik - Added docs for choosing data (cost vs. accuracy) and bars OHLC processing (#2195), thanks @stefansimik
- Added docs for bar processing in backtests (#2198), thanks @stefansimik
- Added docs for timestamp and UUID specs