Skip to content

Commit

Permalink
Release 1.135.0
Browse files Browse the repository at this point in the history
See release notes.
  • Loading branch information
cjdsellers authored Dec 13, 2021
2 parents 2d602dd + e8c5364 commit 35baeda
Show file tree
Hide file tree
Showing 212 changed files with 5,953 additions and 5,435 deletions.
5 changes: 3 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ repos:
exclude: "nautilus_trader/live/node.py|nautilus_trader/adapters/betfair/execution.py"

- repo: https://github.com/psf/black
rev: 21.11b0
rev: 21.12b0
hooks:
- id: black
args: [
Expand Down Expand Up @@ -134,7 +134,7 @@ repos:
- id: pydocstyle
files: ^nautilus_trader/
args:
- "--ignore=D100,D102,D103,D104,D107,D105,D200,D203,D205,D212,D400,D415"
- "--ignore=D100,D102,D103,D104,D107,D105,D200,D203,D205,D212,D400,D413,D415"
additional_dependencies:
- toml

Expand Down Expand Up @@ -171,4 +171,5 @@ repos:
# D205: 1 blank line required between summary line and description (optional style)
# D212: Multi-line docstring summary should start at the first line (optional style)
# D400: First line should end with a period (not always a first line)
# D413: Missing blank line after last section ('Parameters')
# D415: First line should end with a period, question mark, or exclamation point (not always a first line)
46 changes: 24 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,25 @@ NautilusTrader is an open-source, high-performance, production-grade algorithmic
providing quantitative traders with the ability to backtest portfolios of automated trading strategies
on historical data with an event-driven engine, and also deploy those same strategies live.

NautilusTrader is AI/ML first, designed to deploy models for algorithmic trading strategies developed
The platform is AI-first, designed to deploy models for algorithmic trading strategies developed
using the Python ecosystem - within a highly performant and robust Python native environment.
This helps to address the challenge of keeping the research/backtest environment consistent with the production
live trading environment.

The platform aims to be universal - with any REST/WebSocket/FIX API able to be integrated via modular
adapters. Thus the platform can handle high-frequency trading operations for any asset classes
NautilusTraders design, architecture and implementation philosophy holds software correctness and safety at the
highest level, with the aim of supporting Python native, mission-critical, trading system backtesting
and live deployment workloads.

The platform is also universal and asset class agnostic - with any REST, WebSocket or FIX API able to be integrated via modular
adapters. Thus, it can handle high-frequency trading operations for any asset classes
including FX, Equities, Futures, Options, CFDs, Crypto and Betting - across multiple venues simultaneously.

## Features

- **Fast:** C-level speed through Cython. Asynchronous networking with `uvloop`.
- **Reliable:** Type safety through Cython. Redis backed performant state persistence.
- **Flexible:** OS independent, runs on Linux, macOS, Windows. Deploy using Docker.
- **Integrated:** Modular adapters mean any REST/FIX/WebSocket API can be integrated.
- **Integrated:** Modular adapters mean any REST, WebSocket, or FIX API can be integrated.
- **Advanced:** Time-in-force options `GTD`, `IOC`, `FOK` etc, advanced order types and triggers, `post-only`, `reduce-only`, and icebergs. Contingency order lists including `OCO`, `OTO` etc.
- **Backtesting:** Run with multiple venues, instruments and strategies simultaneously using historical quote tick, trade tick, bar, order book and custom data with nanosecond resolution.
- **Multi-venue:** Multiple venue capabilities facilitate market making and statistical arbitrage strategies.
Expand All @@ -51,32 +57,25 @@ including FX, Equities, Futures, Options, CFDs, Crypto and Betting - across mult

## Why NautilusTrader?

One of the key value propositions of NautilusTrader is that it addresses the challenge of keeping
the research/backtest environment consistent with the production live trading environment.

Normally research and backtesting may be conducted in Python (or other suitable language), with
trading strategies traditionally then needing to be reimplemented in C++/C#/Java or other statically
typed language(s). The reasoning here is to enjoy the performance a compiled language can offer,
along with the tooling and support which has made these languages historically more suitable for
large enterprise systems.
Traditionally, trading strategy research and backtesting might be conducted in Python (or other suitable language), with
the models and/or strategies then needing to be reimplemented in C, C++, C#, Java or other statically
typed language(s). The reasoning here is to utilize the performance and type safety a compiled language can offer,
which has historically made these languages more suitable for large trading systems.

The value of NautilusTrader here is that this re-implementation step is circumvented, as the
platform was designed from the ground up to hold its own in terms of performance and quality.

Python has simply caught up in performance (via Cython offering C-level speed) and general tooling,
making it a suitable language for building a large system such as this. The benefit being that a
Python native environment can be offered, suitable for professional quantitative traders and trading
firms.
The value of NautilusTrader here is that this reimplementation step is circumvented - as the critical core components of the platform
have all been written entirely in Cython. Because Cython can generate efficient C code (which then compiles to C extension modules as native binaries),
Python can effectively be used as a high-performance systems programming language - with the benefit being that a Python native environment can be offered which is suitable for
professional quantitative traders and trading firms.

## Why Python?

Python was originally created decades ago as a simple scripting language with a clean straight
forward syntax. It has since evolved into a fully fledged general purpose object-oriented
programming language. Not only that, Python has become the _de facto lingua franca_ of data science,
machine learning, and artificial intelligence.
programming language. Based on the TIOBE index, Python is currently the most popular programming language in the world.
Not only that, Python has become the _de facto lingua franca_ of data science, machine learning, and artificial intelligence.

The language out of the box is not without its drawbacks however, especially in the context of
implementing large systems. Cython has addressed a lot of these issues, offering all the advantages
implementing large performance-critical systems. Cython has addressed a lot of these issues, offering all the advantages
of a statically typed language, embedded into Pythons rich ecosystem of software libraries and
developer/user communities.

Expand Down Expand Up @@ -116,6 +115,9 @@ To install the latest binary wheel from PyPI:

pip install -U nautilus_trader

To install on ARM architectures such as MacBook Pro M1 / Apple Silicon, this stackoverflow thread is useful:
https://stackoverflow.com/questions/65745683/how-to-install-scipy-on-apple-silicon-arm-m1

Refer to the [Installation Guide](https://docs.nautilustrader.io/getting-started/installation) for other options and further details.

## Examples
Expand Down
21 changes: 21 additions & 0 deletions RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
# NautilusTrader 1.135.0 Beta - Release Notes

Released 13th, December 2021

## Breaking Changes
- Renamed `match_id` to `trade_id`.

## Enhancements
- Added bars method to `DataCatalog`.
- Improved parsing of Binance historical bars data.
- Added `CancelAllOrders` command.
- Added bulk cancel capability to Binance integration.
- Added bulk cancel capability to Betfair integration.

## Fixes
- Fixed handling of `cpu_freq` call in logging for ARM architecture.
- Fixed market order fill edge case for bar data
- Fixed handling of `GenericData` in backtests.

---

# NautilusTrader 1.134.0 Beta - Release Notes

Released on 22nd, November 2021
Expand Down
5 changes: 1 addition & 4 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,7 @@ def _build_extensions() -> List[Extension]:
language="c",
extra_compile_args=extra_compile_args,
)
for pyx in itertools.chain(
Path("examples").rglob("*.pyx"),
Path("nautilus_trader").rglob("*.pyx"),
)
for pyx in itertools.chain(Path("nautilus_trader").rglob("*.pyx"))
]


Expand Down
60 changes: 48 additions & 12 deletions docs/source/api_reference/backtest.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,42 @@ Backtest

.. automodule:: nautilus_trader.backtest

Loaders
-------

.. automodule:: nautilus_trader.backtest.data.loaders
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Providers
---------

.. automodule:: nautilus_trader.backtest.data.providers
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Wranglers
---------

.. automodule:: nautilus_trader.backtest.data.wranglers
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.backtest.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Data Client
-----------

Expand Down Expand Up @@ -39,15 +75,6 @@ Execution
:members:
:member-order: bysource

Loaders
-------

.. automodule:: nautilus_trader.backtest.data.loaders
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Models
------

Expand All @@ -66,11 +93,20 @@ Modules
:members:
:member-order: bysource

Wranglers
---------
Backtest Node
-------------

.. automodule:: nautilus_trader.data.wranglers
.. automodule:: nautilus_trader.backtest.node
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Results
-------

.. automodule:: nautilus_trader.backtest.results
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
9 changes: 9 additions & 0 deletions docs/source/api_reference/cache.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ Cache
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.cache.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Database
--------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/common.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@ Component
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.common.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Factories
---------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ Client
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.data.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Engine
------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/execution.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@ Client
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.execution.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Engine
------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/infrastructure.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,12 @@ Cache
:inherited-members:
:members:
:member-order: bysource

Config
------

.. automodule:: nautilus_trader.infrastructure.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource
9 changes: 9 additions & 0 deletions docs/source/api_reference/live.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ Live
.. automodule:: nautilus_trader.live


Config
------

.. automodule:: nautilus_trader.live.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Data Client
-----------

Expand Down
4 changes: 2 additions & 2 deletions docs/source/api_reference/network.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Network
HTTP Client
-----------

.. automodule:: nautilus_trader.network.http_client
.. automodule:: nautilus_trader.network.http
:show-inheritance:
:inherited-members:
:members:
Expand All @@ -25,7 +25,7 @@ Socket
WebSocket Client
----------------

.. automodule:: nautilus_trader.network.ws_client
.. automodule:: nautilus_trader.network.websocket
:show-inheritance:
:inherited-members:
:members:
Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/risk.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ Risk
.. automodule:: nautilus_trader.risk


Config
------

.. automodule:: nautilus_trader.risk.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Engine
------

Expand Down
9 changes: 9 additions & 0 deletions docs/source/api_reference/trading.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ Trading
.. automodule:: nautilus_trader.trading


Config
------

.. automodule:: nautilus_trader.trading.config
:show-inheritance:
:inherited-members:
:members:
:member-order: bysource

Filters
-------

Expand Down
10 changes: 0 additions & 10 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,3 @@
html_static_path = ["_static"]
html_style = "css/nautilus.css"
html_logo = "_static/img/nautilus-black.png"


def skip(app, what, name, obj, would_skip, options): # noqa
if name == "__init__":
return False
return would_skip


def setup(app): # noqa
app.connect("autodoc-skip-member", skip)
Loading

0 comments on commit 35baeda

Please sign in to comment.