Releases: nautechsystems/nautilus_trader
NautilusTrader 1.133.0 Beta
NautilusTrader 1.133.0 Beta - Release Notes
Released on 8th, November 2021
Breaking Changes
None
Enhancements
- Added
LatencyModel
for simulated exchange. - Added
last_update_id
to order books. - Added
update_id
to order book data. - Added
depth
param when subscribing to order book deltas. - Added
Clock.timestamp_ms()
. - Added
TestDataProvider
and consolidate test data. - Added orjson default serializer for arrow.
- Reorganized example strategies and launch scripts.
Fixes
- Fixed logic for partial fills in backtests.
- Various Betfair integration fixes.
- Various
BacktestNode
fixes.
NautilusTrader 1.132.0 Beta
NautilusTrader 1.132.0 Beta - Release Notes
Released on 24th, October 2021
Breaking Changes
Actor
constructor now takesActorConfig
.
Enhancements
- Added
ActorConfig
. - Added
ImportableActorConfig
. - Added
ActorFactory
. - Added
actors
toBacktestRunConfig
. - Improved network base classes.
- Refine
InstrumentProvider
.
Fixes
- Fixed persistence config for
BacktestNode
. - Various Betfair integration fixes.
NautilusTrader 1.131.0 Beta
NautilusTrader 1.131.0 Beta - Release Notes
Released on 10th, October 2021
Breaking Changes
- Renamed
nanos_to_unix_dt
tounix_nanos_to_dt
(more accurate name). - Changed
Clock.set_time_alert(...)
method signature. - Changed
Clock.set_timer(...)
method signature. - Removed
pd.Timestamp
fromTimeEvent
.
Enhancements
OrderList
submission and OTO, OCO contingencies now operational.- Added
Cache.orders_for_position(...)
method. - Added
Cache.position_for_order(...)
method. - Added
SimulatedExchange.get_working_bid_orders(...)
method. - Added
SimulatedExchange.get_working_ask_orders(...)
method. - Added optional
run_config_id
for backtest runs. - Added
BacktestResult
object. - Added
Clock.set_time_alert_ns(...)
method. - Added
Clock.set_timer_ns(...)
method. - Added
fill_limit_at_price
simulated exchange option. - Added
fill_stop_at_price
simulated exchange option. - Improve timer and time event efficiency.
Fixes
- Fixed
OrderUpdated
leaves quantity calculation. - Fixed contingency order logic at the exchange.
- Fixed indexing of orders for a position in the cache.
- Fixed flip logic for zero sized positions (not a flip).
NautilusTrader 1.130.0 Beta
NautilusTrader 1.130.0 Beta - Release Notes
Released on 26th, September 2021
Breaking Changes
BacktestEngine.run
method signature change.- Renamed
BookLevel
toBookType
. - Renamed
FillModel
params.
Enhancements
- Added streaming backtest machinery.
- Added
quantstats
(removedempyrical
). - Added
BacktestEngine.run_streaming()
. - Added
BacktestEngine.end_streaming()
- Added
Portfolio.balances_locked(venue)
. - Improved
DataCatalog
functionality. - Improved logging for
BacktestEngine
. - Improved parquet serialization and machinery.
Fixes
- Fixed
SimulatedExchange
message processing. - Fixed
BacktestEngine
event ordering in main loop. - Fixed locked balance calculation for
CASH
accounts. - Fixed fill dynamics for
reduce-only
orders. - Fixed
PositionId
handling forHEDGING
OMS exchanges. - Fixed parquet
Instrument
serialization. - Fixed
CASH
account PnL calculations with base currency.
NautilusTrader 1.129.0 Beta
NautilusTrader 1.129.0 Beta - Release Notes
Released on 12th, September 2021
Breaking Changes
- Removed CCXT adapter (#428).
- Backtest configuration changes.
- Renamed
UpdateOrder
toModifyOrder
(terminology standardization). - Renamed
DeltaType
toBookAction
(terminology standardization).
Enhancements
- Added
BacktestNode
. - Added
BookIntegrityError
with improved integrity checks for order books. - Added order custom user tags.
- Added
Actor.register_warning_event
(also applicable toTradingStrategy
). - Added
Actor.deregister_warning_event
(also applicable toTradingStrategy
). - Added
ContingencyType
enum (for contingency orders in anOrderList
). - All order types can now be
reduce_only
(#437). - Refined backtest configuration options.
- Improved efficiency of
UUID4
using thefastuuid
Rust bindings.
Fixes
NautilusTrader 1.128.0 Beta
NautilusTrader 1.128.0 Beta - Release Notes
This release continues the focus on the core system, with upgrades and cleanups
to the component base class. The concept of an active
order has been introduced,
which is an order whose state can change (is not a completed
order).
Breaking Changes
- All configuration due
pydantic
upgrade. - Throttling config now takes string e.g. "100/00:00:01" which is 100 / second.
- Renamed
DataProducerFacade
toDataProducer
. - Renamed
fill.side
tofill.order_side
(clarity and standardization). - Renamed
fill.type
tofill.order_type
(clarity and standardization).
Enhancements
- Added serializable configuration classes leveraging
pydantic
. - Improved adding bar data to
BacktestEngine
. - Added
BacktestEngine.add_bar_objects()
. - Added
BacktestEngine.add_bars_as_ticks()
. - Added order
active
concept, withorder.is_active
and cache methods. - Added
ComponentStateChanged
event. - Added
Component.degrade()
andComponent.fault()
command methods. - Added
Component.on_degrade()
andComponent.on_fault()
handler methods. - Added
ComponentState.PRE_INITIALIZED
. - Added
ComponentState.DEGRADING
. - Added
ComponentState.DEGRADED
. - Added
ComponentState.FAULTING
. - Added
ComponentState.FAULTED
. - Added
ComponentTrigger.INITIALIZE
. - Added
ComponentTrigger.DEGRADE
. - Added
ComponentTrigger.DEGRADED
. - Added
ComponentTrigger.FAULT
. - Added
ComponentTrigger.FAULTED
. - Wired up
Ticker
data type.
Fixes
DataEngine.subscribed_bars()
now reports internally aggregated bars also.
NautilusTrader 1.127.0 Beta
NautilusTrader 1.127.0 Beta - Release Notes
This release has again focused on core areas of the platform, including a
significant overhaul of accounting and portfolio components. The wiring between
the DataEngine
and DataClient
(s) has also received attention, and should now
exhibit correct subscription mechanics.
The Betfair adapter has been completely re-written, providing various fixes and
enhancements, increased performance, and full async support.
There has also been some further renaming to continue to align the platform
as closely as possible with established terminology in the domain.
Breaking Changes
- Moved margin calculation methods from
Instrument
toAccount
. - Removed redundant
Portfolio.register_account
. - Renamed
OrderState
toOrderStatus
. - Renamed
Order.state
toOrder.status
. - Renamed
msgbus.message_bus
tomsgbus.bus
.
Enhancements
- Betfair adapter re-write.
- Extracted
accounting
subpackage. - Extracted
portfolio
subpackage. - Subclassed
Account
withCashAccount
andMarginAccount
. - Added
AccountsManager
. - Added
AccountFactory
. - Moved registration of custom account classes to
AccountFactory
. - Moved registration of calculated account to
AccountFactory
. - Added registration of OMS type per trading strategy.
- Added
ExecutionClient.create_account
for custom account classes. - Separate
PortfolioFacade
fromPortfolio
.
Fixes
- Data subscription handling in
DataEngine
. Cash
accounts no longer generate spurious margins.- Fix
TimeBarAggregator._stored_close_ns
property name.
NautilusTrader 1.126.1 Beta
NautilusTrader 1.126.1 Beta - Release Notes
This is a patch release which fixes a bug involving NotImplementedError
exception handling when subscribing to order book deltas - when not supported by
a client. This bug affected CCXT order book subscriptions.
Breaking Changes
None
Enhancements
None
Fixes
- Fix
DataEngine
order book subscription handling.
NautilusTrader 1.126.0 Beta
NautilusTrader 1.126.0 Beta - Release Notes
This release sees the completion of the initial implementation of the
MessageBus
, with data now being handled by PUB/SUB patterns, along with the
additions of point-to-point and REQ/REP messaging functionality.
An Actor
base class has been abstracted from TradingStrategy
which allows
custom components to be added to a Trader
which aren't necessarily trading
strategies, opening up further possibilities for extending NautilusTrader with
custom functionality.
For the sake of simplicity and to favour more idiomatic Python, the null object
pattern is no longer utilized for handling identifiers. This has removed a layer
of 'logical indirection' in certain parts of the codebase, and allows for simpler
code.
An order is now considered 'in-flight' if it is actively pending a state
transition i.e. in the SUBMITTED
,PENDING_UPDATE
or PENDING_CANCEL
states.
It is now a well established convention that all integer based timestamps are
expressed in UNIX nanoseconds, therefore the _ns
postfix has now been dropped.
For clarity - time periods/intervals/objects where the units may not be obvious
have retained the _ns
postfix.
The opportunity was identified to unify the parameter naming for the concept
of object instantiation by renaming timestamp_ns
and ts_recv_ns
to ts_init
.
Along the same lines, the timestamps for both event and data occurrence have
been standardized to ts_event
.
It is acknowledged that the frequent name changes and modifications to core
concepts may be frustrating, however whilst still in a beta phase - we're taking
the opportunity to lay a solid foundation for this project to continue to growth
in the years ahead.
Breaking Changes
- Renamed
timestamp_ns
tots_init
. - Renamed
ts_recv_ns
tots_event
. - Renamed various event timestamp parameters to
ts_event
. - Removed null object methods on identifiers.
Enhancements
- Added
Actor
component base class. - Added
MessageBus.register()
. - Added
MessageBus.send()
. - Added
MessageBus.request()
. - Added
MessageBus.response()
. - Added
Trader.add_component()
. - Added
Trader.add_components()
. - Added
Trader.add_log_sink()
.
Fixes
- Various Betfair adapter patches and fixes.
ExecutionEngine
position flip logic in certain edge cases.
NautilusTrader 1.125.0 Beta
NautilusTrader 1.125.0 Beta - Release Notes
This release introduces a major re-architecture of the internal messaging system.
A common message bus has been implemented which now handles all events via a
PUB/SUB messaging pattern. The next release will see all data being handled by
the message bus, please see the related issue for further details on this enhancement.
Another notable feature is the introduction of the order 'in-flight' concept,
which is a submitted order which has not yet been acknowledged by the
exchange/broker. Several properties on Order
, and methods on Cache
, now exist
to support this.
The Throttler
has been refactored and optimized further. There has also been
extensive reorganization of the model sub-package, standardization of identifiers
on events, along with numerous 'under the hood' cleanups and two bug fixes.
Breaking Changes
- Renamed
MessageType
enum toMessageCategory
. - Renamed
fill.order_side
tofill.side
. - Renamed
fill.order_type
tofill.type
. - All
Event
serialization due to domain refactorings.
Enhancements
- Added
MessageBus
class. - Added
TraderId
toOrder
andPosition
. - Added
OrderType
to OrderFilled. - Added unrealized PnL to position events.
- Added order inflight concept to
Order
andCache
. - Improved efficiency of
Throttler
. - Standardized events
str
andrepr
. - Standardized commands
str
andrepr
. - Standardized identifiers on events and objects.
- Improved
Account
str
andrepr
. - Using
orjson
overjson
for efficiency. - Removed redundant
BypassCacheDatabase
. - Introduced
mypy
to the codebase.
Fixes
- Fixed backtest log timestamping.
- Fixed backtest duplicate initial account event.