Skip to content

Commit

Permalink
Release 1.203.0
Browse files Browse the repository at this point in the history
See release notes.
  • Loading branch information
cjdsellers authored Oct 5, 2024
2 parents fad3968 + bd5aa50 commit 928f5a7
Show file tree
Hide file tree
Showing 165 changed files with 4,081 additions and 1,892 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
Expand Down
48 changes: 36 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
matrix:
arch: [x64]
os: [ubuntu-latest]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash
Expand Down Expand Up @@ -105,14 +105,14 @@ jobs:
# make install-talib
# poetry run pip install setuptools numpy==1.26.4 ta-lib

- name: Set up cached pre-commit
- name: Cached pre-commit
id: cached-pre-commit
uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Set up cached cargo
- name: Cached cargo
id: cached-cargo
uses: actions/cache@v4
with:
Expand All @@ -128,13 +128,21 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
path: ${{ env.POETRY_CACHE_DIR }}
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-poetry-${{ hashFiles('**/poetry.lock') }}

- name: Cached test data
id: cached-testdata-large
uses: actions/cache@v4
with:
path: tests/test_data/large
key: ${{ runner.os }}-large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
restore-keys: ${{ runner.os }}-large-files-

- name: Run pre-commit
run: |
# pre-commit run --hook-stage manual gitlint-ci
Expand Down Expand Up @@ -173,7 +181,7 @@ jobs:
matrix:
arch: [x64]
os: [windows-latest]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash
Expand Down Expand Up @@ -229,14 +237,14 @@ jobs:
- name: Install build dependencies
run: python -m pip install --upgrade pip setuptools wheel pre-commit msgspec

- name: Set up cached pre-commit
- name: Cached pre-commit
id: cached-pre-commit
uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: ${{ runner.os }}-${{ matrix.python-version }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Set up cached cargo
- name: Cached cargo
id: cached-cargo
uses: actions/cache@v4
with:
Expand All @@ -252,13 +260,21 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
path: ${{ env.POETRY_CACHE_DIR }}
key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('**/poetry.lock') }}

- name: Cached test data
id: cached-testdata-large
uses: actions/cache@v4
with:
path: tests/test_data/large
key: ${{ runner.os }}-large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
restore-keys: ${{ runner.os }}-large-files-

- name: Run pre-commit
run: |
# pre-commit run --hook-stage manual gitlint-ci
Expand All @@ -278,7 +294,7 @@ jobs:
matrix:
arch: [arm64]
os: [macos-latest]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash
Expand Down Expand Up @@ -338,14 +354,14 @@ jobs:
- name: Install build dependencies
run: python -m pip install --upgrade pip setuptools wheel pre-commit msgspec

- name: Set up cached pre-commit
- name: Cached pre-commit
id: cached-pre-commit
uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}

- name: Set up cached cargo
- name: Cached cargo
id: cached-cargo
uses: actions/cache@v4
with:
Expand All @@ -361,13 +377,21 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
path: ${{ env.POETRY_CACHE_DIR }}
key: ${{ runner.os }}-${{ env.PYTHON_VERSION }}-poetry-${{ hashFiles('**/poetry.lock') }}

- name: Cached test data
id: cached-testdata-large
uses: actions/cache@v4
with:
path: tests/test_data/large
key: ${{ runner.os }}-large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
restore-keys: ${{ runner.os }}-large-files-

- name: Run pre-commit
run: |
# pre-commit run --hook-stage manual gitlint-ci
Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
matrix:
arch: [x64]
os: [ubuntu-latest]
python-version: ["3.10"] # Fails on 3.11 due Cython
python-version: ["3.11"]
name: build - Python ${{ matrix.python-version }} (${{ matrix.arch }} ${{ matrix.os }})
runs-on: ${{ matrix.os }}
services:
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
# make install-talib
# poetry run pip install setuptools numpy==1.26.4 ta-lib

- name: Set up cached pre-commit
- name: Cached pre-commit
id: cached-pre-commit
uses: actions/cache@v4
with:
Expand All @@ -104,13 +104,21 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
path: ${{ env.POETRY_CACHE_DIR }}
key: ${{ runner.os }}-${{ matrix.python-version }}-poetry-${{ hashFiles('**/poetry.lock') }}

- name: Cached test data
id: cached-testdata-large
uses: actions/cache@v4
with:
path: tests/test_data/large
key: ${{ runner.os }}-large-files-${{ hashFiles('tests/test_data/large/checksums.json') }}
restore-keys: ${{ runner.os }}-large-files-

- name: Install Nautilus CLI and run init postgres
run: |
make install-cli
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
matrix:
arch: [x64]
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash
Expand Down Expand Up @@ -163,7 +163,7 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -257,7 +257,7 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
Expand Down Expand Up @@ -300,7 +300,7 @@ jobs:
matrix:
arch: [x64]
os: [ubuntu-20.04, ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.11", "3.12"]
defaults:
run:
shell: bash
Expand Down Expand Up @@ -384,7 +384,7 @@ jobs:
- name: Set poetry cache-dir
run: echo "POETRY_CACHE_DIR=$(poetry config cache-dir)" >> $GITHUB_ENV

- name: Poetry cache
- name: Cached poetry
id: cached-poetry
uses: actions/cache@v4
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,11 @@ bench_data/
nautilus_trader/**/.gitignore
nautilus_trader/test_kit/mocks/.nautilus/
tests/test_data/catalog/
tests/test_data/large/*
tests/unit_tests/catalog/
tests/unit_tests/persistence/catalog/

# Exceptions
!/nautilus_core/adapters/src/databento/test_data/*
!tests/test_data/large/checksums.json
!tests/integration_tests/adapters/betfair/responses/*.log
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

| Platform | Rust | Python |
| :----------------- | :------ | :----- |
| `Linux (x86_64)` | 1.81.0+ | 3.10+ |
| `macOS (arm64)` | 1.81.0+ | 3.10+ |
| `Windows (x86_64)` | 1.81.0+ | 3.10+ |
| `Linux (x86_64)` | 1.81.0+ | 3.11+ |
| `macOS (arm64)` | 1.81.0+ | 3.11+ |
| `Windows (x86_64)` | 1.81.0+ | 3.11+ |

[![](https://dcbadge.limes.pink/api/server/AUWVs3XaCS)](https://discord.gg/AUWVs3XaCS)

Expand Down Expand Up @@ -131,7 +131,7 @@ The following integrations are currently supported:
| [Binance US](https://binance.us) | `BINANCE` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](https://nautilustrader.io/docs/latest/integrations/binance.html) |
| [Binance Futures](https://www.binance.com/en/futures) | `BINANCE` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](https://nautilustrader.io/docs/latest/integrations/binance.html) |
| [Bybit](https://www.bybit.com) | `BYBIT` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](https://nautilustrader.io/docs/latest/integrations/bybit.html) |
| [Databento](https://databento.com) | `DATABENTO` | Data Provider | ![status](https://img.shields.io/badge/beta-yellow) | [Guide](https://nautilustrader.io/docs/latest/integrations/databento.html) |
| [Databento](https://databento.com) | `DATABENTO` | Data Provider | ![status](https://img.shields.io/badge/stable-green) | [Guide](https://nautilustrader.io/docs/latest/integrations/databento.html) |
| [dYdX](https://dydx.exchange/) | `DYDX` | Crypto Exchange (DEX) | ![status](https://img.shields.io/badge/beta-yellow) | [Guide](https://nautilustrader.io/docs/latest/integrations/dydx.html) |
| [Interactive Brokers](https://www.interactivebrokers.com) | `INTERACTIVE_BROKERS` | Brokerage (multi-venue) | ![status](https://img.shields.io/badge/stable-green) | [Guide](https://nautilustrader.io/docs/latest/integrations/ib.html) |
| [OKX](https://okx.com) | `OKX` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/building-orange) | [Guide](https://nautilustrader.io/docs/latest/integrations/okx.html) |
Expand Down
34 changes: 34 additions & 0 deletions RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
# NautilusTrader 1.203.0 Beta

Released on 5th October 2024 (UTC).

### Enhancements
- Added `mode` parameter to `ParquetDataCatalog.write_data` to control data writing behavior (#1976), thanks @faysou
- Added batch cancel for short terms orders of dYdX (#1978), thanks @davidsblom
- Improved OKX configuration (#1966), thanks @miller-moore
- Improved option greeks (#1964), thanks @faysou

### Internal Improvements
- Implemented order book delta processing for `SimulatedExchange` (#1975), thanks @filipmacek
- Implemented bar processing for `SimulatedExchange` (#1969), thanks @filipmacek
- Implemented remaining getter functions in `SimulatedExchange` (#1970), thanks @filipmacek
- Implemented rate limiting for dYdX websocket subscriptions (#1977), thanks @davidsblom
- Refactored reconnection handling for dYdX (#1983), thanks @davidsblom
- Refined `DatabentoDataLoader` internals to accommodate usage from Rust
- Added initial large test data files download and caching capability

### Breaking Changes
None

### Fixes
- Fixed out of order row groups in DataFusion filter query (#1974), thanks @twitu
- Fixed `BacktestNode` data sorting regression causing clock non-decreasing time assertion error
- Fixed circular imports for `Actor`, thanks @limx0
- Fixed OKX HTTP client signatures (#1966), thanks @miller-moore
- Fixed resubscribing to orderbooks for dYdX (#1973), thanks @davidsblom
- Fixed generating cancel rejections for dYdX (#1982), thanks @davidsblom
- Fixed `WebSocketClient` task cleanup on disconnect (#1981), thanks @twitu
- Fixed `Condition` method name collisions with C `true` and `false` macros, which occurred during compilation in profiling mode

---

# NautilusTrader 1.202.0 Beta

Released on 27th September 2024 (UTC).
Expand Down
12 changes: 7 additions & 5 deletions build.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
#!/usr/bin/env python3

import datetime
import datetime as dt
import itertools
import os
import platform
import shutil
import subprocess
import sys
import sysconfig
import tomllib
from pathlib import Path

import numpy as np
import toml
from Cython.Build import build_ext
from Cython.Build import cythonize
from Cython.Compiler import Options
Expand Down Expand Up @@ -351,7 +351,9 @@ def build() -> None:


if __name__ == "__main__":
nautilus_trader_version = toml.load("pyproject.toml")["tool"]["poetry"]["version"]
with open("pyproject.toml", "rb") as f:
pyproject_data = tomllib.load(f)
nautilus_trader_version = pyproject_data["tool"]["poetry"]["version"]
print("\033[36m")
print("=====================================================================")
print(f"Nautilus Builder {nautilus_trader_version}")
Expand All @@ -375,7 +377,7 @@ def build() -> None:
print(f"LDFLAGS={os.environ['LDFLAGS']}") if "LDFLAGS" in os.environ else None

print("\nStarting build...")
ts_start = datetime.datetime.now(datetime.timezone.utc)
ts_start = dt.datetime.now(dt.UTC)
build()
print(f"Build time: {datetime.datetime.now(datetime.timezone.utc) - ts_start}")
print(f"Build time: {dt.datetime.now(dt.UTC) - ts_start}")
print("\033[32m" + "Build completed" + "\033[0m")
2 changes: 1 addition & 1 deletion docs/getting_started/backtest_high_level.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"metadata": {},
"source": [
"## Prerequisites\n",
"- Python 3.10+ installed\n",
"- Python 3.11+ installed\n",
"- [JupyterLab](https://jupyter.org/) or similar installed (`pip install -U jupyterlab`)\n",
"- [NautilusTrader](https://pypi.org/project/nautilus_trader/) latest release installed (`pip install -U nautilus_trader`)"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/getting_started/backtest_low_level.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"metadata": {},
"source": [
"## Prerequisites\n",
"- Python 3.10+ installed\n",
"- Python 3.11+ installed\n",
"- [JupyterLab](https://jupyter.org/) or similar installed (`pip install -U jupyterlab`)\n",
"- [NautilusTrader](https://pypi.org/project/nautilus_trader/) latest release installed (`pip install -U nautilus_trader`)"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/getting_started/installation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation

NautilusTrader is tested and supported for Python 3.10-3.12 on the following 64-bit platforms:
NautilusTrader is tested and supported for Python 3.11 and 3.12 on the following 64-bit platforms:

| Operating System | Supported Versions | CPU Architecture |
|------------------------|-----------------------|-------------------|
Expand Down
2 changes: 1 addition & 1 deletion docs/integrations/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The following integrations are currently supported:
| [Binance US](https://binance.us) | `BINANCE` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](integrations/binance.md) |
| [Binance Futures](https://www.binance.com/en/futures) | `BINANCE` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](integrations/binance.md) |
| [Bybit](https://www.bybit.com) | `BYBIT` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/stable-green) | [Guide](integrations/bybit.md) |
| [Databento](https://databento.com) | `DATABENTO` | Data Provider | ![status](https://img.shields.io/badge/beta-yellow) | [Guide](integrations/databento.md) |
| [Databento](https://databento.com) | `DATABENTO` | Data Provider | ![status](https://img.shields.io/badge/stable-green) | [Guide](integrations/databento.md) |
| [dYdX](https://dydx.exchange/) | `DYDX` | Crypto Exchange (DEX) | ![status](https://img.shields.io/badge/beta-yellow) | [Guide](integrations/dydx.md) |
| [Interactive Brokers](https://www.interactivebrokers.com) | `INTERACTIVE_BROKERS` | Brokerage (multi-venue) | ![status](https://img.shields.io/badge/stable-green) | [Guide](integrations/ib.md) |
| [OKX](https://okx.com) | `OKX` | Crypto Exchange (CEX) | ![status](https://img.shields.io/badge/building-orange) | [Guide](integrations/okx.md) |
Expand Down
2 changes: 1 addition & 1 deletion docs/integrations/polymarket.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ To trade with Polymarket using an EOA wallet, follow these steps to generate you

1. Ensure the following environment variables are set:
- `POLYMARKET_PK`: Your private key for signing transactions.
- `POLYMARKET_FUNDER`: The wallet address used for funding trades.
- `POLYMARKET_FUNDER`: The wallet address (public key) on the **Polygon** network used for funding trades on Polymarket.

2. Run the script using:
```bash
Expand Down
Loading

0 comments on commit 928f5a7

Please sign in to comment.