github nautechsystems/nautilus_trader v2.0.0rc5
NautilusTrader 2.0.0rc5

pre-release6 hours ago

NautilusTrader 2.0.0rc5

Released on 15th September 2026 (UTC).

Enhancements

  • Added client_id and endpoint filters to actor subscribe_socket_state
  • Added a channel filter to actor subscribe_queue_state
  • Added HttpClient::get_stream and HttpResponseStream for HTTP bodies consumed without full buffering
  • Added publish_message(...), subscribe_topic(...), and unsubscribe_topic(...) for Python DataActor, Strategy, and ExecutionAlgorithm
  • Added Cache APIs and Redis/PostgreSQL persistence for InstrumentClose data
  • Added avg_px and report window fields to persisted execution reports
  • Added optional BinaryOption.event_id with Python and Arrow support
  • Added a causation_id property to every order event, and a protection_price property to OrderUpdated
  • Added due_post_only to the OrderRejected constructor, defaulting to false
  • Added remote resolution for TestDataProvider CSV loaders so they work from an installed wheel
  • Added user-defined portfolio statistics via Portfolio.register_statistic() and Python PortfolioStatistic
  • Added rolling ZScore indicator for Rust and Python (#4868), thanks @graceyangfan
  • Added named task identity and lifecycle observation to live TaskGroup
  • Added typed external MessageBus streaming for control, execution, and reconciliation messages
  • Added public ExecutionEventEmitter.try_send_account_state(...) (#4907), thanks @folknor
  • Added cache-backed claims that route external orders, fills, and reconciliation activity to the strategy
  • Added inbound latency modeling to sandbox execution client (#4865), thanks @ChrisAB
  • Added SubscribeOptionChain.correlation_id and UnsubscribeOptionChain.params for tracking edits across client routes
  • Added UnixNanos::saturating_duration_since for non-negative time differences
  • Added BacktestEngine::add_data_batch for typed data batches that replay without per-item Data values, thanks @faysou
  • Added Python enum surface (from_str, name, value, variants) to BarIntervalType
  • Added Python component direct messaging preserving objects across synchronous topic publication
  • Added Python OrderBook.to_deltas(...) and OrderBook.get_all_crossed_levels(...)
  • Added Python OrderBook pickle and deep-copy support and BookLevel comparisons
  • Added Python OrderBookDelta.is_add, is_update, is_delete, is_clear, and OrderBookDeltas.is_snapshot
  • Added Python activation_utc and expiration_utc properties to expiring instruments
  • Added Python symbol and venue properties to regular and synthetic instruments
  • Added Python bindings for subscription, execution, and historical data messages
  • Added Cap'n Proto serialization for all instrument types and InstrumentAny
  • Added Binance USD-M Futures RPI order support (#4927), thanks @AlphaTraderK
  • Added Binance USD-M weekly delivery contract support
  • Added Bybit self-match prevention, set with smp_type on the execution client config or per order
  • Added Hyperliquid definite rejection events for submit, modify, and cancel command paths
  • Added Hyperliquid local denial of over-decimal order prices when normalize_prices is disabled
  • Added Kraken Futures makerProtectionMillis decoding for Maker Protection markets
  • Added Kraken execution max_retries configuration (#4902), thanks @folknor
  • Added OKX raw HTTP account configuration queries (#4943), thanks @silarin
  • Added OKX USD-to-USDC spot migration support with spot_trade_quote_ccy and activate_feature
  • Added OKX smart_iceberg algo order type and auto_conversion order category decoding
  • Added Polymarket collateral-sized limit BUY orders with exact limit price preservation
  • Added Polymarket Deposit Wallet split, merge, and redeem position operations
  • Added Polymarket limit order modification support
  • Added Polymarket parent event IDs and raw Gamma market and event metadata
  • Added Polymarket resolution subscriptions for data-only clients (#4895), thanks @mystic-io

Breaking Changes

  • Removed Rust Response and ReqwestError exports from nautilus_network::http
  • Removed InnerHttpClient::to_response and from_reqwest error conversions; use HttpClientError
  • Added the required Rust Instrument::info method; custom implementations must return their metadata or None
  • Removed Coinbase CreateOrderRequest.reduce_only; reduce-only orders are rejected before submission
  • Removed the dormant PortfolioStatistic::calculate_from_orders trait method; no analyzer supplied order data to statistics
  • Removed public Rust and Python ForwardPrice APIs; option chains now fetch reference prices internally
  • Removed the unused OKX enums OKXAccountMode and OKXTakeProfitKind, which mapped no venue field
  • Replaced RetryManager.execute_with_retry* methods with invocation(...).execute().await
  • Replaced the Rust DurationNanos u64 alias with a newtype; use constructors and accessors
  • Replaced OKXHttpError::JsonError and generic HTTP errors with typed transport and response failures
  • Renamed nautilus-serialization Cargo feature display to arrow-display
  • Renamed blockchain log parsing modules to hypersync::log and rpc::log; update Rust imports
  • Renamed Cargo binary targets to kebab-case, including to_json to to-json, to_parquet to to-parquet, and node_wallet to node-wallet; update any cargo run --bin invocation to the new name
  • Renamed Rust Data::Delta, Data::Deltas, and Data::Depth10 variants to Data::BookDelta, Data::BookDeltas, and Data::BookDepth10; JSON and SBE wire formats are unchanged
  • Renamed StrategyConfig.external_order_claims to external_order_instrument_ids; use Strategy.set_external_order_instrument_ids() after registration to replace active claims
  • Changed actor state subscription signatures; pass filters before priority, or use priority= in Python
  • Changed Rust state unsubscribe methods to require filters; pass None for unfiltered subscriptions
  • Changed QueueStateChanged and SocketStateChanged topics; use actor filters or switchboard patterns
  • Changed Rust ExecutionClientFactory::create to require the node's clock after the cache argument
  • Changed Rust mixed-scale addition/subtraction to panic; use checked_add/checked_sub for fallible handling
  • Changed Rust BinaryOption constructors to require an event_id argument; pass None when unknown
  • Changed OrderCanceled::new to require an optional cancellation reason (#4903), thanks @folknor
  • Changed FFI orderbook_deltas_is_snapshot to use F_SNAPSHOT instead of the first delta action
  • Changed PortfolioAnalyzer.realized_pnls() to return records in ascending event-time order rather than position-derived records followed by recorded ones
  • Changed registered PnL statistics to run on every analyzed currency, including runs that closed no trades, where they receive an empty list; Win Rate and its peers now report NaN for such runs rather than being absent
  • Changed OKX response decoding failures in Python from ValueError to RuntimeError
  • Changed TradingState to ACTIVE=1, REDUCING=2, and HALTED=3; update numeric and Cap'n Proto consumers
  • Changed REDUCING to allow only eligible reduce-only submissions, cancellations, and queries
  • Changed execution clients to reject reduce_only without an enforcing venue instruction (#4761), thanks @folknor
  • Changed backtest and sandbox venues to reject reduce-only orders when use_reduce_only=false
  • Changed PostgreSQL instrument storage to preserve info; run nautilus database init to add the column before starting the cache
  • Changed PostgreSQL cache startup to require the instrument_close table; run nautilus database init
  • Changed PostgreSQL order_event and position_event tables to carry the order event fields that were previously dropped; run nautilus database init to add the columns, as cache startup now fails fast when they are missing. OrderReleased and OrderFillVoided rows written before the upgrade cannot be restored, because their released_price and correction_id were never stored; delete those rows if startup reports them
  • Changed Binance Futures book subscriptions to reject depth changes until unsubscribed
  • Changed Binance Spot JSON book subscriptions to reject unsupported explicit depths; use 5, 10, or 20
  • Changed Binance close_position orders to require reduce_only=true in Nautilus
  • Changed Arrow instrument asset_class and option_kind columns to the canonical enum labels such as EQUITY and CALL; existing catalogs still decode, but earlier versions cannot read newly written files
  • Changed OrderStatus::is_open() to exclude the in-flight SUBMITTED state; use OrderStatus::is_inflight() when a pending venue request must also match
  • Changed Python-controlled allocation sizes to reject values above documented limits; reduce existing oversized configurations before upgrading

Security

  • Added a committed Cargo cooldown publication-date database for offline crate-age checks
  • Added zeroizing secret storage and consistent credential redaction across adapter configuration, signing, and transport paths
  • Fixed DeFi fixed-point arithmetic and comparison errors in model types, thanks for reporting @uziii2208

Fixes

  • Fixed managed GTD expiry after cancel rejections (#4974), thanks @folknor
  • Fixed cancel rejections being dropped when order acceptance arrives first
  • Fixed Python MessageBus.publish() reentry from subscribers and listeners, and external serialization reentry
  • Fixed live node builders losing client registrations after a failed build
  • Fixed Python live node cleanup masking run errors and skipping signal handler restoration after a cleanup failure
  • Fixed Money ordering panics for mixed currencies, thanks for reporting @folknor
  • Fixed sell-balance checks when order quantities and account balances use different fixed-point scales
  • Fixed LiveTimer successor and time bar interval overflows causing runtime panics
  • Fixed spurious data command errors on LiveNode disposal (#4979), thanks for reporting @luk911
  • Fixed AroonOscillator oldest-low scans and tied extremes (#4914), thanks @haeganm
  • Fixed WMA and HMA accepting periods above 8192 (#4887), thanks @pucedoteth
  • Fixed SortinoRatio for single-day return samples (#4934), thanks @raunak2007
  • Fixed ZScore rounding for constant windows and handling of non-finite dispersion
  • Fixed BollingerBands quote and trade outputs to use actual price units
  • Fixed engine panic on startup when the PostgreSQL cache held an OrderCanceled, OrderDenied, OrderEmulated, OrderExpired, OrderPendingCancel, OrderPendingUpdate, OrderRejected, OrderReleased, OrderTriggered, or OrderUpdated event (#4917), thanks for reporting @luk911
  • Fixed PostgreSQL general cache writes failing on existing keys (#4935), thanks @raunak2007
  • Fixed PostgreSQL cache load failing on a persisted OrderFillVoided event
  • Fixed reconciliation being persisted as false for every order event that carries the flag, so reconciled orders no longer restore as though they were not reconciled
  • Fixed OrderUpdated.to_dict() dropping protection_price, which made the dictionary round trip lossy and lost the calculated protection price of a restored order
  • Fixed released_price, due_post_only, protection_price, causation_id, correction_id, is_reopened, and fill info being dropped when an order event was persisted to PostgreSQL
  • Fixed cancellation reasons being dropped from OrderCanceled events (#4903), thanks @folknor
  • Fixed partial fills after hedging position flips being rejected (#4908), thanks @folknor
  • Fixed position close averages carrying the prior episode's state across reversal fills (#4967), thanks @folknor
  • Fixed NETTING reduce-only fills against EXTERNAL positions (#4975), thanks for reporting @qu1zzyboy
  • Fixed reconciliation races between terminal order reports and streamed fills
  • Fixed cached fill echoes aborting live order reconciliation before later fills and snapshot corrections
  • Fixed live position reconciliation clearing deferred retry counters during another position's fallback
  • Fixed zero-sized fills panicking or affecting execution reconciliation (#4957), thanks for reporting @Karrenbelt
  • Fixed position commissions and realized PnL after fill-void replay
  • Fixed OTO exit sizing for commission-adjusted positions, child size increments, and minimum quantities
  • Fixed deferred order updates and fills using stale state in backtest and sandbox matching
  • Fixed backtest option expiry before same-timestamp index updates (#4966), thanks for reporting @davidsblom
  • Fixed canceled OCO orders filling and OTO orders activating before their parent fills
  • Fixed execution algorithm spawn reductions being lost when spawned children cancel or expire (#4968), thanks @folknor
  • Fixed market-to-limit remainder prices and maker classification
  • Fixed L2/L3 LastPrice stop triggers and maintenance when trade execution is disabled
  • Fixed backtest order queue positions being lost across order book snapshots (#4942), thanks @cuishuang
  • Fixed backtest reduce-only resizing and cancellation propagation to linked OUO orders
  • Fixed cash account locked balances after partial order fills
  • Fixed cash account backtests accepting futures contracts, thanks for reporting @folknor
  • Fixed false reconciliation errors for uncached hedge positions reporting zero quantity
  • Fixed SBE market data decoding panics for malformed instrument and trade identifiers
  • Fixed nanosecond precision loss when TestDataProvider parses timestamps
  • Fixed BacktestNode.run_streaming() loading all records when more than one data config was used (#4897), thanks @abhijeetvichare76
  • Fixed backtest client hiding warnings for unsupported data requests (#4945), thanks @matvt-cell
  • Fixed stale or terminal single and list order submissions reaching execution clients
  • Fixed TWD, 1INCH, CAKE, and SHIB currency lookup panics
  • Fixed retiring DataActor, Strategy, and ExecutionAlgorithm instances retaining active or pending data subscriptions
  • Fixed shared client subscriptions being released before their final owner
  • Fixed failed data subscriptions blocking later owners from retrying
  • Fixed successful component resets retaining old data subscriptions before restart
  • Fixed component removal failing after its stop or fault hook returned an error
  • Fixed order-status report windows filtering resting orders instead of closed history
  • Fixed foreign account events panicking and reservation failures leaving balances or margins in an inconsistent state
  • Fixed importable strategy configs ignoring a string strategy_id in favor of the class-derived default ID
  • Fixed importable config construction leaving a partial config on attribute failure; now raises RuntimeError
  • Fixed Python OrderBook aggregation to raise ValueError for invalid precision and quantity overflow
  • Fixed Python Price and Quantity from_mantissa_exponent methods to raise ValueError on invalid inputs
  • Fixed Python Money.zero aborting for valid currencies with 17 or 18 decimal precision
  • Fixed Architect AX closed-order tracking cache retention and undocumented orders-WS heartbeat frames
  • Fixed Betfair fill report queries ignoring instrument and order filters
  • Fixed Betfair order status queries ignoring instrument filters and time bounds for closed orders
  • Fixed Binance Futures order books exceeding requested depths of 5, 10, or 20 levels, thanks for reporting @xsidorov
  • Fixed Binance Spot cancel-all decoding and lifecycle handling for OCO order lists
  • Fixed Binance Spot cancel report matching and failed cancel-replace recovery (#4930), thanks @abhijeetvichare76
  • Fixed Binance execution rejection classification and bounded HTTP read retries
  • Fixed Binance Spot MIN_NOTIONAL and NOTIONAL filters being omitted from instrument constraints
  • Fixed Binance Spot book subscriptions accepting depths outside 5, 10, or 20 levels
  • Fixed Binance Spot SBE order decoders misreading fields and timestamps (#4965), thanks @abhijeetvichare76
  • Fixed Binance Spot SBE new-order-full decoder accepting short blocks (#4972), thanks @abhijeetvichare76
  • Fixed Binance USD-M CN equity perpetuals being rejected from the instrument catalog (#4980), thanks @graceyangfan
  • Fixed Binance taker_sell_base_volume returning incorrectly scaled values
  • Fixed Bybit funding settlements being treated as fills (#4937), thanks for reporting @luk911
  • Fixed Bybit incorrect book quotes and zero sizes from deleted levels, thanks for reporting @xsidorov
  • Fixed Bybit quote and book cleanup after unsubscribe or subscription failure, thanks for reporting @xsidorov
  • Fixed Bybit REST and WebSocket executions dropping split-settlement, dividend, and unrecognized exec types
  • Fixed Bybit decoding of RPI TIF, FUND accounts, and extra V5 create, cancel, and status enums
  • Fixed Derive accepting trade amounts that convert to zero-sized fills
  • Fixed Derive order queries without venue order IDs (#4958), thanks for reporting @Aviksaikat
  • Fixed Hyperliquid shared REST quotas and WebSocket rate and capacity limits
  • Fixed Hyperliquid WebSocket post deadlines across queueing, transport writes, and replies
  • Fixed Hyperliquid reconciliation to fail closed on undecodable mass-status rows
  • Fixed Hyperliquid quote-denominated orders submitting quote amounts as base sizes
  • Fixed Hyperliquid instrument refresh so newly listed markets can trade without restart (#4969), thanks @riven314
  • Fixed Kraken Futures silently returning partial catalogs when instrument precision is unsupported
  • Fixed Kraken Futures order-state convergence for unreported open orders and partial-fill cancels
  • Fixed Kraken Futures iocWouldNotExecute order outcomes staying ambiguous instead of rejecting
  • Fixed Kraken Spot available balances excluding funds held by the venue (#4922), thanks @zhaow-de
  • Fixed Kraken Spot instrument fees to use account rates when credentials are configured (#4890), thanks @matvt-cell
  • Fixed Lighter post-only GTD recovery and account-wide cancellation during flattening
  • Fixed OKX mass status succeeding with incomplete pending algo-order coverage (#4924), thanks @silarin
  • Fixed OKX retries to honor Retry-After, preserve request identity, and avoid ambiguous order replay
  • Fixed OKX execution connecting with missing instruments for a configured type or family
  • Fixed OKX WebSocket connection timeout being shorter than the network default (#4956), thanks for reporting @BioxMech
  • Fixed OKX book recovery after reconnect, rejected subscriptions, and missing snapshots
  • Fixed OKX private WebSocket re-authentication after reconnect
  • Fixed OKX reconnect subscriptions exceeding the venue message size
  • Fixed OKX option order price type deserialization to the pxUsd and pxVol wire values
  • Fixed OKX depth-400 book channel gating from VIP5 to VIP4 per current venue requirements
  • Fixed Polymarket resolution subscriptions losing transiently unavailable closed markets
  • Fixed Polymarket precision loss in financial data and execution reports
  • Fixed Polymarket invalid numeric values silently producing zero prices, quantities, or fees
  • Fixed Polymarket free balances ignoring open BUY orders (#4940), thanks @yashwardhan-gautam

Internal Improvements

  • Added Cap'n Proto validation for decoded identifiers, currencies, balances, and decimals
  • Added serde support for BetSide and OtoTriggerMode
  • Added crate feature documentation checks for README and Rustdoc lists
  • Added early Cargo dependency cooldown checks to builds and pre-flight
  • Added Cargo convention checks for redundant README keys, uninherited workspace fields, and binary target naming
  • Added Rust client bridges for custom Python data and execution adapters
  • Added experimental executable component bindings for plug-ins
  • Added acceptance tests running the documentation guides and resolving their documented imports
  • Added deterministic simulation testing (DST) transports for HTTP and WebSocket I/O
  • Replaced Reqwest HTTP execution with Hyper and removed direct Reqwest dependencies
  • Improved contingent order handling to respect venue receipt in backtest and sandbox execution
  • Improved Betfair execution client test synchronization (#4866), thanks @folknor
  • Improved task lifecycle tests to avoid stalled timer polling (#4899), thanks @folknor
  • Improved Hyperliquid exchange error message fixtures and rejection routing tests
  • Improved OKX RPI minimum-notional rejection tests for place, amend, and batch orders
  • Pinned docs.rs checks to a compatible nightly toolchain
  • Refined Arrow serialization schemas and column resolution
  • Refined Cap'n Proto serialization conversions and wire contracts
  • Refined bar aggregation internals and shared aggregator state
  • Refined core crate coverage, FFI safety, and collection conversion
  • Refined example and test config subclasses to keyword-only fields without a __new__ override
  • Refined PortfolioAnalyzer PnL currency resolution into a single internal resolver
  • Standardized crate manifests with inferred README paths and removed unused workspace fields
  • Standardized crate feature documentation across READMEs and Rustdoc
  • Standardized adapter client source layout across the Rust venue implementations
  • Standardized code and documentation terminology with domain-specific names
  • Removed obsolete OKX speed_bump order parameters; omit the argument from Rust and Python client calls
  • Optimized pre-commit and CI convention hook runtime
  • Optimized Rust integration test compilation with one test binary per crate, thanks @faysou
  • Optimized DataEngine and backtest dispatch through borrowed data views (#4900), thanks @faysou
  • Standardized repository Python text reads on UTF-8 across supported platforms
  • Standardized uv commands, CI, Docker, and documentation on the default python/.venv project environment
  • Upgraded Rust (MSRV) to 1.98.1
  • Upgraded cargo-hawk tool to v0.1.14
  • Upgraded cargo-llvm-cov tool to v0.9.1
  • Upgraded cargo-nextest tool to v0.9.144
  • Upgraded prek tool to v0.5.2
  • Upgraded shfmt pre-commit hook to v3.14.1
  • Upgraded uv tool to v0.12.13
  • Upgraded typos pre-commit hook to v1.50.1
  • Upgraded zizmor pre-commit hook to v1.30.1
  • Upgraded alloy-primitives crate to v1.7.3
  • Upgraded flate2 crate to v1.1.10
  • Upgraded indexmap crate to v2.14.2
  • Upgraded rcgen crate to v0.14.10
  • Upgraded arrow, arrow-row, and parquet crates to v59.3.0
  • Upgraded aws-lc-rs crate to v1.18.1
  • Upgraded capnp crate to v0.27.2
  • Upgraded databento crate to v0.61.0
  • Upgraded hypersync-client crate to v1.4.1
  • Upgraded redis crate to v1.7.0
  • Upgraded rstest crate to v0.27.0
  • Upgraded rust_decimal crate to v1.43.0
  • Upgraded rustls crate to v0.23.45 (fixes RUSTSEC-2026-0285)
  • Upgraded smallvec crate to v1.16.0
  • Upgraded tabled crate to v0.22.0
  • Upgraded tokio-rustls crate to v0.26.5
  • Upgraded toml crate to v1.1.6
  • Upgraded uuid crate to v1.26.1
  • Upgraded kaleido package to v1.4.0
  • Upgraded linkify-it-py package to v2.2.0
  • Upgraded numpy package to v2.5.3
  • Upgraded plotly package to v7.0.0
  • Upgraded ruff package (dev) and pre-commit hook to v0.16.7
  • Upgraded simplejson package to v4.1.2
  • Upgraded ty package (dev) to v0.0.78

Documentation Updates

  • Added Cargo cooldown publication-date database guidance to the environment setup guide
  • Added a troubleshooting section for import errors caused by installing the 1.x line
  • Added the NumPy and pandas prerequisites the wheel does not install
  • Added an environment report snippet to the bug report template
  • Added an explicit statement that the documentation covers v2 only
  • Added Kraken Futures Maker Protection held-order semantics to the integration guide
  • Added OKX RPI minimum-notional thresholds and amend rejection rules
  • Added OKX USD-to-USDC spot migration guidance for spot_trade_quote_ccy and activate_feature
  • Changed install commands to require --pre for the v2 wheel (#4919), thanks for reporting @pcoughlin
  • Changed the getting started and tutorial guides to run on bundled sample data without a download
  • Simplified documented StrategyConfig and DataActorConfig subclassing to keyword-only fields
  • Updated execution event sender installation guidance (#4906), thanks @folknor
  • Updated persistence catalog migration commands to kebab-case binary names
  • Updated migration guidance for order books and instrument inspection
  • Updated Makefile help output to match the startup log header
  • Updated managed GTD expiry guidance for cancel rejections, retries, and callback timing
  • Updated Bybit risk-events docs for split-settlement, dividend, and unrecognized exec types
  • Updated Hyperliquid guide for rejection events, price guard, and trigger-order resting
  • Updated Hyperliquid guide for quote-denominated quantities and orders-section scanning
  • Restructured execution documentation around algorithms, policies, reconciliation, and live recovery
  • Standardized Rust documentation links and added offline link coverage
  • Standardized admonition severity levels to match the documented taxonomy
  • Fixed the actor configuration example rejecting a positional argument
  • Fixed option Greeks examples ignoring string actor_id overrides
  • Corrected documented enum values for instrument classes, wallet accounts, position entry sides, and Polymarket close types

Deprecations

Artifact checksums

SHA256 checksums are attached as SHA256SUMS, per-asset .sha256 files, and dist-manifest.json.

Artifact SHA256
nautilus_trader-2.0.0rc5-cp312-cp312-macosx_11_0_arm64.whl c3feca068a507b1651ed8e9d0ee81d10a3520a2e3b37eccbe88cba3487b4e652
nautilus_trader-2.0.0rc5-cp312-cp312-manylinux_2_34_aarch64.whl d68fcd0938449c0b8cce412dc4ac806072272d627baa19ef87393f25077e5432
nautilus_trader-2.0.0rc5-cp312-cp312-manylinux_2_34_x86_64.whl eab45fafd2312deda1236554c49a9798bfc76bc8465af864878e2f70189ebebe
nautilus_trader-2.0.0rc5-cp312-cp312-win_amd64.whl 7cf55f842ebcc47b4ccd6c7c2ba855e7359941d9eb87da44c7fdd1d17108165f
nautilus_trader-2.0.0rc5-cp313-cp313-macosx_11_0_arm64.whl af9d9dffc729ab7f2e042a59772c3234ac6bcbb413a46b5b94c203e07b1fe6be
nautilus_trader-2.0.0rc5-cp313-cp313-manylinux_2_34_aarch64.whl 9905300762f2cdb094d2bc13a51f3860ffaafb499237088daf9f294290a86c10
nautilus_trader-2.0.0rc5-cp313-cp313-manylinux_2_34_x86_64.whl d022032fdb6727ff97cce2618870ac0997e15fcf4df4e285a34278088dd781b6
nautilus_trader-2.0.0rc5-cp313-cp313-win_amd64.whl 0a2aa776f5abba97989069e6a4a8fe9041210c35c333fce07dee75811e2c2022
nautilus_trader-2.0.0rc5-cp314-cp314-macosx_11_0_arm64.whl 4c68beff00930f706decf15b5fda650bbcaee45d0f31c72e4e34a97d9c41b157
nautilus_trader-2.0.0rc5-cp314-cp314-manylinux_2_34_aarch64.whl 450f158b45d1487252a0a29899e7b1ba32a9935e45b83e35b80562dac08eda71
nautilus_trader-2.0.0rc5-cp314-cp314-manylinux_2_34_x86_64.whl 1cd460c7baa56a37b4e23b56f5d3fdfb46113e4206380a488f709f8efd5c0cdb
nautilus_trader-2.0.0rc5-cp314-cp314-win_amd64.whl 6c9d9564348f8ae26d12a6f7c9a8665aba9c3d04fbac13b396864da384462ba6
nautilus_trader-2.0.0rc5.tar.gz d566bade9e8dc6ad35de0e2566658fbd1ae75a89ee2c45c8e48de5fcc6929399

Verify provenance

After downloading an artifact, verify its GitHub artifact attestation:

gh attestation verify <artifact> \
  --repo nautechsystems/nautilus_trader \
  --cert-identity "https://github.com/nautechsystems/nautilus_trader/.github/workflows/build.yml@refs/heads/master" \
  --cert-oidc-issuer https://token.actions.githubusercontent.com

Don't miss a new nautilus_trader release

NewReleases is sending notifications on new releases.