v1.214.0

nautechsystems/nautilus_traderv1.214.0Mar 28, 2025by github-actions[bot]

AI Summary

This release adds initial integration for Coinbase International Exchange and introduces Mark Price and Index Price data types. It also refactors the `Cache.add_mark_price` method to accept a dedicated update object.

Key Highlights

  • Added initial integration for Coinbase International Exchange
  • Introduced Mark Price and Index Price data types and subscriptions
  • Refactored `Cache.add_mark_price` to accept `MarkPriceUpdate` object

Breaking Changes

  • Changed `Cache.add_mark_price(self, InstrumentId instrument_id, Price price)` to `add_mark_price(self, MarkPriceUpdate mark_price)`

New Features

  • Added `time_in_force` parameter for `Strategy.close_position` and `Strategy.close_all_positions`
  • Added `MarkPriceUpdate` and `IndexPriceUpdate` data types
  • Added Actor subscription methods (`subscribe_mark_prices`, `on_mark_price`, etc.)
  • Added Cache methods for mark and index prices
  • Added `UnixNanos.to_rfc3339()` for ISO 8601 string conversion
  • Added `recv_window_ms` config for Bybit WebSocket order client

Full Release Notes

# NautilusTrader 1.214.0 Beta

Released on 28th March 2025 (UTC).

### Enhancements
- Added [Coinbase International Exchange](https://www.coinbase.com/en/international-exchange) initial integration adapter
- Added `time_in_force` parameter for `Strategy.close_position(...)`
- Added `time_in_force` parameter for `Strategy.close_all_positions(...)`
- Added `MarkPriceUpdate` data type
- Added `IndexPriceUpdate` data type
- Added `Actor.subscribe_mark_prices(...)`
- Added `Actor.subscribe_index_prices(...)`
- Added `Actor.unsubscribe_mark_prices(...)`
- Added `Actor.unsubscribe_index_prices(...)`
- Added `Actor.on_mark_price(...)`
- Added `Actor.on_index_price(...)`
- Added `Cache.mark_price(...)`
- Added `Cache.index_price(...)`
- Added `Cache.mark_prices(...)`
- Added `Cache.index_prices(...)`
- Added `Cache.mark_price_count(...)`
- Added `Cache.index_price_count(...)`
- Added `Cache.has_mark_prices(...)`
- Added `Cache.has_index_prices(...)`
- Added `UnixNanos.to_rfc3339()` for ISO 8601 (RFC 3339) strings
- Added `recv_window_ms` config for Bybit WebSocket order client (#2466), thanks @sunlei
- Enhanced `UnixNanos` string parsing to support YYYY-MM-DD date format (interpreted as midnight UTC)

### Breaking Changes
- Changed `Cache.add_mark_price(self, InstrumentId instrument_id, Price price)` to `add_mark_price(self, MarkPriceUpdate mark_price)`

### Internal Improvements
- Improved `WebSocketClient` and `SocketClient` design with dedicated writer task and message channel
- Completed global message bus design in Rust (#2460), thanks @filipmacek
- Refactored enum dispatch (#2461), thanks @filipmacek
- Refactored data interfaces to messages in Rust
- Refined catalog file operations in Rust (#2454), thanks @faysou
- Refined quote ticks and klines for Bybit (#2465), thanks @davidsblom
- Standardized use of `anyhow::bail` (#2459), thanks @faysou
- Ported `add_venue` for `BacktestEngine` in Rust (#2457), thanks @filipmacek
- Ported `add_instrument` for `BacktestEngine` in Rust (#2469), thanks @filipmacek
- Upgraded `redis` crate to v0.29.2

### Fixes
- Fixed race condition on multiple reconnect attempts for `WebSocketClient` and `SocketClient`
- Fixed position state snapshot `ts_snapshot` value, which was always `ts_last` instead of timestamp when the snapshot was taken
- Fixed instrument parsing for Tardis, now correctly applies changes and filters by `effective`
- Fixed `OrderStatusReport` for conditional orders of dYdX (#2467), thanks @davidsblom
- Fixed submitting stop market orders for dYdX (#2471), thanks @davidsblom
- Fixed retrying HTTP calls on `DecodeError` for dYdX (#2472), thanks @davidsblom
- Fixed `LIMIT_IF_TOUCHED` order type enum parsing for Bybit
- Fixed `MARKET` order type enum parsing for Bybit
- Fixed quote ticks for Polymarket to only emit new quote ticks when the top-of-book changes
- Fixed error on cancel order for IB (#2475), thanks @FGU1

### Documentation Updates
- Improved custom data documentation (#2470), thanks @faysou

### Deprecations
None