Releases: nautechsystems/nautilus_trader
Releases · nautechsystems/nautilus_trader
NautilusTrader 1.210.0 Beta
NautilusTrader 1.210.0 Beta
Released on 10th January 2025 (UTC).
Enhancements
- Added
PerContractFeeModel
, thanks @stefansimik - Added
DYDXInternalError
andDYDXOraclaPrice
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 forStrategyConfig
(#2183), thanks @sunlei - Added
bar_adaptive_high_low_ordering
toBacktestVenueConfig
(#2188), thanks @faysou and @stefansimik
Breaking Changes
- Removed optional
value
param fromUUID4
(useUUID4.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 enforcepd.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
andtags
data types changed fromstring
tobinary
) - Changed order dictionary representation field types for
avg_px
andslippage
fromstr
tofloat
(as out of alignment with position events) - Changed
aggregation_source
filter parameter forCache.bar_types(...)
to optional with default ofNone
Internal Improvements
- Improved market order handling when no size available in book (now explicitly rejects)
- Improved validation for
TradeTick
by ensuringsize
is always positive - Improved validation for
OrderBookDelta
by ensuringorder.size
is positive whenaction
is eitherADD
orUPDATE
- Improved validation for
BarSpecification
by ensuringstep
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 thanMarketDataClient
- 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 forDataEngine
andPolymarketExecutionClient
- 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
forPolymarketOrderStatus
- 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
andOrderReleased
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 inOrderMatchingEngine
(#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
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 someOrderBook
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 asvenue
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
fromnautilus_trader.persistence.loaders
tonautilus_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
NautilusTrader 1.208.0 Beta
Released on 15th December 2024 (UTC).
Enhancements
- Added specific
params
for data subscriptions and requests which supports Databentobbo-1s
andbbo-1m
quotes (#2083, #2094), thanks @faysou - Added support for
STOP_LIMIT
entry order type forOrderFactory.bracket(...)
- Added
.group_bids(...)
and.group_asks(...)
forOrderBook
- Added
.bids_to_dict()
and.asks_to_dict()
forOrderBook
- Added
ShutdownSystem
command andshutdown_system(...)
method for components (system-wide shutdown for backtest, sandbox, or live environments) - Added
max_ws_reconnection_tries
toBybitDataClientConfig
(#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
toBybitExecClientConfig
(#2109), thanks @sunlei - Added
margin_init
,margin_maint
,maker_fee
,taker_fee
params and attributes forFuturesContract
- Added
margin_init
,margin_maint
,maker_fee
,taker_fee
params and attributes forFuturesSpread
- Added
margin_init
,margin_maint
,maker_fee
,taker_fee
params and attributes forOptionsContract
- Added
margin_init
,margin_maint
,maker_fee
,taker_fee
params and attributes forOptionsSpread
- Improved Databento symbology support for Interactive Brokers (#2113), thanks @rsmb7z
- Improved support of
STOP_MARKET
andSTOP_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()
forOrderBook
in Rust - Added type stubs for
core
subpackage - Added type stubs for
common
andmodel
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
toBookLevel
(standardizes order book type naming conventions) - Renamed
Ladder
toBookLadder
(standardizes order book type naming conventions) - Changed
FuturesContract
Arrow schema (addedmargin_init
,margin_maint
,maker_fee
,taker_fee
) - Changed
FuturesSpread
Arrow schema (addedmargin_init
,margin_maint
,maker_fee
,taker_fee
) - Changed
OptionsContract
Arrow schema (addedmargin_init
,margin_maint
,maker_fee
,taker_fee
) - Changed
OptionsSpread
Arrow schema (addedmargin_init
,margin_maint
,maker_fee
,taker_fee
)
Fixes
- Fixed data requests when specifying
end
with no catalog registered (comparison betweenpd.Timestamp
andNoneType
) - 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
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
andSTOP_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 forDatabentoDataLoader
methods - Improved
Cache
behavior when adding more recent quotes, trades, or bars (now adds to cache)
Internal Improvements
- Ported
Portfolio
andAccountManager
to Rust (#2058), thanks @Pushkarm029 - Implemented
AsRef<str>
forPrice
,Money
, andCurrency
- 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
toLAST_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
andlot_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
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 ofreason
string (None
is now allowed which will become the string'None'
) - Improved
OrderCancelRejected
handling ofreason
string (None
is now allowed which will become the string'None'
) - Improved
OrderModifyRejected
handling ofreason
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 withuse_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 optionalint
(#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
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 toTradingNode.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 fromtests
tonautilus_trader
package (#2020), thanks @faysou
Fixes
- Fixed use of Redis
KEYS
command which, is unsupported in cluster environments (replaced withSCAN
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 tolist[str]
(was a concatenatedstr
) - Fixed
OrderInitialized.to_dict()
linked_order_ids
value type tolist[str]
(was a concatenatedstr
) - Fixed Betfair clients shutdown (#2037), thanks @limx0
NautilusTrader 1.204.0 Beta
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
andbbo-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 forPolymarketDataClientConfig
, 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 forTimeEvent
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
- Ported
Throttler
to Rust (#1988), thanks @Pushkarm029 and @twitu - Ported
BettingInstrument
to Rust - Refined
RateLimiter
forWebSocketClient
and add tests (#2000), thanks @Pushkarm029 - Refined
WebSocketClient
to close existing tasks on reconnect (#1986), thanks @davidsblom - Remove mutable references in
CacheDatabaseAdapter
trait in Rust (#2015), thanks @filipmacek - Use Rust rate limiter for dYdX websockets (#1996, #1999), thanks @davidsblom
- Improved error logs for dYdX websocket subscriptions (#1993), thanks @davidsblom
- Standardized log and error message syntax in Rust
- Continue porting
SimulatedExchange
andOrderMatchingEngine
to Rust (#1997, #1998, #2001, #2003, #2004, #2006, #2007, #2009, #2014), thanks @filipmacek
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 ofon_data(data)
- Changed
Position.to_dict()
commissions
value type tolist[str]
(rather than an optionalstr
of a list of strings) - Changed
Position.to_dict()
avg_px_open
value type tofloat
- Changed
Position.to_dict()
avg_px_close
value type tofloat | None
- Changed
Position.to_dict()
realized_return
value type tofloat | None
- Changed
BettingInstrument
Arrow schema fieldsevent_open_date
andmarket_start_time
fromstring
touint64
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
inOrderMatchingEngine
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 clientname
) 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 reasonabletimedelta
is available), thanks for reporting @frostRed - Fixed handling
MONTH
aggregation forcache.bar_types()
(sorting required an internal call for the bar intervalstimedelta
), thanks for reporting @frostRed
NautilusTrader 1.203.0 Beta
NautilusTrader 1.203.0 Beta
Released on 5th October 2024 (UTC).
Enhancements
- Added
mode
parameter toParquetDataCatalog.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 Ctrue
andfalse
macros, which occurred during compilation in profiling mode
NautilusTrader 1.202.0 Beta
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 forCache.instruments(...)
method - Added
reduce_only
parameter forStrategy.close_position(...)
method (True
by default to maintain current behavior) - Added
reduce_only
parameter forStrategy.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 usingClock
andCache
(#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 theF_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
tochunk_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 forlevel_file
when used withuse_pyo3=True
(was not passing through thelevel_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
andgrpcio
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 forsl_time_in_force
andtp_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
andOptionsSpread
instrument decoding (was not correctly handling price increments and empty underlyings) - Fixed
FuturesSpread
serialization - Fixed
OptionsSpread
serialization
NautilusTrader 1.201.0 Beta
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 newTRADE_LITE
member, reflecting the Binance update on 2024-09-03 (UTC)