Releases: nautechsystems/nautilus_trader
NautilusTrader 1.123.0 Beta
NautilusTrader 1.123.0 Beta - Release Notes
A major feature of this release is a complete re-design of serialization for the
platform, along with initial support for the Parquet format.
The MessagePack serialization functionality has been refined and retained.
In the interests of explicitness there is now a convention that timestamps are
named either timestamp_ns
, or prepended with ts
. Timestamps which are
represented with an int64
are always in nanosecond resolution, and appended
with _ns
accordingly.
Initial scaffolding for new backtest data tooling has been added.
Breaking Changes
- Renamed
OrderState.PENDING_REPLACE
toOrderState.PENDING_UPDATE
- Renamed
timestamp_origin_ns
tots_event_ns
. - Renamed
timestamp_ns
for data tots_recv_ns
. - Renamed
updated_ns
tots_updated_ns
. - Renamed
submitted_ns
tots_submitted_ns
. - Renamed
rejected_ns
tots_rejected_ns
. - Renamed
accepted_ns
tots_accepted_ns
. - Renamed
pending_ns
tots_pending_ns
. - Renamed
canceled_ns
tots_canceled_ns
. - Renamed
triggered_ns
tots_triggered_ns
. - Renamed
expired_ns
tots_expired_ns
. - Renamed
execution_ns
tots_filled_ns
. - Renamed
OrderBookLevel
toBookLevel
. - Renamed
Order.volume
toOrder.size
.
Enhancements
- Adapter dependencies are now optional extras at installation.
- Added arrow/parquet serialization.
- Added object
to_dict()
andfrom_dict()
methods. - Added
Order.is_pending_update
. - Added
Order.is_pending_cancel
. - Added
run_analysis
config option forBacktestEngine
. - Removed
TradeMatchId
in favour of bare string. - Removed redundant conversion to
pd.Timestamp
when checking timestamps. - Removed redundant data
to_serializable_str
methods. - Removed redundant data
from_serializable_str
methods. - Removed redundant
__ne__
implementations. - Removed redundant
MsgPackSerializer
cruft. - Removed redundant
ObjectCache
andIdentifierCache
. - Removed redundant string constants.
Fixes
- Fixed millis to nanos in
CCXTExecutionClient
. - Added missing trigger to
UpdateOrder
handling. - Removed all
import *
.
NautilusTrader 1.122.0 Beta
NautilusTrader 1.122.0 Beta - Release Notes
This release includes numerous breaking changes with a view to enhancing the core
functionality and API of the platform. The data and execution caches have been
unified for simplicity. There have also been large changes to the accounting
functionality, with 'hooks' added in preparation for accurate calculation and
handling of margins.
Breaking Changes
- Renamed
Account.balance()
toAccount.balance_total()
. - Consolidated
TradingStrategy.data
intoTradingStrategy.cache
. - Consolidated
TradingStrategy.execution
intoTradingStrategy.cache
. - Moved
redis
subpackage intoinfrastructure
. - Moved some accounting methods back to
Instrument
. - Removed
Instrument.market_value()
. - Renamed
Portfolio.market_values()
toPortfolio.net_exposures()
. - Renamed
Portfolio.market_value()
toPortfolio.net_exposure()
. - Renamed
InMemoryExecutionDatabase
toBypassCacheDatabase
. - Renamed
Position.relative_qty
toPosition.net_qty
. - Renamed
default_currency
tobase_currency
. - Removed
cost_currency
property fromInstrument
.
Enhancements
ExecutionClient
now has the option of calculating account state.- Unified data and execution caches into single
Cache
. - Improved configuration options and naming.
- Simplified
Portfolio
component registration. - Simplified wiring of
Cache
into components. - Added
repr
to execution messages. - Added
AccountType
enum. - Added
cost_currency
toPosition
. - Added
get_cost_currency()
toInstrument
. - Added
get_base_currency()
toInstrument
.
Fixes
- Fixed
Order.is_working
forPENDING_CANCEL
andPENDING_REPLACE
states. - Fixed loss of precision for nanosecond timestamps in Redis.
- Fixed state reconciliation when uninstantiated client.
NautilusTrader 1.121.0 Beta
NautilusTrader 1.121.0 Beta - Release Notes
In this release there has been a major change to the use of inlines for method
signatures. From the Cython docs:
"Note that class-level cdef functions are handled via a virtual function table
so the compiler won’t be able to inline them in almost all cases.".
https://cython.readthedocs.io/en/latest/src/userguide/pyrex_differences.html?highlight=inline.
It has been found that adding inline
to method signatures makes no difference
to the performance of the system - and so they have been removed to reduce
'noise' and simplify the codebase. Please note that the use of inline
for
module level functions will be passed to the C compiler with the expected
result of inlining the function.
Breaking Changes
BacktestEngine.add_venue
addedvenue_type
to method params.ExecutionClient
addedvenue_type
to constructor params.TraderId
instantiation.StrategyId
instantiation.Instrument
serialization.
Enhancements
Portfolio
pending calculations if data not immediately available.- Added
instruments
subpackage with expanded class definitions. - Added
timestamp_origin_ns
timestamp when originally occurred. - Added
AccountState.is_reported
flagging if reported by exchange or calculated. - Simplified
TraderId
andStrategyId
identifiers. - Improved
ExecutionEngine
order routing. - Improved
ExecutionEngine
client registration. - Added order routing configuration.
- Added
VenueType
enum and parser. - Improved param typing for identifier generators.
- Improved log formatting of
Money
andQuantity
thousands commas.
Fixes
- CCXT
TICK_SIZE
precision mode - size precisions (BitMEX, FTX). - State reconciliation (various bugs).
NautilusTrader 1.120.0 Beta
NautilusTrader 1.120.0 Beta - Release Notes
This release focuses on simplifications and enhancements of existing machinery.
Breaking Changes
Position
now requires anInstrument
param.is_inverse
removed fromOrderFilled
.ClientId
removed fromTradingCommand
and subclasses.AccountId
removed fromTradingCommand
and subclasses.TradingCommand
serialization.
Enhancements
- Add
Instrument
methods toExecutionCache
. - Add
Venue
filter to cache queries. - Move order validations into
RiskEngine
. - Refactor
RiskEngine
. - Remove routing type information from identifiers.
Fixes
None
NautilusTrader 1.119.0 Beta
NautilusTrader 1.119.0 Beta - Release Notes
This release applies another major refactoring to the value object API for
BaseDecimal
and its subclasses Price
and Quantity
. Previously a precision
was not explicitly required when passing in a decimal.Decimal
type which
sometimes resulted in unexpected behavior when a user passed in a decimal with
a very large precision (when wrapping a float with decimal.Decimal
).
Convenience methods have been added to Price
and Quantity
where precision
is implicitly zero for ints, or implied in the number of digits after the '.'
point for strings. Convenience methods have also been added to Instrument
to
assist the UX.
The serialization of Money
has been improved with the inclusion of the
currency code in the string delimited by whitespace. This avoids an additional
field for the currency code.
RiskEngine
has been rewired ahead of ExecutionEngine
which clarifies areas
of responsibility and cleans up the registration sequence and allows a more
natural flow of command and event messages.
Breaking Changes
- Serializations involving
Money
. - Changed usage of
Price
andQuantity
. - Renamed
BypassExecutionDatabase
toInMemoryExecutionDatabase
.
Enhancements
- Rewired
RiskEngine
andExecutionEngine
sequence. - Added
Instrument
database operations. - Added
MsgPackInstrumentSerializer
. - Added
Price.from_str()
. - Added
Price.from_int()
. - Added
Quantity.zero()
. - Added
Quantity.from_str()
. - Added
Quantity.from_int()
. - Added
Instrument.make_price()
. - Added
Instrument.make_qty()
. - Improved serialization of
Money
.
Fixes
- Handling of precision for
decimal.Decimal
values passed to value objects.
NautilusTrader 1.118.0 Beta
NautilusTrader 1.118.0 Beta - Release Notes
This release simplifies the backtesting workflow by removing the need for the
intermediate BacktestDataContainer
. There has also been some simplifications
for OrderFill
events, as well as additional order states and events.
Breaking Changes
- Standardized all 'cancelled' references to 'canceled'.
SimulatedExchange
no longer generatesOrderAccepted
forMarketOrder
.- Removed redundant
BacktestDataContainer
. - Removed redundant
OrderFilled.cum_qty
. - Removed redundant
OrderFilled.leaves_qty
. BacktestEngine
constructor simplified.BacktestMarketDataClient
no longer needs instruments.- Rename
PerformanceAnalyzer.get_realized_pnls
to.realized_pnls
.
Enhancements
- Re-engineered
BacktestEngine
to take data directly. - Added
OrderState.PENDING_CANCEL
. - Added
OrderState.PENDING_REPLACE
. - Added
OrderPendingReplace
event. - Added
OrderPendingCancel
event. - Added
OrderFilled.is_buy
property (with correspondingis_buy_c()
fast method). - Added
OrderFilled.is_sell
property (with correspondingis_sell_c()
fast method). - Added
Position.is_opposite_side(OrderSide side)
convenience method. - Modified the
Order
FSM and event handling for the above. - Consolidated event generation into
ExecutionClient
base class. - Refactored
SimulatedExchange
for greater clarity.
Fixes
ExecutionCache
positions open queries.- Exchange accounting for exchange
OMSType.NETTING
. - Position flipping logic for exchange
OMSType.NETTING
. - Multi-currency account terminology.
- Windows wheel packaging.
- Windows path errors.
NautilusTrader 1.117.0 Beta
NautilusTrader 1.117.0 Beta - Release Notes
The major thrust of this release is added support for order book data in
backtests. The SimulatedExchange
now maintains order books of each instrument
and will accurately simulate market impact with L2/L3 data. For quote and trade
tick data a L1 order book is used as a proxy. A future release will include
improved fill modelling assumptions and customizations.
Breaking Changes
OrderBook.create
now takesInstrument
andOrderBookLevel
.
Enhancements
SimulatedExchange
now maintains order books internally.LiveLogger
now exhibits better blocking behavior and logging.
Fixes
- Various patches to the
Betfair
adapter. - Documentation builds.
NautilusTrader 1.116.1 Beta
NautilusTrader 1.116.1 Beta - Release Notes
Announcing official Windows 64-bit support.
Several bugs have been identified and fixed.
Breaking Changes
None
Enhancements
- Performance test refactoring.
- Remove redundant performance harness.
- Add
Queue.peek()
to high-performance queue. - GitHub action refactoring, CI for Windows.
- Builds for 32-bit platforms.
Fixes
OrderBook.create
forOrderBookLevel.L3
now returns correct book.- Betfair handling of execution IDs.
NautilusTrader 1.116.0 Beta
NautilusTrader 1.116.0 Beta - Release Notes
This release includes substantial breaking changes.
Further fundamental changes to the core API have been made.
Breaking Changes
- Introduce
ClientId
for data and execution client identification. - Standardize client IDs to upper case.
- Rename
OrderBookOperation
toOrderBookDelta
. - Rename
OrderBookOperations
toOrderBookDeltas
. - Rename
OrderBookOperationType
toOrderBookDeltaType
.
Enhancements
None
Fixes
None
NautilusTrader 1.115.0 Beta
NautilusTrader 1.115.0 Beta - Release Notes
This release includes substantial breaking changes.
Due to recent feedback and much further thought - a major renaming has been carried
out involving order identifiers. The Order
is the only domain object in the
model which is identified with more than one ID. Due to this, more explicitness
helps to ensure correct logic. Previously the OrderId
was
implicitly assumed to be the one assigned by the trading venue. This has been
clarified by renaming the identifier to VenueOrderId
. Following this, it no
longer made sense to refer to it through Order.id
, and so this was changed to
its full name Order.venue_order_id
. This naturally resulted in ClientOrderId
(s)
being renamed in properties and variables from cl_ord_id
to client_order_id
.
Breaking Changes
- Rename
OrderId
toVenueOrderId
. - Rename
Order.id
toOrder.venue_order_id
. - Rename
Order.cl_ord_id
toOrder.client_order_id
. - Rename
AssetClass.STOCK
toAssetClass.EQUITY
. - Remove redundant flag
generate_position_ids
(handled byOMSType
).
Enhancements
- Introduce integration for Betfair.
- Add
AssetClass.METAL
andAssetClass.ENERGY
. - Add
VenueStatusEvent
,InstrumentStatusEvent
andInstrumentClosePrice
. - Usage of
np.ndarray
to improve function and indicator performance.
Fixes
LiveLogger
log message when blocking.