Skip to content

NautilusTrader 1.219.0 Beta

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 05 Jul 14:51
af72cab

NautilusTrader 1.219.0 Beta

Released on 5th July 2025 (UTC).

Enhancements

  • Added graceful_shutdown_on_exception config option for live engines (default False to retain intended hard crash on unexpected system exceptions)
  • Added purge_from_database config option for LiveExecEngineConfig to support cache backing database management
  • Added support for data download during backtest (#2652), thanks @faysou
  • Added delete data range to catalog (#2744), thanks @faysou
  • Added consolidate catalog by period (#2727), thanks @faysou
  • Added fire_immediately flag parameter for timers where a time event will be fired at the start instant and then every interval thereafter (default False to retain current behavior) (#2600), thanks for the idea @stastnypremysl
  • Added time_bars_build_delay config option for DataEngineConfig (#2676), thanks @faysou
  • Added immediate firing capability for time alerts and corresponding test (#2745), thanks @stastnypremysl
  • Added missing serialization mappings for some instruments (#2702), thanks @faysou
  • Added support for DEX swaps for blockchain adapter (#2683), thanks @filipmacek
  • Added support for Pool liquidity updates for blockchain adapter (#2692), thanks @filipmacek
  • Added fill report reconciliation warning when discrepancy with existing fill (#2706), thanks @faysou
  • Added optional metadata function for custom data query (#2724), thanks @faysou
  • Added support for order-list submission in the sandbox execution client (#2714), thanks @petioptrv
  • Added hidden order support for IBKR (#2739), thanks @sunlei
  • Added subscribe_order_book_deltas support for IBKR (#2749), thanks @sunlei
  • Added bid_levels and ask_levels for OrderBook.pprint
  • Added accepted_buffer_ns filter param for Cache.own_bid_orders(...) and Cache.own_ask_orders(...)
  • Added trailing stop orders activation_price support in Rust (#2750), thanks @nicolad

Breaking Changes

  • Renamed catalog instrument_ids filter param to identifiers to more accurately describe strings which can represent either instrument IDs or bar types
  • Changed behavior of timers allow_past=False to permit start times in the past if the next event time is still in the future
  • Changed Databento DBN upgrade policy to default v3
  • Removed problematic negative balance check for margin accounts (cash account negative balance check remains unchanged)
  • Removed support for Databento DBN v1 schemas (migrate to DBN v2 or v3, see DBN Changelog)

Internal Improvements

  • Added logging macros for custom component and color in Rust
  • Added Cython-level parameter validation for timer operations to prevent Rust panics and provide clearer Python error messages
  • Added property-based testing for Price, Quantity, Money value types in Rust
  • Added property-based testing for UnixNanos in Rust
  • Added property-based testing for OrderBook in Rust
  • Added property-based testing for TestTimer in Rust
  • Added property-based testing for network crate in Rust
  • Added chaos testing with turmoil for socket clients in Rust
  • Added check_positive_decimal correctness function and use for instrument validations (#2736), thanks @nicolad
  • Added check_positive_money correctness function and use for instrument validations (#2738), thanks @nicolad
  • Ported data catalog refactor to Rust (#2681, #2720), thanks @faysou
  • Optimized TardisCSVDataLoader performance (~90% memory usage reduction, ~60-70% faster)
  • Consolidated the clocks and timers v2 feature from @twitu
  • Consolidated on pure Rust cryptography crates with no dependencies on native certs or openssl
  • Consolidated on aws-lc-rs cryptography for FIPS compliance
  • Confirmed parity between Cython and Rust indicators (#2700, #2710, #2713), thanks @nicolad
  • Implemented From<Pool> -> CurrencyPair & InstrumentAny (#2693), thanks @nicolad
  • Updated Makefile to use new docker compose syntax (#2746), thanks @stastnypremysl
  • Updated Tardis exchange mappings
  • Improved live engine message processing to ensure exceptions result in a crash rather than continuing without the queue processing messages
  • Improved live reconciliation robustness and testing
  • Improved listen key error handling and recovery for Binance
  • Improved handling of negative balances in backtests (#2730), thanks @ms32035
  • Improved robustness of cash and margin account locked balance calculations to avoid negative free balance
  • Improved robustness of fill price parsing for Betfair
  • Improved implementation, validations and testing for Rust instruments (#2723, #2733), thanks @nicolad
  • Improved Currency equality to use strcmp to avoid C pointer comparison issues with ustr string interning
  • Improved unsubscribe cleanup(s) for Bybit adapter
  • Improved Makefile to be self-documenting (#2741), thanks @sunlei
  • Refactored IB adapter (#2647), thanks @faysou
  • Refactored data catalog (#2652, #2740), thanks @faysou
  • Refined Rust data catalog (#2734), thanks @faysou
  • Refined logging subsystem lifecycle management and introduce global log sender
  • Refined signal serialization and tests (#2705), thanks @faysou
  • Refined CI/CD and build system (#2707), thanks @stastnypremysl
  • Upgraded Rust (MSRV) to 1.88.0
  • Upgraded Cython to v3.1.2
  • Upgraded databento crate to v0.28.0
  • Upgraded datafusion crate to v48.0.0
  • Upgraded pyo3 and pyo3-async-runtimes crates to v0.25.1
  • Upgraded redis crate to v0.32.3
  • Upgraded tokio crate to v1.46.1
  • Upgraded tokio-tungstenite crate to v0.27.0

Fixes

  • Fixed AccountBalance mutation in AccountState events (#2701), thanks for reporting @DeirhX
  • Fixed order book cache consistency in update and remove operations (found through property-based testing)
  • Fixed order status report generation for Polymarket where venue_order_id was unbounded
  • Fixed data request identifier attribute access for LiveDataClient
  • Fixed generate_order_modify_rejected typo in Binance execution client (#2682), thanks for reporting @etiennepar
  • Fixed order book depth handling in subscriptions for Binance
  • Fixed potential IndexError with empty bars requests for Binance
  • Fixed GTD-GTC time in force conversion for Binance
  • Fixed incorrect logging of trigger type for Binance
  • Fixed trade ticks unsubscribe for Binance which was not differentiating aggregated trades
  • Fixed pending update hot cache cleanup for Betfair execution client
  • Fixed invalid session information on account update for Betfair execution client
  • Fixed order book snapshots unsubscribe for Tardis data client
  • Fixed Arrow schema registration for BinanceBar
  • Fixed gRPC server shutdown warning when running dYdX integration tests
  • Fixed registration of encoder and decoder for BinanceBar, thanks for reporting @miller-moore
  • Fixed spot and futures sandbox for Binance (#2687), thanks @petioptrv
  • Fixed clean and distclean make targets entering .venv and corrupting the Python virtual env, thanks @faysou
  • Fixed catalog identifier matching to exact match (#2732), thanks @faysou
  • Fixed last value updating for RSI indicator (#2703), thanks @bartlaw
  • Fixed gateway/TWS reconnect process for IBKR (#2710), thanks @bartlaw
  • Fixed Interactive Brokers options chain issue (#2711), thanks @FGU1
  • Fixed partially filled bracket order and SL triggered for IBKR (#2704, #2717), thanks @bartlaw
  • Fixed instrument message decoding when no exchange value for Databento US equities
  • Fixed fetching single-instrument trading fees for Binance, thanks @petioptrv
  • Fixed IB-TWS connection issue with international languages (#2726), thanks @DracheShiki
  • Fixed bar requests for Bybit where pagination was incorrect which limited bars being returned
  • Fixed Bybit Unknown Error (#2742), thanks @DeevsDeevs
  • Fixed margin balance parsing for Bybit
  • Restored task error logs for IBKR (#2716), thanks @bartlaw

Documentation Updates

  • Updated IB adapter documentation (#2729), thanks @faysou
  • Improved reconciliation docs in live concept guide

Deprecations

  • Deprecated Portfolio.set_specific_venue(...), to be removed in a future release; use Cache.set_specific_venue(...) instead