Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.206.0 #2061

Merged
merged 175 commits into from
Nov 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
bd7d066
Fix reconcile open orders and account websocket message for dYdX (#2039)
davidsblom Nov 3, 2024
7ec3a75
Bump version
cjdsellers Nov 3, 2024
39edacb
Standardize pyo3 GIL token naming and usage
cjdsellers Nov 3, 2024
b2f1060
Refine docs
cjdsellers Nov 3, 2024
3394497
Standardize Rust module organization
cjdsellers Nov 3, 2024
cfccfa8
Remove rand_chacha dependency
cjdsellers Nov 3, 2024
cd305c6
Add standard doc comments
cjdsellers Nov 4, 2024
ddaa9d6
Standardize module declaration position
cjdsellers Nov 4, 2024
13d275a
Continue DataEngine in Rust
cjdsellers Nov 4, 2024
1ec4bc9
Fix market order avg_px for Polymarket trade reports
cjdsellers Nov 4, 2024
ce90b1c
Upgrade datafusion
cjdsellers Nov 4, 2024
124c59c
Continue DataEngine in Rust
cjdsellers Nov 4, 2024
ab39d61
Add Betfair data keepalive (#2040)
limx0 Nov 4, 2024
3834b75
Update release notes
cjdsellers Nov 5, 2024
478deed
Continue DataEngine in Rust
cjdsellers Nov 5, 2024
3479277
Reorganize Cache tests in Rust
cjdsellers Nov 5, 2024
7f78208
Clock v2 and push based LiveTimer (#2023)
twitu Nov 5, 2024
11750c5
Add underlying filter for Cache.instruments
cjdsellers Nov 5, 2024
83db9c0
Fix clippy lints
cjdsellers Nov 5, 2024
e87026e
Fix Betfair reconciliation (#2041)
limx0 Nov 5, 2024
7da5477
Standardize commissions typing for FillReport
cjdsellers Nov 5, 2024
9e71076
Fix Betfair customer order ref limit to 32 chars
cjdsellers Nov 5, 2024
de9cebd
Improve error handling
cjdsellers Nov 5, 2024
6e2b629
Fix Databento subscriber example
cjdsellers Nov 5, 2024
6d39f59
Refine Polymarket reconciliation
cjdsellers Nov 6, 2024
c2cfaf7
Update dependencies
cjdsellers Nov 6, 2024
da3a27a
Refine Polymarket reconciliation
cjdsellers Nov 6, 2024
442bdfb
Refine Polymarket reconciliation
cjdsellers Nov 6, 2024
c29a130
Update Polymarket execution config and size precision
cjdsellers Nov 6, 2024
d1956d3
Upgrade tqdm
cjdsellers Nov 7, 2024
f9acaf7
Refine Polymarket docs
cjdsellers Nov 7, 2024
f366784
Fix load_ids for InstrumentProviderConfig
cjdsellers Nov 7, 2024
a31e728
Fix Bybit PARTIALLY_FILLED_CANCELED status orders
cjdsellers Nov 7, 2024
37a9ee3
Globally shared data channels from engine to Runner (#2042)
twitu Nov 7, 2024
38c3904
Refine docs
cjdsellers Nov 7, 2024
4df717b
Update release notes
cjdsellers Nov 7, 2024
070810e
Update dependencies
cjdsellers Nov 7, 2024
79db699
Update dependencies
cjdsellers Nov 8, 2024
eb7b470
Refine LiveTimer cancel
cjdsellers Nov 8, 2024
599fda8
Refine Bybit HMAC authentication signatures
cjdsellers Nov 8, 2024
67cc6be
Simplify LiveTimer cancellation model (#2046)
twitu Nov 8, 2024
2ddd1a5
Update release notes
cjdsellers Nov 8, 2024
143d3c0
Update dependencies including ruff
cjdsellers Nov 8, 2024
9bafa22
Refine hmac_signature usage
cjdsellers Nov 8, 2024
fa5933d
Refine cryptographic function usage
cjdsellers Nov 8, 2024
63c78d0
Clarify unreachable match cases in Python
cjdsellers Nov 8, 2024
c1d620d
Remove redundant performance test
cjdsellers Nov 8, 2024
4faaa5b
Refine core functions
cjdsellers Nov 8, 2024
cfb8c67
Add realized PnL methods for Portfolio
cjdsellers Nov 8, 2024
3d09b38
Improve order events reason string handling
cjdsellers Nov 9, 2024
d538f7c
Implement rejected events for Binance and Bybit
cjdsellers Nov 9, 2024
b744603
Improve installation guide and Redis docs
cjdsellers Nov 9, 2024
dd85cd9
Standardize Redis minimum version info
cjdsellers Nov 9, 2024
a89a62c
Refine message bus docs
cjdsellers Nov 9, 2024
e35b303
Clarify Databento MBO replay docs
cjdsellers Nov 9, 2024
ae4d130
Simplify BybitHttpClient factory function
cjdsellers Nov 9, 2024
b5d4cae
Add tardis_exchange_from_venue_str function
cjdsellers Nov 9, 2024
1f97d24
Add TardisInstrumentProvider and factories
cjdsellers Nov 9, 2024
bddfc4f
Standardize instrument provider docs
cjdsellers Nov 9, 2024
52b5c69
Refine correctness failure messages
cjdsellers Nov 9, 2024
0f7a3f6
Refine InstrumentProvider initialization and logging
cjdsellers Nov 9, 2024
46e99eb
Standardize adapter clients and providers caching
cjdsellers Nov 9, 2024
15088dd
Port ExecutionEngine to Rust (#2048)
twitu Nov 9, 2024
5bfe422
Implement websocket reconnection retries (#2044)
davidsblom Nov 9, 2024
c11567a
Cache dYdX HTTP client with lru cache (#2049)
davidsblom Nov 9, 2024
b250f9a
Update release notes
cjdsellers Nov 9, 2024
bdd06a7
Update release notes
cjdsellers Nov 9, 2024
d33e908
Fix Throttler performance tests
cjdsellers Nov 9, 2024
d147a68
Improve integration docs
cjdsellers Nov 9, 2024
575f1ef
Refine Tardis instrument ID parsing
cjdsellers Nov 9, 2024
34ddc68
Fix clippy lints
cjdsellers Nov 9, 2024
40df01b
Update dependencies
cjdsellers Nov 9, 2024
fd35d85
Fix pyo3 static time logging for BacktestEngine
cjdsellers Nov 9, 2024
b6200f7
Add Redis Insight docs tip
cjdsellers Nov 9, 2024
636cf68
Refine installation docs
cjdsellers Nov 9, 2024
b120941
Refine identifiers From trait impls
cjdsellers Nov 9, 2024
0ce934a
Refine identifiers From trait impls
cjdsellers Nov 9, 2024
6e07a8c
Fix Tardis integration docs links
cjdsellers Nov 9, 2024
c6dce1c
Fix pyo3 docs links
cjdsellers Nov 10, 2024
0aadc2f
Refine Binance integration docs
cjdsellers Nov 10, 2024
389ee69
Add AsRef<str> for identifiers
cjdsellers Nov 10, 2024
d1e6682
Refine TradeId correctness
cjdsellers Nov 10, 2024
490ca36
Refine TradeId correctness
cjdsellers Nov 10, 2024
1a8b768
Improve identifier constructors to take AsRef<str>
cjdsellers Nov 10, 2024
36328fd
Standardize AsRef<str> and from_str_unchecked
cjdsellers Nov 10, 2024
53b6ef3
Refine Tardis symbol and venue parsing
cjdsellers Nov 10, 2024
f7040cc
Fix in-flight orders check and catch unexpected exceptions (#2053)
davidsblom Nov 10, 2024
92878a2
Handle liquidated fills for dYdX (#2052)
davidsblom Nov 10, 2024
745c15b
Make BybitResponse.time field optional (#2051)
sunlei Nov 10, 2024
7e25c8c
Remove Bybit msgspec redundant import alias (#2050)
sunlei Nov 10, 2024
332f2b9
Upgrade thiserror
cjdsellers Nov 10, 2024
85fb39d
Update release notes
cjdsellers Nov 10, 2024
a089f58
Standardize identifier macro
cjdsellers Nov 10, 2024
ea6fc1d
Standardize AsRef<str> usage
cjdsellers Nov 10, 2024
f2332b1
Standardize From trait impls
cjdsellers Nov 10, 2024
5cced4c
Standardize Money.from_str
cjdsellers Nov 10, 2024
e37fbb9
Refine Logger and MessageBus APIs with AsRef<str>
cjdsellers Nov 10, 2024
d3e10a6
Fix error message for fill events of dYdX (#2054)
davidsblom Nov 10, 2024
f9ecf93
Refine in-flight order check error handling
cjdsellers Nov 10, 2024
12197c8
Add configuration warnings for InstrumentProvider
cjdsellers Nov 10, 2024
7027def
Use lru_cache for Betfair factory functions
cjdsellers Nov 10, 2024
3e13ab6
Standardize adapters config and update instruments
cjdsellers Nov 11, 2024
cc4fae5
Standardize some docstring syntax
cjdsellers Nov 11, 2024
3e305ef
Standardize hard-coded as compound adjective
cjdsellers Nov 11, 2024
3fb2a05
Refine API reference docs
cjdsellers Nov 11, 2024
de8421d
Resume codspeed reports in CI
cjdsellers Nov 11, 2024
9916794
Implement Tardis symbol normalization
cjdsellers Nov 11, 2024
a3c7df0
Ignore .parquet files
cjdsellers Nov 11, 2024
009ca93
Fix coverage workflow
cjdsellers Nov 11, 2024
206c7d0
Standardize and cleanup adapters
cjdsellers Nov 11, 2024
141debb
Standardize and cleanup adapters
cjdsellers Nov 11, 2024
10cc6a7
Add TardisDataClient factory and scaffolding
cjdsellers Nov 11, 2024
286c5a5
Update dependencies
cjdsellers Nov 11, 2024
5e23b90
Add doc comments
cjdsellers Nov 11, 2024
fdf7219
Upgrade dependencies including serde
cjdsellers Nov 12, 2024
f2509e1
Fix single instrument requests for DatabentoDataClient
cjdsellers Nov 12, 2024
54e2410
Refine InstrumentProvider loading log message
cjdsellers Nov 12, 2024
1b6bbe5
Update release notes
cjdsellers Nov 12, 2024
e0e2717
Ignore codspeed cache
cjdsellers Nov 12, 2024
9e26d37
Repair codspeed benchmarks
cjdsellers Nov 12, 2024
78fdd19
Port RiskEngine to Rust (#2035)
Pushkarm029 Nov 12, 2024
0458cee
Adjust coverage workflow
cjdsellers Nov 12, 2024
c73f785
Upgrade fsspec
cjdsellers Nov 13, 2024
5a3ffee
Fix return type annotations
cjdsellers Nov 13, 2024
aecc624
Fix docstring formatting consistency
cjdsellers Nov 13, 2024
3bb7022
Add hyperlink for message bus
cjdsellers Nov 13, 2024
eb4ac98
Cleanup docs code snippet
cjdsellers Nov 13, 2024
d8ba7c7
Standardize Redis version callout
cjdsellers Nov 13, 2024
1be349f
Upgrade databento
cjdsellers Nov 13, 2024
bc6aedb
Add TardisMachineClient to data client
cjdsellers Nov 13, 2024
ab354d9
Fix clippy lints
cjdsellers Nov 13, 2024
e694679
Add portfolio crate
cjdsellers Nov 13, 2024
f9261b5
Fix docs markdown link
cjdsellers Nov 13, 2024
c43dbe8
Fix jupyterlab url
cjdsellers Nov 13, 2024
fefc2fb
Update dependencies
cjdsellers Nov 14, 2024
551b124
Continue TardisDataClient
cjdsellers Nov 14, 2024
1a8f820
Continue TardisDataClient
cjdsellers Nov 14, 2024
862278f
Fix jupyter URL typo (#2057)
Alsheh Nov 14, 2024
8dbba89
Update release notes
cjdsellers Nov 14, 2024
0418657
Adjust cargo profiles to improve compile times
cjdsellers Nov 14, 2024
48c91f9
Standardize module declaration placement
cjdsellers Nov 14, 2024
8ad1362
Standardize module declaration placement
cjdsellers Nov 14, 2024
b533252
Repair headers
cjdsellers Nov 14, 2024
d4daebe
Fix clippy lints
cjdsellers Nov 14, 2024
9055125
Refine timeout interval
cjdsellers Nov 15, 2024
3371db6
Refine TardisDataClient and instrument provider
cjdsellers Nov 15, 2024
1034421
Revert TardisDataClientConfig default change
cjdsellers Nov 15, 2024
b316a9c
Update dependencies
cjdsellers Nov 15, 2024
a54f56c
Standardize logging
cjdsellers Nov 15, 2024
b83aa98
Fix raw_symbol in PyO3 instrument conversions
cjdsellers Nov 15, 2024
b163f13
Refine TardisDataClient streams and symbol mappings
cjdsellers Nov 15, 2024
3d8209e
Refine Tardis integration
cjdsellers Nov 16, 2024
cf25e5c
Standardize quotes and trades terminology in docs
cjdsellers Nov 16, 2024
b7fe9e1
Reject long term market orders for dYdX (#2059)
davidsblom Nov 16, 2024
2248bb2
Remove obsolete subscribe_ticker method
cjdsellers Nov 16, 2024
f7b9c0e
Remove redundant timeout_interval_ms
cjdsellers Nov 16, 2024
495d07e
Add bar handlers for subscriber example strategies
cjdsellers Nov 16, 2024
65af12d
Standardize log messages
cjdsellers Nov 16, 2024
38481b1
Update dependencies
cjdsellers Nov 16, 2024
ced57d6
Add InstrumentAny methods
cjdsellers Nov 16, 2024
94a03c9
Add Tardis contract expiration parsing
cjdsellers Nov 16, 2024
3775e1b
Remove redundant comments
cjdsellers Nov 16, 2024
55f751e
Refine Tardis integration guide
cjdsellers Nov 16, 2024
944bfed
Complete Tardis integration guide
cjdsellers Nov 16, 2024
ce2aeba
Fix install-docs make target
cjdsellers Nov 17, 2024
77d6dd9
Add Tardis sphinx docs config
cjdsellers Nov 17, 2024
00fad9a
Refine grammar and formatting
cjdsellers Nov 17, 2024
b1d6676
Prune crate dependencies
cjdsellers Nov 17, 2024
f280479
Refine DataEngine organization
cjdsellers Nov 17, 2024
573b640
Improve DataEngine tests
cjdsellers Nov 17, 2024
ea14b0a
Fix doc comment
cjdsellers Nov 17, 2024
f2f8d9c
Continue DataEngine in Rust
cjdsellers Nov 17, 2024
d79fd81
Fix clippy lints
cjdsellers Nov 17, 2024
d5fcc3c
Update dependencies
cjdsellers Nov 17, 2024
00e23b6
Update release notes
cjdsellers Nov 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ jobs:
version: ${{ env.POETRY_VERSION }}

- name: Install build dependencies
run: python -m pip install --upgrade pip setuptools wheel pre-commit msgspec pytest-codspeed
run: python -m pip install --upgrade pip setuptools wheel pre-commit msgspec

# ta-lib Python install currently broken
# https://github.com/TA-Lib/ta-lib-python/issues/655
Expand Down Expand Up @@ -165,12 +165,12 @@ jobs:
make test-examples

# Run codspeed for latest python-version only
# - name: Run benchmarks (Linux)
# if: ${{ matrix.python-version == '3.12' }}
# uses: CodSpeedHQ/action@v3
# with:
# token: ${{ secrets.CODSPEED_TOKEN }}
# run: make test-performance
- name: Run benchmarks (Linux)
if: ${{ matrix.python-version == '3.12' }}
uses: CodSpeedHQ/action@v3
with:
token: ${{ secrets.CODSPEED_TOKEN }}
run: make test-performance

build-windows:
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,6 @@ jobs:
- name: Upload coverage report
uses: codecov/codecov-action@v4
with:
# fail_ci_if_error: true # leave commented until flakiness improves
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
verbose: true
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ logs/
*.tar.gz*
*.zip

# Data
*.parquet

# IntelliJ and VSCode project
*.iml
.idea/
Expand All @@ -43,6 +46,7 @@ logs/
*.pyd
.history*
.cache/
.codspeed/
.mypy_cache/
.profile/
.pytest_cache/
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ repos:
exclude: "docs/_pygments/monokai.py"

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.7.2
rev: v0.7.4
hooks:
- id: ruff
args: ["--fix"]
Expand Down Expand Up @@ -129,6 +129,6 @@ repos:
]

- repo: https://github.com/kynan/nbstripout
rev: 0.7.1
rev: 0.8.0
hooks:
- id: nbstripout
7 changes: 4 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,18 @@ To contribute, follow these steps:

2. Once everyone is aligned, fork the `develop` branch and ensure your fork is up-to-date by regularly merging any upstream changes.

3. Install and configure [pre-commit](https://pre-commit.com/) on your local machine to automatically run code checks, formatters, and linters before each commit. You can install pre-commit via:
3. Install and configure [pre-commit](https://pre-commit.com/) on your local machine to automatically run code checks, formatters, and linters before each commit.
You can install pre-commit with:
```bash
pip install pre-commit
pre-commit install
```

4. Open a pull request (PR) on the `develop` branch with a summary comment and reference to any relevant GitHub issue(s).

5. The CI system will run the full test suite over your code including all unit and integration tests, so include appropriate tests with the PR.
5. The CI system will run the full test suite on your code including all unit and integration tests, so include appropriate tests with the PR.

6. [Deepsource](https://deepsource.io) will perform an automated code review. Fix any issues which cause a failed check, and add the commit to your PR.
6. [Deepsource](https://deepsource.io) will perform an automated code review. Fix any issues that cause a failed check, and add the commit to your PR.

7. Read and understand the Contributor License Agreement (CLA), available at https://github.com/nautechsystems/nautilus_trader/blob/develop/CLA.md.

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ install-debug:

.PHONY: install-docs
install-docs:
BUILD_MODE=debug poetry install --with docs
BUILD_MODE=debug poetry install --with docs --all-extras

.PHONY: install-just-deps
install-just-deps:
Expand Down
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ including FX, Equities, Futures, Options, CFDs, Crypto and Betting - across mult
## Features

- **Fast**: Core is written in Rust with asynchronous networking using [tokio](https://crates.io/crates/tokio).
- **Reliable**: Type safety and thread safety through Rust. Redis-backed performant state persistence.
- **Reliable**: Type safety and thread safety through Rust. Redis-backed performant state persistence (optional).
- **Portable**: OS independent, runs on Linux, macOS, and Windows. Deploy using Docker.
- **Flexible**: Modular adapters mean any REST, WebSocket, or FIX API can be integrated.
- **Advanced**: Time in force `IOC`, `FOK`, `GTD`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency order lists including `OCO`, `OTO`.
Expand Down Expand Up @@ -153,9 +153,9 @@ See the [Integrations](https://nautilustrader.io/docs/latest/integrations/index.

### From PyPI

We recommend running the platform with the latest stable version of Python, and in a virtual environment to isolate the dependencies.
We recommend using the latest supported version of Python and setting up [nautilus_trader](https://pypi.org/project/nautilus_trader/) in a virtual environment to isolate dependencies

To install the latest binary wheel from PyPI:
To install the latest binary wheel (or sdist package) from PyPI using Pythons pip package manager:

pip install -U nautilus_trader

Expand All @@ -168,9 +168,9 @@ For MacBook Pro M1/M2, make sure your Python installed using pyenv is configured

PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <python_version>

See https://pyo3.rs/latest/getting_started#virtualenvs.
See the [PyO3 user guide](https://pyo3.rs/latest/getting-started#virtualenvs) for more details.

It's possible to install from source using `pip` if you first install the build dependencies
It's possible to install from source using pip if you first install the build dependencies
as specified in the `pyproject.toml`. We highly recommend installing using [poetry](https://python-poetry.org/) as below.

1. Install [rustup](https://rustup.rs/) (the Rust toolchain installer):
Expand Down Expand Up @@ -217,7 +217,12 @@ as specified in the `pyproject.toml`. We highly recommend installing using [poet
cd nautilus_trader
poetry install --only main --all-extras

See the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation.html) for other options and further details.
See the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation) for other options and further details.

## Redis

Using Redis with NautilusTrader is **optional** and only required if configured as the backend for a cache database or [message bus](https://nautilustrader.io/docs/latest/concepts/message_bus).
See the Redis section of the [Installation Guide](https://nautilustrader.io/docs/latest/getting_started/installation#redis) for further details.

## Versioning and releases

Expand Down
69 changes: 63 additions & 6 deletions RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,60 @@
# NautilusTrader 1.206.0 Beta

Released on 17th November 2024 (UTC).

### Enhancements
- Added `Portfolio.realized_pnl(...)` method for per instrument realized PnL (based on positions)
- Added `Portfolio.realized_pnls(...)` method for per venue realized PnL (based on positions)
- Added `TardisInstrumentProvider`
- Added `PolymarketExecClientConfig.generate_order_history_from_trades` config setting (default False and not currently recommended)
- Added configuration warning for `InstrumentProvider` (to warn when node starts with no instrument loading)
- Implemented Tardis optional [symbol normalization](https://nautilustrader.io/docs/nightly/integrations/tardis/#symbology-and-normalization)
- Implemented `WebSocketClient` reconnection retries (#2044), thanks @davidsblom
- Implemented `OrderCancelRejected` event generation for Binance and Bybit
- Implemented `OrderModifyRejected` event generation for Binance and Bybit
- Improved `OrderRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)
- Improved `OrderCancelRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)
- Improved `OrderModifyRejected` handling of `reason` string (`None` is now allowed which will become the string `'None'`)

### Internal Improvements
- Ported `RiskEngine` to Rust (#2035), thanks @Pushkarm029 and @twitu
- Ported `ExecutionEngine` to Rust (#2048), thanks @twitu
- Added globally shared data channels to send events from engines to Runner in Rust (#2042), thanks @twitu
- Added LRU caching for dYdX HTTP client (#2049), thanks @davidsblom
- Improved identifier constructors to take `AsRef<str>` for a cleaner more flexible API
- Refined identifiers `From` trait impls
- Refined `InstrumentProvider` initialization behavior and logging
- Refined `LiveTimer` cancel and performance testing
- Simplified `LiveTimer` cancellation model (#2046), thanks @twitu
- Refined Bybit HMAC authentication signatures (now using Rust implemented function)
- Refined Tardis instrument ID parsing
- Removed Bybit `msgspec` redundant import alias (#2050), thanks @sunlei
- Upgraded `databento` crate to v0.16.0

### Breaking Changes
None

### Fixes
- Fixed loading specific instrument IDs for `InstrumentProviderConfig`
- Fixed PyO3 instrument conversions for `raw_symbol` (was incorrectly using the normalized symbol)
- Fixed reconcile open orders and account websocket message for dYdX (#2039), thanks @davidsblom
- Fixed market order `avg_px` for Polymarket trade reports
- Fixed Betfair clients keepalive (#2040), thanks @limx0
- Fixed Betfair reconciliation (#2041), thanks @limx0
- Fixed Betfair customer order ref limit to 32 chars
- Fixed Bybit handling of `PARTIALLY_FILLED_CANCELED` status orders
- Fixed Polymarket size precision for `BinaryOption` instruments (precision 6 to match USDC.e)
- Fixed adapter instrument reloading (providers were not reloading instruments at the configured interval due to internal state flags)
- Fixed static time logging for `BacktestEngine` when running with `use_pyo3` logging config
- Fixed in-flight orders check and improve error handling (#2053), thanks @davidsblom
- Fixed dYdX handling for liquidated fills (#2052), thanks @davidsblom
- Fixed `BybitResponse.time` field as optional `int` (#2051), thanks @sunlei
- Fixed single instrument requests for `DatabentoDataClient` (was incorrectly calling `_handle_instruments` instead of `_handle_instrument`), thanks for reporting @Emsu
- Fixed `fsspec` recursive globbing behavior to ensure only file paths are included, and bumped dependency to version 2024.10.0
- Fixed jupyterlab url typo (#2057), thanks @Alsheh

---

# NautilusTrader 1.205.0 Beta

Released on 3rd November 2024 (UTC).
Expand All @@ -22,15 +79,15 @@ Released on 3rd November 2024 (UTC).
- Refined Arrow serialization (record batch functions now also available in Rust)
- Refined core `Bar` API to remove unnecessary unwraps
- Standardized network client logging
- Fixed all pyo3 deprecations for API breaking changes
- Fixed all PyO3 deprecations for API breaking changes
- Fixed all clippy warning lints for PyO3 changes (#2030), thanks @Pushkarm029
- PyO3 upgrade refactor and repair catalog tests (#2032), thanks @twitu
- Upgraded `pyo3` crate to v0.22.5
- Upgraded `pyo3-async-runtimes` crate to v0.22.0
- Upgraded `tokio` crate to v1.41.0

### Breaking Changes
- Removed pyo3 `DataTransformer` (was being used for namespacing, so refactored to separate functions)
- Removed PyO3 `DataTransformer` (was being used for namespacing, so refactored to separate functions)
- Moved `TEST_DATA_DIR` constant from `tests` to `nautilus_trader` package (#2020), thanks @faysou

### Fixes
Expand All @@ -42,7 +99,7 @@ Released on 3rd November 2024 (UTC).
- Fixed catalog query mem leak test (#2031), thanks @Pushkarm029
- Fixed `OrderInitialized.to_dict()` `tags` value type to `list[str]` (was a concatenated `str`)
- Fixed `OrderInitialized.to_dict()` `linked_order_ids` value type to `list[str]` (was a concatenated `str`)
- Fix Betfair clients shutdown (#2037), thanks @limx0
- Fixed Betfair clients shutdown (#2037), thanks @limx0

---

Expand Down Expand Up @@ -341,7 +398,7 @@ Released on 2nd August 2024 (UTC).
- Fixed `DataEngine` unsubscribing from order book deltas (#1814), thanks @davidsblom
- Fixed `LiveExecutionEngine` handling of adapter client execution report causing `None` mass status (#1789), thanks for reporting @faysou
- Fixed `InteractiveBrokersExecutionClient` handling of instruments not found when generating execution reports (#1789), thanks for reporting @faysou
- Fixed Bybit parsing of trade and quote ticks for websocket messages (#1794), thanks @davidsblom
- Fixed Bybit parsing of trade and quotes for websocket messages (#1794), thanks @davidsblom

---

Expand Down Expand Up @@ -930,7 +987,7 @@ This will be the final release with support for Python 3.9.
- Added `Cache.is_order_pending_cancel_local(...)` (tracks local orders in cancel transition)
- Added `BinanceTimeInForce.GTD` enum member (futures only)
- Added Binance Futures support for GTD orders
- Added Binance internal bar aggregation inference from aggregated trade ticks or 1-MINUTE bars (depending on lookback window)
- Added Binance internal bar aggregation inference from aggregated trades or 1-MINUTE bars (depending on lookback window)
- Added `BinanceExecClientConfig.use_gtd` option (to remap to GTC and locally manage GTD orders)
- Added package version check for `nautilus_ibapi`, thanks @rsmb7z
- Added `RiskEngine` min/max instrument notional limit checks
Expand Down Expand Up @@ -1075,7 +1132,7 @@ Released on 31st July 2023 (UTC).
- 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 `PositionStatusReport` parsing of position side
- Fixed Binance Futures `TradeReport` assignment of position ID (was hardcoded to hedging mode)
- Fixed Binance Futures `TradeReport` assignment of position ID (was hard-coded to hedging mode)
- Fixed Binance execution submitting of order lists
- Fixed Binance commission rates requests for `InstrumentProvider`
- Fixed Binance `TriggerType` parsing #1154, thanks for reporting @davidblom603
Expand Down
2 changes: 1 addition & 1 deletion build.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ def _copy_build_dir_to_project(cmd: build_ext) -> None:


def _copy_rust_dylibs_to_project() -> None:
# https://pyo3.rs/latest/building_and_distribution#manual-builds
# https://pyo3.rs/latest/building-and-distribution#manual-builds
ext_suffix = sysconfig.get_config_var("EXT_SUFFIX")
src = Path(TARGET_DIR) / f"{RUST_LIB_PFX}nautilus_pyo3.{RUST_DYLIB_EXT}"
dst = Path("nautilus_trader/core") / f"nautilus_pyo3{ext_suffix}"
Expand Down
40 changes: 40 additions & 0 deletions docs/api_reference/adapters/tardis.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,43 @@
:members:
:member-order: bysource
```

## Config

```{eval-rst}
.. automodule:: nautilus_trader.adapters.tardis.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
```

## Providers

```{eval-rst}
.. automodule:: nautilus_trader.adapters.tardis.providers
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
```

## Factories

```{eval-rst}
.. automodule:: nautilus_trader.adapters.tardis.factories
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
```

## Data

```{eval-rst}
.. automodule:: nautilus_trader.adapters.tardis.data
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
```
4 changes: 2 additions & 2 deletions docs/concepts/advanced/emulated_orders.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ The only requirement to emulate an order is to pass a `TriggerType` to the `emul
parameter of an `Order` constructor, or `OrderFactory` creation method. The following
emulation trigger types are currently supported:
- `DEFAULT` (which is the same as `BID_ASK`)
- `BID_ASK` (emulated using quote ticks)
- `LAST` (emulated using trade ticks)
- `BID_ASK` (emulated using quotes)
- `LAST` (emulated using trades)

Emulated orders are subject to the same risk controls as 'regular' orders, and can be
modified and canceled by a trading strategy in the normal way. They will also be included
Expand Down
6 changes: 3 additions & 3 deletions docs/concepts/advanced/synthetic_instruments.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Synthetic Instruments

The platform supports creating customized synthetic instruments, which can generate synthetic quote
and trade ticks. These are useful for:
and trades. These are useful for:

- Enabling `Actor` and `Strategy` components to subscribe to quote or trade feeds
- Triggering emulated orders
Expand Down Expand Up @@ -62,7 +62,7 @@ self._synthetic_id = synthetic.id
# Add the synthetic instrument for use by other components
self.add_synthetic(synthetic)

# Subscribe to quote ticks for the synthetic instrument
# Subscribe to quotes for the synthetic instrument
self.subscribe_quote_ticks(self._synthetic_id)
```

Expand All @@ -89,7 +89,7 @@ self.update_synthetic(synthetic)
## Trigger instrument IDs
The platform allows for emulated orders to be triggered based on synthetic instrument prices. In
the following example, we build upon the previous one to submit a new emulated order.
This order will be retained in the emulator until a trigger from synthetic quote ticks releases it.
This order will be retained in the emulator until a trigger from synthetic quotes releases it.
It will then be submitted to Binance as a MARKET order:

```
Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/backtesting.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ We are currently working on this guide.

Backtesting with NautilusTrader is a methodical simulation process that replicates trading
activities using a specific system implementation. This system is composed of various components
including the built-in engines, `Cache`, `MessageBus`, `Portfolio`, [Actors](advanced/actors.md), [Strategies](strategies.md), [Execution Algorithms](execution.md),
including the built-in engines, `Cache`, [MessageBus](message_bus.md), `Portfolio`, [Actors](advanced/actors.md), [Strategies](strategies.md), [Execution Algorithms](execution.md),
and other user-defined modules. The entire trading simulation is predicated on a stream of historical data processed by a
`BacktestEngine`. Once this data stream is exhausted, the engine concludes its operation, producing
detailed results and performance metrics for in-depth analysis.
Expand Down
6 changes: 3 additions & 3 deletions docs/concepts/data.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,18 @@ NautilusTrader defines a unique *bar type* (`BarType`) based on the following co
- **Instrument ID** (`InstrumentId`): Specifies the particular instrument for the bar.
- **Bar Specification** (`BarSpecification`):
- `step`: Defines the interval or frequency of each bar.
- `aggregation`: Specifies the method used for data aggregation (see the list above).
- `aggregation`: Specifies the method used for data aggregation (see the above table).
- `price_type`: Indicates the price basis of the bar (e.g., bid, ask, mid, last).
- **Aggregation Source** (`AggregationSource`): Indicates whether the bar was aggregated internally (within Nautilus) or externally (by a trading venue or data provider).

Bar data can be aggregated either internally or externally:
Bar data aggregation can be either *internal* or *external*:

- `INTERNAL`: The bar is aggregated inside the local Nautilus system boundary.
- `EXTERNAL`: The bar is aggregated outside the local Nautilus system boundary (typically by a trading venue or data provider).

Bar types can also be classified as either *standard* or *composite*:

- **Standard**: Generated from granular market data, such as quotes or trade ticks.
- **Standard**: Generated from granular market data, such as quotes or trades.
- **Composite**: Derived from a higher-granularity bar type through subsampling.

### Defining standard bars
Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/execution.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ know as "primary" (original) orders when being handled by an execution algorithm
```python
from nautilus_trader.model.orders.base import Order

def on_order(self, order: Order) -> None: # noqa (too complex)
def on_order(self, order: Order) -> None:
# Handle the order here
```

Expand Down
Loading
Loading