Skip to content

NautilusTrader 1.210.0 Beta

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 10 Jan 04:22

NautilusTrader 1.210.0 Beta

Released on 10th January 2025 (UTC).

Enhancements

  • Added PerContractFeeModel, thanks @stefansimik
  • Added DYDXInternalError and DYDXOraclaPrice data types for dYdX (#2155), thanks @davidsblom
  • Added proper OrderBookDeltas flags parsing for Betfair
  • Added Binance TradeLite message support (#2156), thanks @DeevsDeevs
  • Added DataEngineConfig.time_bars_skip_first_non_full_bar config option (#2160), thanks @faysou
  • Added execution.fast support for Bybit (#2165), thanks @sunlei
  • Added catalog helper functions to export data (#2135), thanks @twitu
  • Added additional timestamp properties for NautilusKernel
  • Added event_logging config option for StrategyConfig (#2183), thanks @sunlei
  • Added bar_adaptive_high_low_ordering to BacktestVenueConfig (#2188), thanks @faysou and @stefansimik

Breaking Changes

  • Removed optional value param from UUID4 (use UUID4.from_str(...) instead), aligns with Nautilus PyO3 API
  • Changed unix_nanos_to_iso8601 to output an ISO 8601 (RFC 3339) format string with nanosecond precision
  • Changed format_iso8601 to output ISO 8601 (RFC 3339) format string with nanosecond precision
  • Changed format_iso8601 dt parameter to enforce pd.Timestamp (which has nanosecond precision)
  • Changed TradingNode.is_built from a property to a method .is_built()
  • Changed TradingNode.is_running from a property to a method .is_running()
  • Changed OrderInitialized Arrow schema (linked_order_ids and tags data types changed from string to binary)
  • Changed order dictionary representation field types for avg_px and slippage from str to float (as out of alignment with position events)
  • Changed aggregation_source filter parameter for Cache.bar_types(...) to optional with default of None

Internal Improvements

  • Improved market order handling when no size available in book (now explicitly rejects)
  • Improved validation for TradeTick by ensuring size is always positive
  • Improved validation for OrderBookDelta by ensuring order.size is positive when action is either ADD or UPDATE
  • Improved validation for BarSpecification by ensuring step is always positive
  • Standardized ISO 8601 timestamps to RFC 3339 spec with nanosecond precision
  • Standardized flags for OrderBookDeltas parsing 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 lotSizeFilter field 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 OrderManager to Rust (#2161), thanks @Pushkarm029
  • Ported trailing stop logic to Rust (#2174), thanks @DeevsDeevs
  • Ported FeeModel to Rust (#2191), thanks @filipmacek
  • Implemented IDs generator for OrderMatchingEngine in Rust (#2193), thanks @filipmacek
  • Upgraded Cython to v3.1.0a1
  • Upgraded tokio crate to v1.43.0
  • Upgraded datafusion crate to v44.0.0

Fixes

  • Fixed type check for DataClient on requests to support clients other than MarketDataClient
  • Fixed processing trade ticks from bars in OrderMatchingEngine - that could result in zero-size trades, thanks for reporting @stefansimik
  • Fixed instrument is None check flows for DataEngine and PolymarketExecutionClient
  • 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_RESOLVED for PolymarketOrderStatus
  • Fixed missing init_id field from some order .to_dict() representations
  • Fixed writing DYDXOraclePrice to catalog (#2158), thanks @davidsblom
  • Fixed account balance for dYdX (#2167), thanks @davidsblom
  • Fixed markets schema for dYdX (#2190), thanks @davidsblom
  • Fixed missing OrderEmulated and OrderReleased Arrow 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_order function in OrderMatchingEngine (#2189), thanks @filipmacek

Documentation Updates

  • Added docs for Cache, slippage and spread handling in backtesting (#2162), thanks @stefansimik
  • Added docs for FillModel and 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