Skip to content

Commit afdf8d9

Browse files
authored
Release 1.170.0
See release notes.
2 parents c44b7cb + d47a776 commit afdf8d9

File tree

14 files changed

+70
-71
lines changed

14 files changed

+70
-71
lines changed

.github/workflows/release.yml

+22-22
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,21 @@ jobs:
2727
uses: actions/checkout@v3
2828

2929
# Rust setup (ensures latest stable)
30-
- name: Set up Rust tool-chain
30+
- name: Set up Rust tool-chain (Liux/Windows)
31+
if: runner.os != 'macOS'
3132
uses: actions-rust-lang/setup-rust-toolchain@v1
3233
with:
3334
toolchain: stable
3435
components: rustfmt, clippy
3536

37+
- name: Set up Rust tool-chain (macOS)
38+
if: runner.os == 'macOS'
39+
uses: actions-rs/toolchain@v1
40+
with:
41+
toolchain: stable
42+
override: true
43+
components: rustfmt, clippy
44+
3645
# Python setup
3746
- name: Set up Python environment
3847
uses: actions/setup-python@v4
@@ -78,18 +87,9 @@ jobs:
7887
run: python -m pip install --upgrade pip setuptools wheel pre-commit poetry==1.3.2
7988

8089
# Setup Poetry caching
81-
- name: Set output (Linux)
82-
if: runner.os == 'Linux'
83-
run: echo "dir=$(poetry config cache-dir)" >> $GITHUB_ENV
84-
85-
- name: Set output (macOS)
86-
if: runner.os == 'macOS'
90+
- name: Set output
8791
run: echo "dir=$(poetry config cache-dir)" >> $GITHUB_ENV
8892

89-
- name: Set output (Windows)
90-
if: runner.os == 'Windows'
91-
run: echo "dir=$(poetry config cache-dir)" | Out-File -FilePath $env:GITHUB_ENV -Append >> $GITHUB_ENV
92-
9393
- name: Poetry cache
9494
id: cached-poetry
9595
uses: actions/cache@v3
@@ -159,18 +159,9 @@ jobs:
159159
run: python -m pip install --upgrade pip setuptools wheel pre-commit poetry==1.3.2
160160

161161
# Setup Poetry caching
162-
- name: Set output (Linux)
163-
if: runner.os == 'Linux'
164-
run: echo "dir=$(poetry config cache-dir)" >> $GITHUB_ENV
165-
166-
- name: Set output (macOS)
167-
if: runner.os == 'macOS'
162+
- name: Set output
168163
run: echo "dir=$(poetry config cache-dir)" >> $GITHUB_ENV
169164

170-
- name: Set output (Windows)
171-
if: runner.os == 'Windows'
172-
run: echo "dir=$(poetry config cache-dir)" | Out-File -FilePath $env:GITHUB_ENV -Append >> $GITHUB_ENV
173-
174165
- name: Poetry cache
175166
id: cached-poetry
176167
uses: actions/cache@v3
@@ -231,12 +222,21 @@ jobs:
231222
uses: actions/checkout@v3
232223

233224
# Rust setup (ensures latest stable)
234-
- name: Set up Rust tool-chain
225+
- name: Set up Rust tool-chain (Liux/Windows)
226+
if: runner.os != 'macOS'
235227
uses: actions-rust-lang/setup-rust-toolchain@v1
236228
with:
237229
toolchain: stable
238230
components: rustfmt, clippy
239231

232+
- name: Set up Rust tool-chain (macOS)
233+
if: runner.os == 'macOS'
234+
uses: actions-rs/toolchain@v1
235+
with:
236+
toolchain: stable
237+
override: true
238+
components: rustfmt, clippy
239+
240240
# Python setup
241241
- name: Set up Python environment
242242
uses: actions/setup-python@v4

examples/notebooks/backtest_fx_usdjpy.ipynb

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
"from nautilus_trader.backtest.models import FillModel\n",
2020
"from nautilus_trader.backtest.modules import FXRolloverInterestConfig\n",
2121
"from nautilus_trader.backtest.modules import FXRolloverInterestModule\n",
22-
"from nautilus_trader.test_kit.providers import TestInstrumentProvider\n",
2322
"from nautilus_trader.config.common import RiskEngineConfig\n",
2423
"from nautilus_trader.examples.strategies.ema_cross import EMACross\n",
2524
"from nautilus_trader.examples.strategies.ema_cross import EMACrossConfig\n",
@@ -29,7 +28,8 @@
2928
"from nautilus_trader.model.identifiers import Venue\n",
3029
"from nautilus_trader.model.objects import Money\n",
3130
"from nautilus_trader.persistence.wranglers import QuoteTickDataWrangler\n",
32-
"from nautilus_trader.test_kit.providers import TestDataProvider"
31+
"from nautilus_trader.test_kit.providers import TestDataProvider\n",
32+
"from nautilus_trader.test_kit.providers import TestInstrumentProvider"
3333
]
3434
},
3535
{

examples/notebooks/external_data_backtest.ipynb

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
"from nautilus_trader.model.data.tick import QuoteTick\n",
1919
"from nautilus_trader.model.objects import Price, Quantity\n",
2020
"\n",
21-
"from nautilus_trader.test_kit.providers import TestInstrumentProvider\n",
2221
"from nautilus_trader.backtest.node import BacktestNode, BacktestVenueConfig, BacktestDataConfig, BacktestRunConfig, BacktestEngineConfig\n",
2322
"from nautilus_trader.config.common import ImportableStrategyConfig\n",
2423
"from nautilus_trader.persistence.catalog import ParquetDataCatalog\n",
2524
"from nautilus_trader.persistence.external.core import process_files, write_objects\n",
26-
"from nautilus_trader.persistence.external.readers import TextReader"
25+
"from nautilus_trader.persistence.external.readers import TextReader\n",
26+
"from nautilus_trader.test_kit.providers import TestInstrumentProvider"
2727
]
2828
},
2929
{

examples/notebooks/quick_start.ipynb

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@
3232
"from nautilus_trader.model.data.tick import QuoteTick\n",
3333
"from nautilus_trader.model.objects import Price, Quantity\n",
3434
"\n",
35-
"from nautilus_trader.test_kit.providers import TestInstrumentProvider\n",
3635
"from nautilus_trader.backtest.node import BacktestNode, BacktestVenueConfig, BacktestDataConfig, BacktestRunConfig, BacktestEngineConfig\n",
3736
"from nautilus_trader.config.common import ImportableStrategyConfig\n",
3837
"from nautilus_trader.persistence.catalog import ParquetDataCatalog\n",
3938
"from nautilus_trader.persistence.external.core import process_files, write_objects\n",
40-
"from nautilus_trader.persistence.external.readers import TextReader"
39+
"from nautilus_trader.persistence.external.readers import TextReader\n",
40+
"from nautilus_trader.test_kit.providers import TestInstrumentProvider"
4141
]
4242
},
4343
{

nautilus_core/Cargo.lock

+22-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nautilus_trader/adapters/betfair/parsing/requests.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ async def generate_trades_list(
240240
self._log.warn(f"Found no existing order for {venue_order_id}")
241241
return []
242242
fill = filled["clearedOrders"][0]
243-
ts_event = int(pd.Timestamp(fill["lastMatchedDate"]).to_datetime64())
243+
ts_event = pd.Timestamp(fill["lastMatchedDate"]).value
244244
return [
245245
TradeReport(
246246
client_order_id=self.venue_order_id_to_client_order_id[venue_order_id],

nautilus_trader/adapters/betfair/parsing/streaming.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ async def generate_trades_list(
737737
self._log.warn(f"Found no existing order for {venue_order_id}")
738738
return []
739739
fill = filled[0]
740-
ts_event = int(pd.Timestamp(fill.lastMatchedDate).to_datetime64())
740+
ts_event = pd.Timestamp(fill.lastMatchedDate).value
741741
return [
742742
TradeReport(
743743
account_id=AccountId("BETFAIR"),

nautilus_trader/backtest/engine.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -887,14 +887,14 @@ cdef class BacktestEngine:
887887
start = unix_nanos_to_dt(start_ns)
888888
else:
889889
start = pd.to_datetime(start, utc=True)
890-
start_ns = int(start.to_datetime64())
890+
start_ns = start.value
891891
if end is None:
892892
# Set `end` to end of data
893893
end_ns = self._data[-1].ts_init
894894
end = unix_nanos_to_dt(end_ns)
895895
else:
896896
end = pd.to_datetime(end, utc=True)
897-
end_ns = int(end.to_datetime64())
897+
end_ns = end.value
898898
Condition.true(start_ns < end_ns, "start was >= end")
899899
Condition.not_empty(self._data, "data")
900900

nautilus_trader/model/orders/base.pyx

+2
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ cdef dict _ORDER_STATE_TABLE = {
9090
(OrderStatus.ACCEPTED, OrderStatus.FILLED): OrderStatus.FILLED,
9191
(OrderStatus.CANCELED, OrderStatus.PARTIALLY_FILLED): OrderStatus.PARTIALLY_FILLED, # Real world possibility
9292
(OrderStatus.CANCELED, OrderStatus.FILLED): OrderStatus.FILLED, # Real world possibility
93+
(OrderStatus.PENDING_UPDATE, OrderStatus.REJECTED): OrderStatus.REJECTED, # Real world possibility
9394
(OrderStatus.PENDING_UPDATE, OrderStatus.ACCEPTED): OrderStatus.ACCEPTED,
9495
(OrderStatus.PENDING_UPDATE, OrderStatus.CANCELED): OrderStatus.CANCELED,
9596
(OrderStatus.PENDING_UPDATE, OrderStatus.EXPIRED): OrderStatus.EXPIRED,
@@ -98,6 +99,7 @@ cdef dict _ORDER_STATE_TABLE = {
9899
(OrderStatus.PENDING_UPDATE, OrderStatus.PENDING_CANCEL): OrderStatus.PENDING_CANCEL,
99100
(OrderStatus.PENDING_UPDATE, OrderStatus.PARTIALLY_FILLED): OrderStatus.PARTIALLY_FILLED,
100101
(OrderStatus.PENDING_UPDATE, OrderStatus.FILLED): OrderStatus.FILLED,
102+
(OrderStatus.PENDING_CANCEL, OrderStatus.REJECTED): OrderStatus.REJECTED, # Real world possibility
101103
(OrderStatus.PENDING_CANCEL, OrderStatus.PENDING_CANCEL): OrderStatus.PENDING_CANCEL, # Allow multiple requests
102104
(OrderStatus.PENDING_CANCEL, OrderStatus.CANCELED): OrderStatus.CANCELED,
103105
(OrderStatus.PENDING_CANCEL, OrderStatus.ACCEPTED): OrderStatus.ACCEPTED, # Allows failed cancel requests

nautilus_trader/system/kernel.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,10 @@ def __init__( # noqa (too complex)
219219
f"environment {environment} not recognized", # pragma: no cover (design-time error)
220220
)
221221

222+
# Setup the logger with a `LiveClock` initially,
223+
# which is later swapped out for a `TestClock` in the `BacktestEngine`.
222224
self._logger = Logger(
223-
clock=self._clock,
225+
clock=self._clock if isinstance(self._clock, LiveClock) else LiveClock(),
224226
trader_id=self._trader_id,
225227
machine_id=self._machine_id,
226228
instance_id=self._instance_id,

nautilus_trader/trading/filters.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ cdef class EconomicNewsEventFilter:
479479

480480
cdef int index = 0
481481
row = events.iloc[index]
482-
cdef uint64_t ts_event = int(pd.Timestamp(events.index[index]).to_datetime64())
482+
cdef uint64_t ts_event = pd.Timestamp(events.index[index]).value
483483
return NewsEvent(
484484
NewsImpact[row["Impact"]],
485485
row["Name"],
@@ -528,7 +528,7 @@ cdef class EconomicNewsEventFilter:
528528

529529
cdef int index = -1
530530
row = events.iloc[index]
531-
cdef uint64_t ts_event = int(pd.Timestamp(events.index[index]).to_datetime64())
531+
cdef uint64_t ts_event = pd.Timestamp(events.index[index]).value
532532
return NewsEvent(
533533
NewsImpact[row["Impact"]],
534534
row["Name"],

poetry.lock

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/unit_tests/persistence/external/test_core.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -291,10 +291,7 @@ def test_repartition_dataset(self):
291291
{
292292
"value": np.arange(5),
293293
"instrument_id": ["a", "a", "a", "b", "b"],
294-
"ts_init": [
295-
int(ts.to_datetime64())
296-
for ts in pd.date_range(start_date, periods=5, tz="UTC")
297-
],
294+
"ts_init": [ts.value for ts in pd.date_range(start_date, periods=5, tz="UTC")],
298295
},
299296
)
300297
write_parquet(

0 commit comments

Comments
 (0)