Releases: nautechsystems/nautilus_trader
Releases · nautechsystems/nautilus_trader
NautilusTrader 1.170.0 Beta
NautilusTrader 1.170.0 Beta
Released on 11th March 2023 (UTC).
Breaking Changes
- Moved
backtest.data.providers
totest_kit.providers
- Moved
backtest.data.wranglers
topersistence.wranglers
(to be consolidated) - Moved
backtest.data.loaders
topersistence.loaders
(to be consolidated) - Renamed
from_datetime
tostart
across data request methods and properties - Renamed
to_datetime
toend
across data request methods and properties - Removed
RiskEngineConfig.deny_modify_pending_update
(as now redundant with new pending event sequencing) - Removed redundant log sink machinery
- Changed parquet catalog schema dictionary integer key widths/types
- Invalidated all pickled data due to Cython 3.0.0b1 upgrade
Enhancements
- Added logging to file at core Rust level
- Added
DataCatalogConfig
for more cohesive data catalog configuration - Added
DataEngine.register_catalog
to support historical data requests - Added
catalog_config
field to baseNautilusKernelConfig
- Changed to immediately caching orders and order lists in
Strategy
- Changed to checking duplicate
client_order_id
andorder_list_id
inStrategy
- Changed generating and applying
OrderPendingUpdate
andOrderPendingCancel
inStrategy
PortfolioAnalyzer
PnL statistics now take optionalunrealized_pnl
- Backtest performance statistics now include unrealized PnL in total PnL
Fixes
- Fixed Binance Futures trigger type parsing
- Fixed
DataEngine
bar subscribe and unsubscribe logic, thanks for reporting @rsmb7z - Fixed
Actor
handling of bars, thanks @limx0 - Fixed
CancelAllOrders
command handling for contingent orders not yet in matching core - Fixed
TrailingStopMarketOrder
slippage calculation when notrigger_price
, thanks for reporting @rsmb7z - Fixed
BinanceSpotInstrumentProvider
parsing of quote asset (was using base), thanks for reporting @logogin - Fixed undocumented Binance time in force 'GTE_GTC', thanks for reporting @graceyangfan
- Fixed
Position
calculation oflast_qty
when commission currency was equal to base currency, thanks for reporting @rsmb7z - Fixed
BacktestEngine
post backtest run PnL performance statistics for currencies traded per venue, thanks for reporting @rsmb7z
NautilusTrader 1.169.0 Beta
NautilusTrader 1.169.0 Beta
Released on 18th February 2023 (UTC).
Breaking Changes
NautilusConfig
objects now pseudo-immutable from new msgspec 0.13.0- Renamed
OrderFactory.bracket
parampost_only_entry
->entry_post_only
(consistency with other params) - Renamed
OrderFactory.bracket
parampost_only_tp
->tp_post_only
(consistency with other params) - Renamed
build_time_bars_with_no_updates
->time_bars_build_with_no_updates
(consistency with new param) - Renamed
OrderFactory.set_order_count()
->set_client_order_id_count()
(clarity) - Renamed
TradingNode.start()
toTradingNode.run()
Enhancements
- Complete overhaul and improvements to Binance adapter(s), thanks @poshcoe
- Added Binance aggregated trades functionality with
use_agg_trade_ticks
, thanks @poshcoe - Added
time_bars_timestamp_on_close
option for configurable bar timestamping (True by default) - Added
OrderFactory.generate_client_order_id()
(calls internal generator) - Added
OrderFactory.generate_order_list_id()
(calls internal generator) - Added
OrderFactory.create_list(...)
as easier method for creating order lists - Added
__len__
implementation forOrderList
(returns length of orders) - Implemented optimized logger using Rust MPSC channel and separate thread
- Expose and improve
MatchingEngine
public API for custom functionality - Exposed
TradingNode.run_async()
for easier running from async context - Exposed
TradingNode.stop_async()
for easier stopping from async context
Fixes
- Fixed registration of
SimulationModule
(and refineActor
base registration) - Fixed loading of previously emulated and transformed orders (handles transforming
OrderInitialized
event) - Fixed handling of
MARKET_TO_LIMIT
orders in matching and risk engines, thanks for reporting @martinsaip
NautilusTrader 1.168.0 Beta
NautilusTrader 1.168.0 Beta
Released on 29th January 2023 (UTC).
Breaking Changes
- Removed
Cache.clear_cache()
(redundant with the.reset()
method)
Enhancements
- Added
Cache
.add(...)
and.get(...)
for general 'user/custom' objects (as bytes) - Added
CacheDatabase
.add(...)
and.load()
for general cache objects (as bytes) - Added
RedisCacheDatabase
.add(...)
and.load()
for general Redis persisted bytes objects (as bytes) - Added
Cache.actor_ids()
- Added
Actor
cached state saving and loading functionality - Improved logging for called action handlers when not overridden
Fixes
- Fixed configuration of loading and saving actor and strategy state
NautilusTrader 1.167.0 Beta
NautilusTrader 1.167.0 Beta
Released on 28th January 2023 (UTC).
Breaking Changes
- Renamed
OrderBookData.update_id
tosequence
- Renamed
BookOrder.id
toorder_id
Enhancements
- Introduced Rust pyo3 based
ParquetReader
andParquetWriter
, thanks @twitu - Added
msgbus.is_subscribed
(to check if topic and handler already subscribed) - Simplified message type model and introduce CQRS-ish live messaging architecture
Fixes
- Fixed Binance data clients order book startup buffer handling
- Fixed
NautilusKernel
redundant initialization of event loop for backtesting, thanks @limx0 - Fixed
BacktestNode
disposal sequence - Fixed quick start docs and notebook
NautilusTrader 1.166.0 Beta
NautilusTrader 1.166.0 Beta
Released on 17th January 2023 (UTC).
Breaking Changes
Position.unrealized_pnl
nowNone
until any realized PnL is generated (to reduce ambiguity)
Enhancements
- Added instrument status update subscription handlers, thanks @limx0
- Improvements to InteractiveBrokers
DataClient
, thanks @rsmb7z - Improvements to async task handling for live clients
- Various improvements to Betfair adapter, thanks @limx0
Fixes
- Fixed netted
Position
realized_pnl
andrealized_return
fields, which were incorrectly cumulative - Fixed netted
Position
flip logic (now correctly 'resets' position) - Various fixes for Betfair adapter, thanks @limx0
- InteractiveBrokers integration docs fixes
NautilusTrader 1.165.0 Beta
NautilusTrader 1.165.0 Beta
Released on 14th January 2023 (UTC).
A number of enum variant names have been changed in favour of explicitness,
and also to avoid C naming collisions.
Breaking Changes
- Renamed
AggressorSide.NONE
toNO_AGGRESSOR
- Renamed
AggressorSide.BUY
toBUYER
- Renamed
AggressorSide.SELL
toSELLER
- Renamed
AssetClass.CRYPTO
toCRYPTOCURRENCY
- Renamed
LiquiditySide.NONE
toNO_LIQUIDITY_SIDE
- Renamed
OMSType
toOmsType
- Renamed
OmsType.NONE
toUNSPECIFIED
- Renamed
OrderSide.NONE
toNO_ORDER_SIDE
- Renamed
PositionSide.NONE
toNO_POSITION_SIDE
- Renamed
TrailingOffsetType.NONE
toNO_TRAILING_OFFSET
- Removed
TrailingOffsetType.DEFAULT
- Renamed
TriggerType.NONE
toNO_TRIGGER
- Renamed
TriggerType.LAST
toLAST_TRADE
- Renamed
TriggerType.MARK
toMARK_PRICE
- Renamed
TriggerType.INDEX
toINDEX_PRICE
- Renamed
ComponentState.INITIALIZED
toREADY
- Renamed
OrderFactory.bracket(post_only)
topost_only_entry
- Moved
manage_gtd_expiry
toStrategy.submit_order(...)
andStrategy.submit_order_list(...)
Enhancements
- Added
BarSpecification.timedelta
property, thanks @rsmb7z - Added
DataEngineConfig.build_time_bars_with_no_updates
option - Added
OrderFactory.bracket(post_only_tp)
param - Added
OrderListIdGenerator
and integrate withOrderFactory
- Added
Cache.add_order_list(...)
- Added
Cache.order_list(...)
- Added
Cache.order_lists(...)
- Added
Cache.order_list_exists(...)
- Added
Cache.order_list_ids(...)
- Improved generation of
OrderListId
from factory to ensure uniqueness - Added auction matches for backtests, thanks @limx0
- Added
.timedelta
property toBarSpecification
, thanks @rsmb7z - Numerous improvements to the Betfair adapter, thanks @limx0
- Improvements to Interactive Brokers data subscriptions, thanks @rsmb7z
- Added
DataEngineConfig.validate_data_sequence
(False by default and currently only forBar
data), thanks @rsmb7z
Fixes
- Added
TRD_GRP_*
enum variants for Binance spot permissions - Fixed
PARTIALLY_FILLED
->EXPIRED
order state transition, thanks @bb01100100
NautilusTrader 1.164.0 Beta
NautilusTrader 1.164.0 Beta
Released on 23rd December 2022 (UTC).
Breaking Changes
None
Enhancements
- Added managed GTD order expiry (experimental feature, config may change)
- Added Rust
ParquetReader
andParquetWriter
(forQuoteTick
andTradeTick
only)
Fixes
- Fixed
MARKET_IF_TOUCHED
orders forOrderFactory.bracket(..)
- Fixed
OrderEmulator
trigger event handling for live trading - Fixed
OrderEmulator
transformation to market orders which had a GTD time in force - Fixed serialization of
OrderUpdated
events - Fixed typing and edge cases for new
msgspec
, thanks @limx0 - Fixed data wrangler processing with missing data, thanks @rsmb7z
NautilusTrader 1.163.0 Beta
NautilusTrader 1.163.0 Beta
Released on 17th December 2022 (UTC).
Breaking Changes
None
Enhancements
None
Fixes
- Fixed
MARKET_IF_TOUCHED
andLIMIT_IF_TOUCHED
trigger and modify behavior - Fixed
MatchingEngine
updates of stop order types - Fixed combinations of passive or immediate trigger vs passive or immediate fill behavior
- Fixed memory leaks from passing string pointers from Rust, thanks @twitu
NautilusTrader 1.162.0 Beta
NautilusTrader 1.162.0 Beta
Released on 12th December 2022 (UTC).
Breaking Changes
OrderFactory
bracket order methods consolidated to.bracket(...)
Enhancements
- Extended
OrderFactory
to provide more bracket order types - Simplified GitHub CI and removed
nox
dependency
Fixes
- Fixed
OrderBook
sorting for bid side, thanks @gaugau3000 - Fixed
MARKET_TO_LIMIT
order initial fill behaviour - Fixed
BollingerBands
indicator mid-band calculations, thanks zhp (Discord)
NautilusTrader 1.161.0 Beta
NautilusTrader 1.161.0 Beta
Released on 10th December 2022 (UTC).
Breaking Changes
- Renamed
OrderFactory.bracket_market
toOrderFactory.bracket_market_entry
- Renamed
OrderFactory.bracket_limit
toOrderFactory.bracket_limit_entry
- Renamed
OrderFactory
bracket orderprice
andtrigger_price
parameters
Enhancements
- Added support for Python 3.11
- Consolidated config objects to
msgspec
providing better performance and correctness - Added
OrderFactory.bracket_stop_limit_entry_stop_limit_tp(...)
- Numerous improvements to the Interactive Brokers adapter, thanks @limx0 and @rsmb7z
- Removed dependency on
pydantic
Fixes
- Fixed
STOP_MARKET
order behavior to fill at market on immediate trigger - Fixed
STOP_LIMIT
order behavior to fill at market on immediate trigger and marketable - Fixed
STOP_LIMIT
order behavior to fill at market on processed trigger and marketable - Fixed
LIMIT_IF_TOUCHED
order behavior to fill at market on immediate trigger and marketable - Fixed Binance start and stop time units for bar (kline) requests, thanks @Tzumx
RiskEngineConfig.bypass
set toTrue
will now correctly bypass throttlers, thanks @DownBadCapital- Fixed updating of emulated orders
- Numerous fixes to the Interactive Brokers adapter, thanks @limx0 and @rsmb7z