Zweig | Version | Status |
---|---|---|
master | ||
nightly | ||
develop |
Plattform | Rost | Python |
---|---|---|
Linux (x86_64) | 1.83.0+ | 3.11+ |
macOS (arm64) | 1.83.0+ | 3.11+ |
Windows (x86_64) | 1.83.0+ | 3.11+ |
NautilusTrader ist eine quelloffene, hochleistungsfähige algorithmische Handelsplattform in Produktionsqualität, die quantitativen Händlern die Möglichkeit bietet, Portfolios automatisierter Handelsstrategien anhand historischer Daten mit einer ereignisgesteuerten Engine zu testen und dieselben Strategien auch live einzusetzen Keine Codeänderungen.
Die Plattform ist „AI-first“ und darauf ausgelegt, algorithmische Handelsstrategien in einer hochleistungsfähigen und robusten nativen Python-Umgebung zu entwickeln und einzusetzen. Dies trägt dazu bei, die Paritätsherausforderung zu bewältigen, die Python-Forschungs-/Backtest-Umgebung mit der Produktions-Live-Handelsumgebung konsistent zu halten.
Die Design-, Architektur- und Implementierungsphilosophie von NautilusTraders hält die Korrektheit und Sicherheit der Software auf höchstem Niveau, mit dem Ziel, Python-native, geschäftskritische Backtesting- und Live-Deployment-Workloads für Handelssysteme zu unterstützen.
Die Plattform ist außerdem universell und unabhängig von der Anlageklasse – jede REST-, WebSocket- oder FIX-API kann über modulare Adapter integriert werden. Somit kann es Hochfrequenzhandelsvorgänge für alle Anlageklassen, einschließlich Devisen, Aktien, Futures, Optionen, CFDs, Krypto und Wetten, an mehreren Handelsplätzen gleichzeitig abwickeln.
IOC
, FOK
, GTD
, AT_THE_OPEN
, AT_THE_CLOSE
, erweiterte Auftragstypen und bedingte Auslöser. Ausführungsanweisungen post-only
, reduce-only
und „Icebergs“. Notfall-Anordnungslisten einschließlich OCO
, OTO
.nautilus – aus dem Altgriechischen „Seemann“ und naus „Schiff“.
Die Nautilusschale besteht aus modularen Kammern mit einem Wachstumsfaktor, der einer logarithmischen Spirale nahekommt. Die Idee ist, dass dies auf die Ästhetik von Design und Architektur übertragen werden kann.
Herkömmlicherweise werden die Recherche und das Backtesting von Handelsstrategien in Python (oder einer anderen geeigneten Sprache) unter Verwendung vektorisierter Methoden durchgeführt, wobei die Strategie dann ereignisgesteuerter unter Verwendung von C++, C#, Java oder anderen statisch typisierten Sprachen neu implementiert werden muss ). Der Grund dafür ist, dass vektorisierter Backtesting-Code die granulare zeit- und ereignisabhängige Komplexität des Echtzeithandels nicht ausdrücken kann, wo sich kompilierte Sprachen aufgrund ihrer inhärent höheren Leistung und Typsicherheit als geeigneter erwiesen haben.
Einer der Hauptvorteile von NautilusTrader besteht darin, dass dieser Schritt der Neuimplementierung nun umgangen wird, da die kritischen Kernkomponenten der Plattform alle vollständig in Rust oder Cython geschrieben wurden. Das bedeutet, dass wir die richtigen Tools für den Job verwenden, bei dem Systemprogrammiersprachen leistungsstarke Binärdateien kompilieren und CPython C-Erweiterungsmodule dann eine native Python-Umgebung bieten können, die für professionelle quantitative Händler und Handelsfirmen geeignet ist.
Python wurde ursprünglich vor Jahrzehnten als einfache Skriptsprache mit einer sauberen, unkomplizierten Syntax entwickelt. Seitdem hat es sich zu einer vollwertigen objektorientierten Allzweck-Programmiersprache entwickelt. Basierend auf dem TIOBE-Index ist Python derzeit die beliebteste Programmiersprache der Welt. Darüber hinaus ist Python de facto zur Verkehrssprache der Datenwissenschaft, des maschinellen Lernens und der künstlichen Intelligenz geworden.
Die Standardsprache ist jedoch nicht ohne Nachteile, insbesondere im Zusammenhang mit der Implementierung großer leistungskritischer Systeme. Cython hat viele dieser Probleme angegangen und bietet alle Vorteile einer statisch typisierten Sprache, eingebettet in Pythons umfangreiches Ökosystem aus Softwarebibliotheken und Entwickler-/Benutzergemeinschaften.
Rust ist eine Multiparadigmen-Programmiersprache, die auf Leistung und Sicherheit, insbesondere sichere Parallelität, ausgelegt ist. Rust ist unglaublich schnell und speichereffizient (vergleichbar mit C und C++) ohne Garbage Collector. Es kann geschäftskritische Systeme betreiben, auf eingebetteten Geräten laufen und lässt sich problemlos in andere Sprachen integrieren.
Das umfangreiche Typsystem und Besitzmodell von Rust garantiert deterministische Speicher- und Thread-Sicherheit und eliminiert viele Fehlerklassen zur Kompilierungszeit.
Das Projekt nutzt Rust zunehmend für leistungskritische Kernkomponenten. Die Python-Sprachbindung erfolgt über Cython und PyO3, wobei statische Bibliotheken zur Kompilierzeit verknüpft werden, bevor die Wheel-Binärdateien gepackt werden, sodass ein Benutzer Rust nicht installiert haben muss, um NautilusTrader auszuführen.
Dieses Projekt erfüllt das Soundness Pledge:
„Die Absicht dieses Projekts ist es, frei von Soliditätsfehlern zu sein. Die Entwickler werden ihr Bestes tun, um sie zu vermeiden, und freuen sich über Hilfe bei der Analyse und Behebung.“
Notiz
MSRV: NautilusTrader verlässt sich stark auf Verbesserungen der Rust-Sprache und des Rust-Compilers. Daher entspricht die minimal unterstützte Rust-Version (MSRV) im Allgemeinen der neuesten stabilen Version von Rust.
NautilusTrader ist modular für die Zusammenarbeit mit Adaptern konzipiert und ermöglicht die Konnektivität zu Handelsplätzen und Datenanbietern, indem deren Roh-APIs in eine einheitliche Schnittstelle umgewandelt werden.
Die folgenden Integrationen werden derzeit unterstützt:
Name | AUSWEIS | Typ | Status | Dokumente |
---|---|---|---|---|
Betfair | BETFAIR | Sportwettenbörse | Führung | |
Binance | BINANCE | Krypto-Börse (CEX) | Führung | |
Binance USA | BINANCE | Krypto-Börse (CEX) | Führung | |
Binance-Futures | BINANCE | Krypto-Börse (CEX) | Führung | |
Bybit | BYBIT | Krypto-Börse (CEX) | Führung | |
Databento | DATABENTO | Datenanbieter | Führung | |
dYdX | DYDX | Krypto-Austausch (DEX) | Führung | |
Interaktive Broker | INTERACTIVE_BROKERS | Vermittlung (mehrere Veranstaltungsorte) | Führung | |
OKX | OKX | Krypto-Börse (CEX) | Führung | |
Polymarket | POLYMARKET | Prognosemarkt (DEX) | Führung | |
Tardis | TARDIS | Datenanbieter | Führung |
building
: Im Bau und wahrscheinlich nicht in einem nutzbaren Zustand.beta
: In einem minimal funktionsfähigen Zustand fertiggestellt und in einer „Beta“-Testphase.stable
: Funktionsumfang und API stabilisiert. Die Integration wurde sowohl von Entwicklern als auch von Benutzern auf ein angemessenes Niveau getestet (einige Fehler können weiterhin bestehen bleiben).Weitere Einzelheiten finden Sie in der Dokumentation zu Integrationen.
Unser Ziel ist es, in allen Filialen einen stabilen, durchgängigen Aufbau aufrechtzuerhalten.
master
: Spiegelt den Quellcode für die neueste veröffentlichte Version wider.nightly
: Enthält experimentelle und laufende Funktionen, die täglich um 14:00 UTC und auch bei Bedarf aus dem develop
zusammengeführt werden.develop
: Der aktivste Zweig, der häufig mit neuen Commits aktualisiert wird, einschließlich experimenteller und in Arbeit befindlicher Funktionen. Notiz
Unsere Roadmap zielt darauf ab, eine stabile API für Version 2.x (wahrscheinlich nach der Rust-Portierung) zu erreichen. Sobald dieser Meilenstein erreicht ist, planen wir die Implementierung eines formellen Veröffentlichungsprozesses, einschließlich der Abkündigungsfristen für etwaige API-Änderungen. Dieser Ansatz ermöglicht es uns, vorerst ein hohes Entwicklungstempo beizubehalten.
NautilusTrader befindet sich noch in der aktiven Entwicklung. Einige Funktionen sind möglicherweise unvollständig und während die API stabiler wird, kann es zwischen den Versionen zu wichtigen Änderungen kommen. Wir sind bestrebt, diese Änderungen nach bestem Wissen und Gewissen in den Versionshinweisen zu dokumentieren.
Unser Ziel ist es, einen wöchentlichen Veröffentlichungsplan einzuhalten, allerdings kann es bei experimentellen oder größeren Funktionen zu Verzögerungen kommen.
Wir empfehlen, die neueste unterstützte Version von Python zu verwenden und nautilus_trader in einer virtuellen Umgebung einzurichten, um Abhängigkeiten zu isolieren
So installieren Sie das neueste Binärrad (oder SDIST-Paket) von PyPI mit dem Pip-Paketmanager von Python:
pip install -U nautilus_trader
Der Paketindex von Nautech Systems ( packages.nautechsystems.io
) ist PEP-503-kompatibel und hostet sowohl stabile als auch Entwicklungs-Binärräder für nautilus_trader
. Dadurch können Benutzer entweder die neueste stabile Version oder Vorabversionen zum Testen installieren.
Stabile Räder entsprechen den offiziellen Versionen von nautilus_trader
auf PyPI und verwenden die Standardversionierung.
So installieren Sie die neueste stabile Version:
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
Entwicklungsräder werden sowohl im develop
als auch nightly
Zweig für Linux und macOS veröffentlicht, sodass Benutzer Funktionen und Korrekturen vor stabilen Veröffentlichungen testen können.
Dieser Prozess hilft auch, Rechenressourcen zu schonen und gewährleistet einen einfachen Zugriff auf die genauen Binärdateien, die in CI-Pipelines getestet wurden, während gleichzeitig die PEP-440-Versionierungsstandards eingehalten werden:
develop
verwenden das Versionsformat dev{date}+{build_number}
(z. B. 1.208.0.dev20241212+7001
).nightly
Wheels verwenden das Versionsformat a{date}
(Alpha) (z. B. 1.208.0a20241212
). Warnung
Wir raten davon ab, Entwicklungsräder in Produktionsumgebungen zu verwenden, z. B. beim Live-Handel zur Kontrolle des realen Kapitals.
Standardmäßig installiert pip die neueste stabile Version. Durch das Hinzufügen des Flags --pre
wird sichergestellt, dass Vorabversionen, einschließlich Entwicklungsräder, berücksichtigt werden.
So installieren Sie die neueste verfügbare Vorabversion (einschließlich Entwicklungsräder):
pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple
So installieren Sie ein bestimmtes Entwicklungsrad (z. B. 1.208.0a20241212
für den 12. Dezember 2024):
pip install nautilus_trader==1.208.0a20241212 --index-url=https://packages.nautechsystems.io/simple
Sie können alle verfügbaren Versionen von nautilus_trader
im Paketindex anzeigen.
So rufen Sie verfügbare Versionen programmgesteuert ab und listen sie auf:
curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | grep -oP '(?<=<a href=")[^"]+(?=")' | awk -F'#' '{print $1}' | sort
develop
( .dev
): Werden kontinuierlich mit jedem zusammengeführten Commit erstellt und veröffentlicht.nightly
Zweigräder ( a
): Werden täglich erstellt und veröffentlicht, wenn develop
automatisch um 14:00 UTC zusammengeführt wird (sofern Änderungen vorliegen). develop
( .dev
): Nur der neueste Radaufbau wird beibehalten.nightly
Branch Wheels ( a
): Nur die 3 neuesten Wheelbuilds werden beibehalten. Für die Installation aus dem Quellcode ist die Headerdatei Python.h
erforderlich, die in Entwicklungsversionen wie python-dev
enthalten ist. Sie benötigen außerdem das neueste stabile rustc
und cargo
, um die Rust-Bibliotheken zu kompilieren.
Stellen Sie beim MacBook Pro M1/M2 sicher, dass Ihr mit pyenv installiertes Python mit --enable-shared
konfiguriert ist:
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <python_version>
Weitere Einzelheiten finden Sie im PyO3-Benutzerhandbuch.
Es ist möglich, mit pip aus der Quelle zu installieren, wenn Sie zuerst die Build-Abhängigkeiten installieren, wie in pyproject.toml
angegeben. Wir empfehlen dringend, die Poesie wie unten beschrieben zu installieren.
Installieren Sie rustup (das Rust-Toolchain-Installationsprogramm):
curl https://sh.rustup.rs -sSf | sh
rustup-init.exe
herunter und installieren Sie esrustc --version
cargo
in der aktuellen Shell aktivieren:
source $HOME /.cargo/env
Installieren Sie clang (ein C-Sprach-Frontend für LLVM):
sudo apt-get install clang
clang
in der aktuellen Shell aktivieren: [ System.Environment ]::SetEnvironmentVariable( ' path ' , " C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsLlvmx64bin; " + $ env: Path , " User " )
clang --version
Installieren Sie Poesie (oder folgen Sie der Installationsanleitung auf ihrer Website):
curl -sSL https://install.python-poetry.org | python3 -
Klonen Sie die Quelle mit git
und installieren Sie sie aus dem Stammverzeichnis des Projekts:
git clone https://github.com/nautechsystems/nautilus_trader
cd nautilus_trader
poetry install --only main --all-extras
Weitere Optionen und weitere Details finden Sie im Installationshandbuch.
Die Verwendung von Redis mit NautilusTrader ist optional und nur erforderlich, wenn es als Backend für eine Cache-Datenbank oder einen Nachrichtenbus konfiguriert ist. Weitere Einzelheiten finden Sie im Abschnitt „Redis“ des Installationshandbuchs.
Zur Automatisierung der meisten Installations- und Buildaufgaben für die Entwicklung wird ein Makefile
bereitgestellt. Es sieht folgende Ziele vor:
make install
: Installiert im release
Build-Modus mit main
, dev
und test
Abhängigkeiten und installiert dann das Paket mit Poetry (Standard).make install-debug
: Dasselbe wie make install
, jedoch mit debug
Build-Modus.make install-just-deps
: Installiert nur die main
, dev
und test
(installiert kein Paket).make build
: Führt das Build-Skript im release
Build-Modus aus (Standard).make build-debug
: Führt das Build-Skript im debug
Build-Modus aus.make build-wheel
: Führt den Poetry-Build mit einem Wheel-Format im release
-Modus aus.make build-wheel-debug
: Führt den Poetry-Build mit einem Wheel-Format im debug
Modus aus.make clean
: VORSICHT entfernt alle Nicht-Quellartefakte aus dem Repository.make docs
: Erstellt die HTML-Dokumentation mit Sphinx.make pre-commit
: Führt die Pre-Commit-Prüfungen für alle Dateien durch.make ruff
: Führt ruff über alle Dateien mit der pyproject.toml
-Konfiguration aus (mit Autofix).make pytest
: Führt alle Tests mit pytest
aus (außer Leistungstests).make pytest-coverage
: Identisch mit make pytest
, wird jedoch zusätzlich mit Testabdeckung ausgeführt und erstellt einen Bericht. Tipp
Das Ausführen make build-debug
zum Kompilieren nach Änderungen am Rust- oder Cython-Code ist derzeit der effizienteste Workflow beim Entwickeln.
Indikatoren und Strategien können sowohl in Python als auch in Cython entwickelt werden. Für leistungs- und latenzempfindliche Anwendungen empfehlen wir die Verwendung von Cython. Nachfolgend einige Beispiele:
BacktestEngine
. Docker-Container werden mit dem Basis-Image python:3.12-slim
mit den folgenden Varianten-Tags erstellt:
nautilus_trader:latest
hat die neueste Release-Version installiert.nautilus_trader:nightly
hat den Leiter des nightly
-Zweigs installiert.jupyterlab:latest
ist die neueste Release-Version zusammen mit jupyterlab
und einem Beispiel-Backtest-Notebook mit begleitenden Daten installiert.jupyterlab:nightly
hat den Leiter des nightly
-Zweigs zusammen mit jupyterlab
und einem Beispiel-Backtest-Notebook mit begleitenden Daten installiert.Die Containerbilder können wie folgt abgerufen werden:
docker pull ghcr.io/nautechsystems/<image_variant_tag> --platform linux/amd64
Sie können den Backtest-Beispielcontainer starten, indem Sie Folgendes ausführen:
docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly
Öffnen Sie dann Ihren Browser unter folgender Adresse:
http://127.0.0.1:8888/lab
Warnung
NautilusTrader überschreitet derzeit das Ratenlimit für die Jupyter-Notebook-Protokollierung (Standardausgabe). Daher ist log_level
in den Beispielen auf ERROR
gesetzt. Wenn Sie diese Stufe senken, um mehr Protokollierung zu sehen, bleibt das Notebook während der Zellenausführung hängen. Wir untersuchen eine Lösung, die entweder eine Anhebung der konfigurierten Ratenlimits für Jupyter oder eine Drosselung der Protokolllöschung von Nautilus umfassen könnte.
Unser Ziel ist es, für diese hybride Codebasis aus Python, Cython und Rust ein möglichst angenehmes Entwicklererlebnis zu bieten. Hilfreiche Informationen finden Sie im Entwicklerhandbuch.
cargo-nextest ist der Standard-Rust-Testläufer für NautilusTrader. Sie können es installieren, indem Sie Folgendes ausführen:
cargo install cargo-nextest
Tipp
Rosttests werden nur bestanden, wenn sie über cargo-nextest
ausgeführt werden.
Vielen Dank, dass Sie darüber nachdenken, einen Beitrag zu Nautilus Trader zu leisten! Wir freuen uns über jede Hilfe, die das Projekt verbessert. Wenn Sie eine Idee für eine Verbesserung oder eine Fehlerbehebung haben, besteht der erste Schritt darin, ein Problem auf GitHub zu öffnen, um es mit dem Team zu besprechen. Dies trägt dazu bei, dass Ihr Beitrag gut auf die Ziele des Projekts abgestimmt ist und Doppelarbeit vermieden wird.
Wenn Sie bereit sind, mit der Arbeit an Ihrem Beitrag zu beginnen, befolgen Sie unbedingt die Richtlinien in der Datei CONTRIBUTING.md. Dazu gehört die Unterzeichnung eines Contributor License Agreement (CLA), um sicherzustellen, dass Ihre Beiträge in das Projekt einbezogen werden können.
Beachten Sie, dass alle Pull-Anfragen an den develop
gestellt werden sollten. Hier werden neue Funktionen und Verbesserungen vor der Veröffentlichung integriert.
Nochmals vielen Dank für Ihr Interesse an Nautilus Trader! Wir freuen uns darauf, Ihre Beiträge zu prüfen und gemeinsam mit Ihnen an der Verbesserung des Projekts zu arbeiten.
Treten Sie unserer Community aus Benutzern und Mitwirkenden auf Discord bei, um zu chatten und über die neuesten Ankündigungen und Funktionen von NautilusTrader auf dem Laufenden zu bleiben. Ganz gleich, ob Sie als Entwickler einen Beitrag leisten möchten oder einfach nur mehr über die Plattform erfahren möchten, auf unserem Server sind alle willkommen.
Der Quellcode für NautilusTrader ist auf GitHub unter der GNU Lesser General Public License v3.0 verfügbar. Beiträge zum Projekt sind willkommen und erfordern den Abschluss einer Standard-Lizenzvereinbarung für Mitwirkende (CLA).
NautilusTrader wird von Nautech Systems entwickelt und gepflegt, einem Technologieunternehmen, das sich auf die Entwicklung leistungsstarker Handelssysteme spezialisiert hat. Obwohl das Projekt die Programmiersprache Rust nutzt und von ihrem Ökosystem profitiert, ist Nautech Systems nicht mit der Rust Foundation verbunden und dieses Projekt ist kein offizielles Werk der Rust Foundation. Weitere Informationen finden Sie unter https://nautilustrader.io.
Copyright (C) 2015-2025 Nautech Systems Pty Ltd. Alle Rechte vorbehalten.