Skip to content

NautilusTrader 1.212.0 Beta

Compare
Choose a tag to compare
@github-actions github-actions released this 11 Mar 04:50

NautilusTrader 1.212.0 Beta

Released on 11th March 2025 (UTC).

This release introduces uv as the Python project and dependency management tool.

Enhancements

  • Added OwnOrderBook and OwnBookOrder to track own orders and prevent self-trades in market making
  • Added manage_own_order_books config option for ExecEngineConfig to enable own order tracking
  • Added Cache.own_order_book(...), Cache.own_bid_orders(...) and Cache.own_ask_orders(...) for own order tracking
  • Added optional beta weighting and percent option greeks (#2317), thanks @faysou
  • Added pnl information to greeks data (#2378), thanks @faysou
  • Added precision inference for TardisCSVDataLoader, where price_precision and size_precision are now optional
  • Added Order.ts_accepted property
  • Added Order.ts_submitted property
  • Added UnixNanos::to_datetime_utc() in Rust
  • Added Mark variant for PriceType enum
  • Added mark price handling for Cache
  • Added mark exchange rate handling for Cache
  • Added PortfolioConfig for configuration settings specific to the Portfolio
  • Added use_mark_prices, use_mark_xrates and convert_to_account_base_currency options for PortfolioConfig
  • Added mark price calculations and xrate handling for Portfolio
  • Added Rust debugging support and refined cargo nextest usage (#2335, #2339), thanks @faysou
  • Added catalog write mode options (#2365), thanks @faysou
  • Added BarSpecification to msgspec encoding and decoding hooks (#2373), thanks @pierianeagle
  • Added ignore_external_orders config option for BetfairExecClientConfig, default False to retain current behavior
  • Added requests for order book snapshots with HTTP for dYdX (#2393), thanks @davidsblom

Breaking Changes

  • Removed talib subpackage (see deprecations for v1.211.0)
  • Removed internal ExchangeRateCalculator, replaced with get_exchange_rate(...) function implemented in Rust
  • Replaced ForexSession enum with equivalent from PyO3
  • Replaced ForexSessionFilter with equivalent functions from PyO3
  • Renamed InterestRateData to YieldCurveData
  • Renamed Cache.add_interest_rate_curve to add_yield_curve
  • Renamed Cache.interest_rate_curve to yield_curve
  • Renamed OrderBook.count to update_count for clarity
  • Moved ExecEngineConfig.portfolio_bar_updates config option to PortfolioConfig.bar_updates

Internal Improvements

  • Added initial Cache benchmarking for orders (#2341), thanks @filipmacek
  • Added support for CARGO_BUILD_TARGET environment variable in build.py (#2385), thanks @sunlei
  • Added test for time-bar aggregation (#2391), thanks @stefansimik and @faysou
  • Implemented actor framework and message bus v3 (#2402), thanks @twitu
  • Implemented latency modeling for SimulatedExchange in Rust (#2423), thanks @filipmacek
  • Implemented exchange rate calculations in Rust
  • Improved handling of oms_type for StrategyConfig which now correctly handles the OmsType enum
  • Improved Binance websocket connections management to allow more than 200 streams (#2369), thanks @lidarbtc
  • Improved log event timestamping to avoid clock or time misalignments when events cross to the logging thread
  • Improved error logging for live engines to now include stacktrace for easier debugging
  • Improved logging initialization error handling to avoid panicking in Rust
  • Improved Redis cache database queries, serialization, error handling and connection management (#2295, #2308, #2318), thanks @Pushkarm029
  • Improved validation for OrderList to check all orders are for the same instrument ID
  • Improved Controller functionality with ability to create actors and strategies from configs (#2322), thanks @faysou
  • Improved Controller creation for more streamlined trader registration, and separate clock for timer namespacing (#2357), thanks @faysou
  • Improved build by adding placeholders to avoid unnecessary rebuilds (#2336), thanks @bartolootrit
  • Improved consistency of OrderMatchingEngine between Cython and Rust and fix issues (#2350), thanks @filipmacek
  • Removed obsolete reconnect guard for dYdX (#2334), thanks @davidsblom
  • Refactored data request interfaces into messages (#2260), thanks @faysou
  • Refactored data subscribe interfaces into messages (#2280), thanks @faysou
  • Refactored reconciliation interface into messages (#2375), thanks @faysou
  • Refactored _handle_query_group to work with update_catalog (#2412), thanks @faysou
  • Refactored execution message handling in Rust (#2291), thanks @filipmacek
  • Refactored repetitive code in backtest examples (#2387, #2395), thanks @stefansimik
  • Refined yield curve data (#2300), thanks @faysou
  • Refined bar aggregators in Rust (#2311), thanks @faysou
  • Refined greeks computation (#2312), thanks @faysou
  • Refined underlying filtering in portfolio_greeks (#2382), thanks @faysou
  • Refined request_instruments granularity for Databento (#2347), thanks @faysou
  • Refined Rust date functions (#2356), thanks @faysou
  • Refined parsing of IB symbols (#2388), thanks @faysou
  • Refined base_template behaviour in parquet write_data (#2389), thanks @faysou
  • Refined mixed catalog client requests (#2405), thanks @faysou
  • Refined update catalog docstring (#2411), thanks @faysou
  • Refined to use next_back instead of last for identifier tag functions (#2414), thanks @twitu
  • Refined and optimized OrderBook in Rust
  • Cleaned up PyO3 migration artifacts (#2326), thanks @twitu
  • Ported StreamingFeatherWriter to Rust (#2292), thanks @twitu
  • Ported update_limit_order for OrderMatchingEngine in Rust (#2301), thanks @filipmacek
  • Ported update_stop_market_order for OrderMatchingEngine in Rust (#2310), thanks @filipmacek
  • Ported update_stop_limit_order for OrderMatchingEngine in Rust (#2314), thanks @filipmacek
  • Ported market-if-touched order handling for OrderMatchingEngine in Rust (#2329), thanks @filipmacek
  • Ported limit-if-touched order handling for OrderMatchingEngine in Rust (#2333), thanks @filipmacek
  • Ported market-to-limit order handling for OrderMatchingEngine in Rust (#2354), thanks @filipmacek
  • Ported trailing stop order handling for OrderMatchingEngine in Rust (#2366, #2376), thanks @filipmacek
  • Ported contingent orders handling for OrderMatchingEngine in Rust (#2404), thanks @filipmacek
  • Updated Databento publishers.json mappings file(s)
  • Upgraded nautilus-ibapi to 10.30.1 with necessary changes for Interactive Brokers (#2420), thanks @FGU1
  • Upgraded Rust to 1.85.0 and 2024 edition
  • Upgraded arrow and parquet crates to v54.2.1
  • Upgraded databento crate to v0.20.0 (upgrades the dbn crate to v0.28.0)
  • Upgraded datafusion crate to v46.0.0
  • Upgraded pyo3 crate to v0.23.5
  • Upgraded tokio crate to v1.44.0

Fixes

  • Fixed large difference between Data enum variants (#2315), thanks @twitu
  • Fixed start and end range filtering for TardisHttpClient to use API query params
  • Fixed built-in data type Arrow schemas for StreamingFeatherWriter, thanks for reporting @netomenoci
  • Fixed memory allocation performance issue for TardisCSVDataLoader
  • Fixed effective timestamp filtering for TardisHttpClient to now only retain latest version at or before effective
  • Fixed contract activation for Binance Futures, now based on the onboardDate field
  • Fixed hard-coded signature type for PolymarketExecutionClient
  • Fixed unsubscribing from quotes for dYdX (#2331), thanks @davidsblom
  • Fixed docstrings for dYdX factories (#2415), thanks @davidsblom
  • Fixed incorrect type annotations in _request_instrument signature (#2332), thanks @faysou
  • Fixed composite bars subscription (#2337), thanks @faysou
  • Fixed sub command issue in some adapters (#2343), thanks @faysou
  • Fixed bypass_logging fixture to keep log guard alive for entire test session
  • Fixed time parsing for IB adapter (#2360), thanks @faysou
  • Fixed bad ts_init value in IB weekly and monthly bar (#2355), thanks @Endura2024
  • Fixed bar timestamps for IB (#2380), thanks @Endura2024
  • Fixed backtest example load bars from custom CSV (#2383), thanks @hanksuper
  • Fixed subscribe composite bars (#2390), thanks @faysou
  • Fixed invalid link in IB docs (#2401), thanks @stefansimik
  • Fixed cache index loading to ensure persisted data remains available after startup, thanks for reporting @Saransh-28
  • Fixed bars pagination, ordering and limit for Bybit
  • Fixed update_bar aggregation function to guarantee high and low price invariants (#2430), thanks @hjander and @faysou

Documentation Updates

Deprecations

None