Skip to content

Releases: nautechsystems/nautilus_trader

NautilusTrader 1.210.0 Beta

10 Jan 04:22
Compare
Choose a tag to compare

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

NautilusTrader 1.209.0 Beta

25 Dec 12:19
Compare
Choose a tag to compare

NautilusTrader 1.209.0 Beta

Released on 25th December 2024 (UTC).

Enhancements

  • Added WebSocket API trading support for Bybit (#2129), thanks @sunlei
  • Added BybitOrderBookDeltaDataLoader with tutorial for Bybit backtesting (#2131), thanks @DeevsDeevs
  • Added margin and commission docs (#2128), thanks @stefansimik
  • Added optional depth param for some OrderBook methods
  • Added trade execution support where trades are processed by the matching engine (can be useful backtesting with throttled book and trades data)
  • Refactored to use exchange MIC code as venue for instrument IDs with Databento GLBX dataset (#2108, #2121, #2124, #2126), thanks @faysou
  • Refactored to use self.config attributes consistently (#2120), thanks @stefansimik

Internal Improvements

  • Optimized UUID4::new() avoiding unnecessary string allocation, achieving a ~2.8x performance improvement (added benches)
  • Upgraded v4-proto for dYdX (#2136), thanks @davidsblom
  • Upgraded databento crate to v0.17.0

Breaking Changes

  • Moved BinanceOrderBookDeltaDataLoader from nautilus_trader.persistence.loaders to nautilus_trader.adapters.binance.loaders

Fixes

  • Fixed multi-threaded monotonicity for AtomicTime in real-time mode
  • Fixed timeout error code for Bybit (#2130), thanks @sunlei
  • Fixed instruments info retrieval for Bybit (#2134), thanks @sunlei
  • Fixed request_aggregated_bars metadata handling (#2137), thanks @faysou
  • Fixed demo notebook backtest_high_level.ipynb (#2142), thanks @stefansimik

NautilusTrader 1.208.0 Beta

15 Dec 13:41
Compare
Choose a tag to compare

NautilusTrader 1.208.0 Beta

Released on 15th December 2024 (UTC).

Enhancements

  • Added specific params for data subscriptions and requests which supports Databento bbo-1s and bbo-1m quotes (#2083, #2094), thanks @faysou
  • Added support for STOP_LIMIT entry order type for OrderFactory.bracket(...)
  • Added .group_bids(...) and .group_asks(...) for OrderBook
  • Added .bids_to_dict() and .asks_to_dict() for OrderBook
  • Added ShutdownSystem command and shutdown_system(...) method for components (system-wide shutdown for backtest, sandbox, or live environments)
  • Added max_ws_reconnection_tries to BybitDataClientConfig (#2100), thanks @sunlei
  • Added additional API functionality for Bybit (#2102), thanks @sunlei
  • Added position and execution.fast subscriptions for Bybit (#2104), thanks @sunlei
  • Added max_ws_reconnection_tries to BybitExecClientConfig (#2109), thanks @sunlei
  • Added margin_init, margin_maint, maker_fee, taker_fee params and attributes for FuturesContract
  • Added margin_init, margin_maint, maker_fee, taker_fee params and attributes for FuturesSpread
  • Added margin_init, margin_maint, maker_fee, taker_fee params and attributes for OptionsContract
  • Added margin_init, margin_maint, maker_fee, taker_fee params and attributes for OptionsSpread
  • Improved Databento symbology support for Interactive Brokers (#2113), thanks @rsmb7z
  • Improved support of STOP_MARKET and STOP_LIMIT orders for dYdX (#2069), thanks @Saransh-Bhandari
  • Improved timer validation for interval_ns (avoids panicking from Rust)

Internal Improvements

  • Added .bids_as_map() and .asks_as_map() for OrderBook in Rust
  • Added type stubs for core subpackage
  • Added type stubs for common and model enums
  • Added type stubs for common.messages
  • Added re-exports and module declarations to enhance code ergonomics and improve import discoverability
  • Added subscriptions for block height websocket messages for dYdX (#2085), thanks @davidsblom
  • Added sccache in CI (#2093), thanks @sunlei
  • Refined BybitWebSocketClient private channel authentication (#2101), thanks @sunlei
  • Refined BybitWebSocketClient subscribe and unsubscribe (#2105), thanks @sunlei
  • Refined place order class definitions for Bybit (#2106), thanks @sunlei
  • Refined BybitEnumParser (#2107), thanks @sunlei
  • Refined batch cancel orders for Bybit (#2111), thanks @sunlei
  • Upgraded tokio crate to v1.42.0

Breaking Changes

  • Renamed Level to BookLevel (standardizes order book type naming conventions)
  • Renamed Ladder to BookLadder (standardizes order book type naming conventions)
  • Changed FuturesContract Arrow schema (added margin_init, margin_maint, maker_fee, taker_fee)
  • Changed FuturesSpread Arrow schema (added margin_init, margin_maint, maker_fee, taker_fee)
  • Changed OptionsContract Arrow schema (added margin_init, margin_maint, maker_fee, taker_fee)
  • Changed OptionsSpread Arrow schema (added margin_init, margin_maint, maker_fee, taker_fee)

Fixes

  • Fixed data requests when specifying end with no catalog registered (comparison between pd.Timestamp and NoneType)
  • Fixed BEST_EFFORT_CANCELED order status report for dYdX (#2082), thanks @davidsblom
  • Fixed order handling for BEST_EFFORT_CANCELED messages of dYdX (#2095), thanks @davidsblom
  • Fixed specifying price for market orders on dYdX (#2088), thanks @davidsblom
  • Fixed interest rate curve custom data and interpolation (#2090), thanks @gcheshkov
  • Fixed BybitHttpClient error handling when not a JSON string (#2096), thanks @sunlei
  • Fixed BybitWebSocketClient private channel reconnect (#2097), thanks @sunlei
  • Fixed incorrect order side use in BybitExecutionClient (#2098), thanks @sunlei
  • Fixed default http_base_url for Bybit (#2110), thanks @sunlei

NautilusTrader 1.207.0 Beta

29 Nov 11:35
Compare
Choose a tag to compare

NautilusTrader 1.207.0 Beta

Released on 29th November 2024 (UTC).

Enhancements

  • Implemented mixed catalog data requests with catalog update (#2043), thanks @faysou
  • Added Databento symbology support for Interactive Brokers (#2073), thanks @rsmb7z
  • Added metadata parameter for data requests (#2043), thanks @faysou
  • Added STOP_MARKET and STOP_LIMIT order support for dYdX (#2066), thanks @davidsblom
  • Added max_reconnection_tries to data client config for dYdX (#2066), thanks @davidsblom
  • Added wallet subscription for Bybit (#2076), thanks @sunlei
  • Added docs clarity on loading historical bars (#2078), thanks @dodofarm
  • Added price_precision optional parameter for DatabentoDataLoader methods
  • Improved Cache behavior when adding more recent quotes, trades, or bars (now adds to cache)

Internal Improvements

  • Ported Portfolio and AccountManager to Rust (#2058), thanks @Pushkarm029
  • Implemented AsRef<str> for Price, Money, and Currency
  • Improved expired timer cleanup in clocks (#2064), thanks @twitu
  • Improved live engines error logging (will now log all exceptions rather than just RuntimeError)
  • Improved symbol normalization for Tardis
  • Improved historical bar request performance for Tardis
  • Improved TradeId Debug implementation to display value as proper UTF-8 string
  • Refined HttpClient for use directly from Rust
  • Refined Databento decoder (removed currency hard coding and use of unsafe)
  • Upgraded datafusion crate to v43.0.0 (#2056), thanks @twitu

Breaking Changes

  • Renamed TriggerType.LAST_TRADE to LAST_PRICE (more conventional terminology)

Fixes

  • Fixed missing venue -> exchange mappings for Tardis integration
  • Fixed account balance and order status parsing for dYdX (#2067), thanks @davidsblom
  • Fixed parsing best effort opened order status for dYdX (#2068), thanks @davidsblom
  • Fixed occasionally incorrect price_precision, multiplier and lot_size decoding for Databento instruments
  • Fixed missing Arrow schemas for instrument deserialization
  • Reconcile order book for dYdX when inconsistent (#2077), thanks @davidsblom

NautilusTrader 1.206.0 Beta

17 Nov 08:56
Compare
Choose a tag to compare

NautilusTrader 1.206.0 Beta

Released on 17th November 2024 (UTC).

Enhancements

  • Added TardisDataClient providing live data streams from a Tardis Machine WebSocket server
  • Added TardisInstrumentProvider providing instrument definitions from Tardis through the HTTP instrument metadata API
  • Added Portfolio.realized_pnl(...) method for per instrument realized PnL (based on positions)
  • Added Portfolio.realized_pnls(...) method for per venue realized PnL (based on positions)
  • Added configuration warning for InstrumentProvider (to warn when node starts with no instrument loading)
  • Implemented Tardis optional symbol normalization
  • Implemented WebSocketClient reconnection retries (#2044), thanks @davidsblom
  • Implemented OrderCancelRejected event generation for Binance and Bybit
  • Implemented OrderModifyRejected event generation for Binance and Bybit
  • Improved OrderRejected handling of reason string (None is now allowed which will become the string 'None')
  • Improved OrderCancelRejected handling of reason string (None is now allowed which will become the string 'None')
  • Improved OrderModifyRejected handling of reason string (None is now allowed which will become the string 'None')

Internal Improvements

  • Ported RiskEngine to Rust (#2035), thanks @Pushkarm029 and @twitu
  • Ported ExecutionEngine to Rust (#2048), thanks @twitu
  • Added globally shared data channels to send events from engines to Runner in Rust (#2042), thanks @twitu
  • Added LRU caching for dYdX HTTP client (#2049), thanks @davidsblom
  • Improved identifier constructors to take AsRef<str> for a cleaner more flexible API
  • Refined identifiers From trait impls
  • Refined InstrumentProvider initialization behavior and logging
  • Refined LiveTimer cancel and performance testing
  • Simplified LiveTimer cancellation model (#2046), thanks @twitu
  • Refined Bybit HMAC authentication signatures (now using Rust implemented function)
  • Refined Tardis instrument ID parsing
  • Removed Bybit msgspec redundant import alias (#2050), thanks @sunlei
  • Upgraded databento crate to v0.16.0

Breaking Changes

None

Fixes

  • Fixed loading specific instrument IDs for InstrumentProviderConfig
  • Fixed PyO3 instrument conversions for raw_symbol (was incorrectly using the normalized symbol)
  • Fixed reconcile open orders and account websocket message for dYdX (#2039), thanks @davidsblom
  • Fixed market order avg_px for Polymarket trade reports
  • Fixed Betfair clients keepalive (#2040), thanks @limx0
  • Fixed Betfair reconciliation (#2041), thanks @limx0
  • Fixed Betfair customer order ref limit to 32 chars
  • Fixed Bybit handling of PARTIALLY_FILLED_CANCELED status orders
  • Fixed Polymarket size precision for BinaryOption instruments (precision 6 to match USDC.e)
  • Fixed adapter instrument reloading (providers were not reloading instruments at the configured interval due to internal state flags)
  • Fixed static time logging for BacktestEngine when running with use_pyo3 logging config
  • Fixed in-flight orders check and improve error handling (#2053), thanks @davidsblom
  • Fixed dYdX handling for liquidated fills (#2052), thanks @davidsblom
  • Fixed BybitResponse.time field as optional int (#2051), thanks @sunlei
  • Fixed single instrument requests for DatabentoDataClient (was incorrectly calling _handle_instruments instead of _handle_instrument), thanks for reporting @Emsu
  • Fixed fsspec recursive globbing behavior to ensure only file paths are included, and bumped dependency to version 2024.10.0
  • Fixed jupyterlab url typo (#2057), thanks @Alsheh

NautilusTrader 1.205.0 Beta

03 Nov 17:50
Compare
Choose a tag to compare

NautilusTrader 1.205.0 Beta

Released on 3rd November 2024 (UTC).

Enhancements

  • Added Tardis Machine and HTTP API integration in Python and Rust
  • Added LiveExecEngineConfig.open_check_interval_secs config option to actively reconcile open orders with the venue
  • Added aggregation of bars from historical data (#2002), thanks @faysou
  • Added monthly and weekly bar aggregations (#2025), thanks @faysou
  • Added raise_exception optional parameter to TradingNode.run (#2021), thanks @faysou
  • Added OrderBook.get_avg_px_qty_for_exposure in Rust (#1893), thanks @elementace
  • Added timeouts to Interactive Brokers adapter configurations (#2026), thanks @rsmb7z
  • Added optional time origins for time bar aggregation (#2028), thanks @faysou
  • Added Polymarket position status reports and order status report generation based on fill reports
  • Added USDC.e (PoS) currency (used by Polymarket) to internal currency map
  • Upgraded Polymarket WebSocket API to new version

Internal Improvements

  • Ported analysis subpackage to Rust (#2016), thanks @Pushkarm029
  • Improved Postgres testing (#2018), thanks @filipmacek
  • Improved Redis version parsing to support truncated versions (improves compatibility with Redis-compliant databases)
  • Refined Arrow serialization (record batch functions now also available in Rust)
  • Refined core Bar API to remove unnecessary unwraps
  • Standardized network client logging
  • Fixed all pyo3 deprecations for API breaking changes
  • Fixed all clippy warning lints for PyO3 changes (#2030), thanks @Pushkarm029
  • PyO3 upgrade refactor and repair catalog tests (#2032), thanks @twitu
  • Upgraded pyo3 crate to v0.22.5
  • Upgraded pyo3-async-runtimes crate to v0.22.0
  • Upgraded tokio crate to v1.41.0

Breaking Changes

  • Removed pyo3 DataTransformer (was being used for namespacing, so refactored to separate functions)
  • Moved TEST_DATA_DIR constant from tests to nautilus_trader package (#2020), thanks @faysou

Fixes

  • Fixed use of Redis KEYS command which, is unsupported in cluster environments (replaced with SCAN for compatibility)
  • Fixed decoding fill HTTP messages for dYdX (#2022), thanks @davidsblom
  • Fixed account balance report for dYdX (#2024), thanks @davidsblom
  • Fixed Interactive Brokers market data client subscription log message (#2012), thanks @marcodambros
  • Fixed Polymarket execution reconciliation (was not able to reconcile from closed orders)
  • Fixed catalog query mem leak test (#2031), thanks @Pushkarm029
  • Fixed OrderInitialized.to_dict() tags value type to list[str] (was a concatenated str)
  • Fixed OrderInitialized.to_dict() linked_order_ids value type to list[str] (was a concatenated str)
  • Fixed Betfair clients shutdown (#2037), thanks @limx0

NautilusTrader 1.204.0 Beta

22 Oct 10:01
Compare
Choose a tag to compare

NautilusTrader 1.204.0 Beta

Released on 22nd October 2024 (UTC).

Enhancements

  • Added TardisCSVDataLoader for 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-1s and bbo-1m quote schemas for Databento adapter (#1990), thanks @faysou
  • Added validation for venue book_type configuration vs data (prevents an issue where top-of-book data is used when order book data is expected)
  • Added compute_effective_deltas config setting for PolymarketDataClientConfig, reducing snapshot size (False by 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.events module with re-exports for TimeEvent and other system events
  • Improved usability of OrderBookDepth10 by filling partial levels with null orders and zero counts
  • Improved Postgres config (#2010), thanks @filipmacek
  • Refined DatabentoInstrumentProvider handling 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

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 of on_data(data)
  • Changed Position.to_dict() commissions value type to list[str] (rather than an optional str of a list of strings)
  • Changed Position.to_dict() avg_px_open value type to float
  • Changed Position.to_dict() avg_px_close value type to float | None
  • Changed Position.to_dict() realized_return value type to float | None
  • Changed BettingInstrument Arrow schema fields event_open_date and market_start_time from string to uint64

Fixes

  • Fixed SocketClient TLS implementation
  • Fixed WebSocketClient error 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 OmsType in OrderMatchingEngine position ID processing (#2003), thanks @filipmacek
  • Fixed TardisCSVDataLoader snapshot5 and snapshot25 parsing (#2005), thanks @Pushkarm029
  • Fixed Binance clients venue assignment, we should use the client_id params (which match the custom client name) to communicate with the clients, and use the same 'BINANCE' venue identifiers
  • Fixed OrderMatchingEngine incorrectly attempting to process monthly bars for execution (which will fail, as no reasonable timedelta is available), thanks for reporting @frostRed
  • Fixed handling MONTH aggregation for cache.bar_types() (sorting required an internal call for the bar intervals timedelta), thanks for reporting @frostRed

NautilusTrader 1.203.0 Beta

05 Oct 20:23
Compare
Choose a tag to compare

NautilusTrader 1.203.0 Beta

Released on 5th October 2024 (UTC).

Enhancements

  • Added mode parameter to ParquetDataCatalog.write_data to control data writing behavior (#1976), thanks @faysou
  • Added batch cancel for short terms orders of dYdX (#1978), thanks @davidsblom
  • Improved OKX configuration (#1966), thanks @miller-moore
  • Improved option greeks (#1964), thanks @faysou

Internal Improvements

  • Implemented order book delta processing for SimulatedExchange (#1975), thanks @filipmacek
  • Implemented bar processing for SimulatedExchange (#1969), thanks @filipmacek
  • Implemented remaining getter functions in SimulatedExchange (#1970), thanks @filipmacek
  • Implemented rate limiting for dYdX websocket subscriptions (#1977), thanks @davidsblom
  • Refactored reconnection handling for dYdX (#1983), thanks @davidsblom
  • Refined DatabentoDataLoader internals to accommodate usage from Rust
  • Added initial large test data files download and caching capability

Breaking Changes

None

Fixes

  • Fixed out of order row groups in DataFusion filter query (#1974), thanks @twitu
  • Fixed BacktestNode data sorting regression causing clock non-decreasing time assertion error
  • Fixed circular imports for Actor, thanks @limx0
  • Fixed OKX HTTP client signatures (#1966), thanks @miller-moore
  • Fixed resubscribing to orderbooks for dYdX (#1973), thanks @davidsblom
  • Fixed generating cancel rejections for dYdX (#1982), thanks @davidsblom
  • Fixed WebSocketClient task cleanup on disconnect (#1981), thanks @twitu
  • Fixed Condition method name collisions with C true and false macros, which occurred during compilation in profiling mode

NautilusTrader 1.202.0 Beta

27 Sep 12:12
Compare
Choose a tag to compare

NautilusTrader 1.202.0 Beta

Released on 27th September 2024 (UTC).

This will be the final release with support for Python 3.10.

The numpy version requirement has been relaxed to >= 1.26.4.

Enhancements

  • Added Polymarket decentralized prediction market integration
  • Added OKX crypto exchange integration (#1951), thanks @miller-moore
  • Added BinaryOption instrument (supports Polymarket integration)
  • Added LiveExecutionEngine.inflight_check_retries config option to limit in-flight order query attempts
  • Added Symbol.root() method for obtaining the root of parent or composite symbols
  • Added Symbol.topic() method for obtaining the subscription topic of parent or composite symbols
  • Added Symbol.is_composite() method to determine if symbol is made up of parts with period (.) delimiters
  • Added underlying filter parameter for Cache.instruments(...) method
  • Added reduce_only parameter for Strategy.close_position(...) method (True by default to maintain current behavior)
  • Added reduce_only parameter for Strategy.close_all_positions(...) method (True by default to maintain current behavior)
  • Implemented flush with truncate Postgres function for PostgresCacheDatabase (#1928), thanks @filipmacek
  • Implemented file rotation for StreamingFeatherWriter with internal improvements using Clock and Cache (#1954, #1961), thanks @graceyangfan
  • Improved dYdX execution client to use RetryManager for HTTP requests (#1941), thanks @davidsblom
  • Improved Interactive Brokers adapter to use a dynamic IB gateway container_image from config (#1940), thanks @rsmb7z
  • Improved OrderBookDeltas streaming and batching based on the F_LAST flag
  • Standardized underscore thousands separators for backtest logging
  • Updated Databento publishers.json

Internal Improvements

  • Implemented OrderTestBuilder to assist testing in Rust (#1952), thanks @filipmacek
  • Implemented quote tick processing for SimulatedExchange in Rust (#1956), thanks @filipmacek
  • Implemented trade tick processing for SimulatedExchange in Rust (#1956), thanks @filipmacek
  • Refined Logger to use unbuffered stdout/stderr writers (#1960), thanks @twitu

Breaking Changes

  • Renamed batch_size_bytes to chunk_size (more accurate naming for number of data points to process per chunk in backtest streaming mode)
  • Standardized Stop-Loss (SL) and Take-Profit (TP) param ordering for OrderFactory.bracket(...) including: tp_time_in_force, tp_exec_algorithm_params, tp_tags, tp_client_order_id

Fixes

  • Fixed LoggingConfig issue for level_file when used with use_pyo3=True (was not passing through the level_file setting), thanks for reporting @xt2014
  • Fixed composite bar requests (#1923), thanks @faysou
  • Fixed average price calculation for ValueBarAggregator (#1927), thanks @faysou
  • Fixed breaking protobuf issue by pinning protobuf and grpcio for dYdX (#1929), thanks @davidsblom
  • Fixed edge case where exceptions raised in BacktestNode prior to engine initialization would not produce logs, thanks for reporting @faysou
  • Fixed handling of internal server error for dYdX (#1938), thanks @davidsblom
  • Fixed BybitWebSocketClient private channel authentication on reconnect, thanks for reporting @miller-moore
  • Fixed OrderFactory.bracket(...) param ordering for sl_time_in_force and tp_time_in_force, thanks for reporting @marcodambros
  • Fixed Cfd instrument Arrow schema and serialization
  • Fixed bar subscriptions on TWS/GW restart for Interactive Brokers (#1950), thanks @rsmb7z
  • Fixed Databento parent and continuous contract subscriptions (using new symbol root)
  • Fixed Databento FuturesSpread and OptionsSpread instrument decoding (was not correctly handling price increments and empty underlyings)
  • Fixed FuturesSpread serialization
  • Fixed OptionsSpread serialization

NautilusTrader 1.201.0 Beta

09 Sep 12:16
Compare
Choose a tag to compare

NautilusTrader 1.201.0 Beta

Released on 9th September 2024 (UTC).

Enhancements

  • Added order book deltas triggering support for OrderEmulator
  • Added OrderCancelRejected event generation for dYdX adapter (#1916), thanks @davidsblom
  • Refined handling of Binance private key types (RSA, Ed25519) and integrated into configs
  • Implemented cryptographic signing in Rust (replacing pycryptodome for Binance)
  • Removed the vendored tokio-tungstenite crate (#1902), thanks @VioletSakura-7

Breaking Changes

None

Fixes

  • Fixed BinanceFuturesEventType by adding new TRADE_LITE member, reflecting the Binance update on 2024-09-03 (UTC)