NautilusTrader 1.176.0 Beta
Released on 31st July 2023 (UTC).
Enhancements
- Implemented string interning with the ustr library, thanks @twitu
- Added
SyntheticInstrumentcapability, including dynamic derivation formulas - Added
Order.commissions()convenience method (also added to state snapshot dictionaries) - Added
Cacheposition and order state snapshots (configure viaCacheConfig) - Added
CacheDatabaseConfig.timestamps_as_iso8601to persist timestamps as ISO 8601 strings - Added
LiveExecEngineConfig.filter_position_reportsto filter position reports from reconciliation - Added
Strategy.cancel_gtd_expiryto cancel managed GTD order expiration - Added Binance Futures support for modifying
LIMITorders - Added
BinanceExecClientConfig.max_retriesoption (for retrying order submit and cancel requests) - Added
BinanceExecClientConfig.retry_delayoption (the delay between retry attempts) - Added
BinanceExecClientConfig.use_reduce_onlyoption (default true to retain current behavior) - Added
BinanceExecClientConfig.use_position_idsoption (default true to retain current behavior) - Added
BinanceExecClientConfig.treat_expired_as_canceledoption (default false to retain current behavior) - Added
BacktestVenueConfig.use_reduce_onlyoption (default true to retain current behavior) - Added
MessageBus.is_pending_request(...)method - Added
LevelAPI for coreOrderBook(exposes the bid and ask levels for the order book) - Added
Actor.is_pending_request(...)convenience method - Added
Actor.has_pending_requests()convenience method - Added
Actor.pending_requests()convenience method - Added
USDP(Pax Dollar) andTUSD(TrueUSD) stablecoins - Improved
OrderMatchingEnginehandling when no fills (an error is now logged) - Improved
Binancelive clients logging - Upgraded Cython to 3.0.0 stable
Breaking Changes
- Moved
filter_unclaimed_external_ordersfromExecEngineConfigtoLiveExecEngineConfig - All
Actor.request_*methods no longer take arequest_id, but now return aUUID4request ID - Removed
BinanceExecClientConfig.warn_gtd_to_gtd(now always anINFOlevel log) - Renamed
Instrument.native_symboltoraw_symbol(you must manually migrate or flush your cached instruments) - Renamed
Position.cost_currencytosettlement_currency(standardize terminology) - Renamed
CacheDatabaseConfig.flushtoflush_on_start(for clarity) - Changed
Order.ts_lastto represent the UNIX nanoseconds timestamp of the last event (rather than fill)
Fixes
- Fixed
Portfolio.net_positioncalculation to useDecimalrather thanfloatto avoid rounding errors - Fixed race condition on
OrderFactoryorder identifiers generation - Fixed dictionary representation of orders for
venue_order_id(for three order types) - Fixed
Currencyregistration with core global map on creation - Fixed serialization of
OrderInitialized.exec_algorithm_paramsto spec (bytes rather than string) - Fixed assignment of position IDs for contingency orders (when parent filled)
- Fixed
PENDING_CANCEL->EXPIREDas valid state transition (real world possibility) - Fixed fill handling of
reduce_onlyorders when partially filled - Fixed Binance reconciliation which was requesting reports for the same symbol multiple times
- Fixed Binance Futures native symbol parsing (was actually Nautilus symbol values)
- Fixed Binance Futures
PositionStatusReportparsing of position side - Fixed Binance Futures
TradeReportassignment of position ID (was hardcoded to hedging mode) - Fixed Binance execution submitting of order lists
- Fixed Binance commission rates requests for
InstrumentProvider - Fixed Binance
TriggerTypeparsing #1154, thanks for reporting @davidblom603 - Fixed Binance order parsing of invalid orders in execution reports #1157, thanks for reporting @graceyangfan
- Extended
BinanceOrderTypeenum members to include undocumentedINSURANCE_FUND, thanks for reporting @Tzumx - Extended
BinanceSpotPermissionsenum members #1161, thanks for reporting @davidblom603