支店 | バージョン | 状態 |
---|---|---|
master | ||
nightly | ||
develop |
プラットフォーム | さび | パイソン |
---|---|---|
Linux (x86_64) | 1.83.0+ | 3.11+ |
macOS (arm64) | 1.83.0+ | 3.11+ |
Windows (x86_64) | 1.83.0+ | 3.11+ |
NautilusTrader は、オープンソース、高性能、プロダクショングレードのアルゴリズム取引プラットフォームであり、クオンツトレーダーに、イベント駆動型エンジンを使用して履歴データに基づいて自動取引戦略のポートフォリオをバックテストする機能を提供し、同じ戦略をライブで展開することもできます。コードの変更はありません。
このプラットフォームは「AI ファースト」であり、高性能で堅牢な Python ネイティブ環境内でアルゴリズム取引戦略を開発および展開するように設計されています。これは、Python 研究/バックテスト環境を本番のライブ取引環境と一貫性を保つという同等の課題に対処するのに役立ちます。
NautilusTraders の設計、アーキテクチャ、および実装の哲学は、Python ネイティブでミッションクリティカルなトレーディング システムのバックテストとライブ デプロイメントのワークロードをサポートすることを目的として、ソフトウェアの正確性と安全性を最高レベルに保ちます。
また、プラットフォームはユニバーサルであり、アセット クラスに依存せず、モジュラー アダプターを介して任意の REST、WebSocket、または FIX API を統合できます。したがって、FX、株式、先物、オプション、CFD、仮想通貨、賭博を含むあらゆる資産クラスの高頻度取引操作を複数の会場で同時に処理できます。
IOC
、 FOK
、 GTD
、 AT_THE_OPEN
、 AT_THE_CLOSE
、高度な注文タイプおよび条件付きトリガー。実行命令post-only
、 reduce-only
、および Icebergs。 OCO
、 OTO
を含む緊急事態指示リスト。ノーチラス - 古代ギリシャ語の「船乗り」と「船」の naus から。
オウムガイの殻は、対数螺旋に近い成長因子を備えたモジュール式の部屋で構成されています。これはデザインと建築の美学に置き換えることができるという考えです。
従来、取引戦略の調査とバックテストは、ベクトル化されたメソッドを使用して Python (またはその他の適切な言語) で実行されますが、その後、C++、C#、Java、またはその他の静的に型付けされた言語を使用して、よりイベント駆動型の方法で戦略を再実装する必要があります。 )。ここでの理由は、ベクトル化されたバックテスト コードでは、リアルタイム取引の詳細な時間とイベント依存の複雑さを表現できないためです。コンパイル言語は、本質的にパフォーマンスが高く、型安全性が高いため、より適していることが証明されています。
ここでの NautilusTrader の重要な利点の 1 つは、プラットフォームの重要なコア コンポーネントがすべて Rust または Cython で完全に記述されているため、この再実装の手順が回避されることです。これは、システム プログラミング言語がパフォーマンスの高いバイナリをコンパイルし、CPython C 拡張モジュールを使用して、プロの定量トレーダーや貿易会社に適した Python ネイティブ環境を提供できる、仕事に適したツールを使用していることを意味します。
Python はもともと、クリーンで単純な構文を備えたシンプルなスクリプト言語として数十年前に作成されました。それ以来、本格的な汎用オブジェクト指向プログラミング言語に進化しました。 TIOBE インデックスに基づくと、Python は現在世界で最も人気のあるプログラミング言語です。それだけでなく、Python はデータ サイエンス、機械学習、人工知能の事実上の共通語となっています。
ただし、特にパフォーマンスが重視される大規模なシステムを実装する場合、この言語には欠点がないわけではありません。 Cython はこれらの問題の多くに対処し、静的型付け言語のすべての利点を提供し、ソフトウェア ライブラリと開発者/ユーザー コミュニティの Python の豊富なエコシステムに埋め込まれています。
Rust は、パフォーマンスと安全性、特に安全な同時実行性を目的に設計されたマルチパラダイム プログラミング言語です。 Rust は非常に高速でメモリ効率が高く (C および C++ と同等)、ガベージ コレクターがありません。ミッションクリティカルなシステムに電力を供給し、組み込みデバイス上で実行でき、他の言語と簡単に統合できます。
Rust の豊富な型システムと所有権モデルは、メモリの安全性とスレッドの安全性を決定論的に保証し、コンパイル時に多くのクラスのバグを排除します。
このプロジェクトでは、パフォーマンスが重要なコアコンポーネントに Rust の利用が増えています。 Python 言語バインディングは Cython と PyO3 を通じて処理され、ホイール バイナリがパッケージ化される前のコンパイル時に静的ライブラリがリンクされるため、ユーザーは NautilusTrader を実行するために Rust をインストールする必要はありません。
このプロジェクトでは、健全性の誓約を行います。
「このプロジェクトの目的は、健全性に関するバグを排除することです。開発者はそれらを回避するために最善を尽くし、分析と修正への支援を歓迎します。」
注記
MSRV: NautilusTrader は Rust 言語とコンパイラの改良に大きく依存しています。結果として、サポートされる Rust の最小バージョン (MSRV) は通常、Rust の最新の安定リリースと同じになります。
NautilusTrader は、アダプターと連携するようにモジュール式に設計されており、生の API を統合インターフェースに変換することで、取引会場やデータプロバイダーへの接続を可能にします。
現在、次の統合がサポートされています。
名前 | ID | タイプ | 状態 | ドキュメント |
---|---|---|---|---|
ベットフェア | BETFAIR | スポーツ賭博取引所 | ガイド | |
バイナンス | BINANCE | 暗号通貨取引所 (CEX) | ガイド | |
バイナンスUS | BINANCE | 暗号通貨取引所 (CEX) | ガイド | |
バイナンス先物 | BINANCE | 暗号通貨取引所 (CEX) | ガイド | |
バイビット | BYBIT | 暗号通貨取引所 (CEX) | ガイド | |
データベント | DATABENTO | データプロバイダー | ガイド | |
dYdX | DYDX | 暗号通貨取引所 (DEX) | ガイド | |
インタラクティブ・ブローカー | INTERACTIVE_BROKERS | 仲介(複数会場) | ガイド | |
OKX | OKX | 暗号通貨取引所 (CEX) | ガイド | |
ポリマーケット | POLYMARKET | 予測市場 (DEX) | ガイド | |
ターディス | TARDIS | データプロバイダー | ガイド |
building
: 建設中であり、使用可能な状態ではない可能性があります。beta
: 最小限の動作状態まで完了し、「ベータ」テスト段階に入っています。stable
: 安定化された機能セットと API。統合は開発者とユーザーの両方によって妥当なレベルまでテストされています (いくつかのバグがまだ残っている可能性があります)。詳細については、統合のドキュメントを参照してください。
私たちは、すべてのブランチにわたって安定した合格ビルドを維持することを目指しています。
master
: 最新リリースバージョンのソースコードを反映します。nightly
: 毎日14:00 UTCと必要に応じてdevelop
ブランチからマージされる、実験的機能と進行中の機能が含まれます。develop
: 最もアクティブなブランチ。実験的機能や進行中の機能など、新しいコミットで頻繁に更新されます。 注記
私たちのロードマップは、バージョン 2.x の安定した API を実現することを目指しています (おそらく Rust 移植後)。このマイルストーンに到達したら、API 変更の非推奨期間を含む正式なリリース プロセスを実装する予定です。このアプローチにより、現時点では速い開発ペースを維持することができます。
NautilusTrader はまだ活発に開発中です。一部の機能は不完全である可能性があり、API はより安定しつつありますが、リリース間で重大な変更が発生する可能性があります。私たちは、ベスト エフォート ベースでこれらの変更をリリース ノートに文書化するよう努めています。
毎週のリリース スケジュールに従うことを目指していますが、実験的な機能や大規模な機能では遅れが生じる可能性があります。
サポートされている最新バージョンの Python を使用し、仮想環境で nautilus_trader をセットアップして依存関係を分離することをお勧めします。
Python の pip パッケージ マネージャーを使用して PyPI から最新のバイナリ ホイール (または sdist パッケージ) をインストールするには:
pip install -U nautilus_trader
Nautech Systems パッケージ インデックス ( packages.nautechsystems.io
) は PEP-503 に準拠しており、 nautilus_trader
の安定バイナリ ホイールと開発バイナリ ホイールの両方をホストします。これにより、ユーザーはテストのために最新の安定リリースまたはプレリリース バージョンのいずれかをインストールできるようになります。
安定したホイールは、PyPI 上のnautilus_trader
の公式リリースに対応し、標準のバージョン管理を使用します。
最新の安定リリースをインストールするには:
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
開発ホイールは、Linux および macOS のdevelop
ブランチとnightly
ブランチの両方から公開されており、ユーザーは安定版リリースに先立って機能や修正をテストできます。
このプロセスは、コンピューティング リソースの保存にも役立ち、PEP-440 バージョン管理標準に準拠しながら、CI パイプラインでテストされた正確なバイナリに簡単にアクセスできるようになります。
develop
ホイールはバージョン形式dev{date}+{build_number}
(例: 1.208.0.dev20241212+7001
) を使用します。nightly
Wheel は、バージョン形式a{date}
(アルファ) (例: 1.208.0a20241212
) を使用します。 警告
実際の資本を制御するライブ取引など、実稼働環境で開発ホイールを使用することはお勧めしません。
デフォルトでは、pip は最新の安定リリースをインストールします。 --pre
フラグを追加すると、開発ホイールを含むプレリリース バージョンが確実に考慮されます。
利用可能な最新のプレリリース (開発ホイールを含む) をインストールするには:
pip install -U nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple
特定の開発ホイール (例: 2024 年 12 月 12 日の1.208.0a20241212
) をインストールするには:
pip install nautilus_trader==1.208.0a20241212 --index-url=https://packages.nautechsystems.io/simple
nautilus_trader
の利用可能なすべてのバージョンは、パッケージ インデックスで確認できます。
利用可能なバージョンをプログラムで取得してリストするには:
curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | grep -oP '(?<=<a href=")[^"]+(?=")' | awk -F'#' '{print $1}' | sort
develop
ブランチ ホイール ( .dev
): マージされたコミットごとに継続的にビルドおよび公開されます。nightly
ブランチ ホイール ( a
): develop
ブランチがUTC 14:00に自動的にマージされるときに毎日ビルドおよび公開されます (変更がある場合)。 develop
ブランチ ホイール ( .dev
): 最新のホイール ビルドのみが保持されます。nightly
分岐ホイール ( a
): 3 つの最新のホイール ビルドのみが保持されます。ソースからのインストールには、 Python.h
ヘッダー ファイルが必要です。このヘッダー ファイルは、 python-dev
などの開発リリースに含まれています。 Rustライブラリをコンパイルするには、最新の安定したrustc
とcargo
も必要です。
MacBook Pro M1/M2 の場合、 pyenv を使用してインストールされた Python が--enable-shared
で構成されていることを確認してください。
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <python_version>
詳細については、PyO3 ユーザー ガイドを参照してください。
pyproject.toml
で指定されているようにビルドの依存関係を最初にインストールする場合は、pip を使用してソースからインストールすることができます。以下のように詩を使用してインストールすることを強くお勧めします。
Rustup (Rust ツールチェーン インストーラー) をインストールします。
curl https://sh.rustup.rs -sSf | sh
rustup-init.exe
ダウンロードしてインストールしますrustc --version
現在のシェルでcargo
有効にします。
source $HOME /.cargo/env
Clang (LLVM の C 言語フロントエンド) をインストールします。
sudo apt-get install clang
clang
有効にします。 [ System.Environment ]::SetEnvironmentVariable( ' path ' , " C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCToolsLlvmx64bin; " + $ env: Path , " User " )
clang --version
詩をインストールします (または、サイトのインストール ガイドに従います)。
curl -sSL https://install.python-poetry.org | python3 -
git
を使用してソースのクローンを作成し、プロジェクトのルート ディレクトリからインストールします。
git clone https://github.com/nautechsystems/nautilus_trader
cd nautilus_trader
poetry install --only main --all-extras
他のオプションと詳細については、『インストール ガイド』を参照してください。
NautilusTrader での Redis の使用はオプションであり、キャッシュ データベースまたはメッセージ バスのバックエンドとして構成されている場合にのみ必要です。詳細については、インストール ガイドの「Redis」セクションを参照してください。
Makefile
は、ほとんどのインストールおよび開発タスクを自動化するために提供されています。次のターゲットが提供されます。
make install
: main
、 dev
、およびtest
依存関係を使用してrelease
ビルド モードでインストールし、次に詩 (デフォルト) を使用してパッケージをインストールします。make install-debug
: make install
と同じですが、 debug
ビルド モードを使用します。make install-just-deps
: main
、 dev
、 test
依存関係のみをインストールします (パッケージはインストールしません)。make build
: release
ビルド モード (デフォルト) でビルド スクリプトを実行します。make build-debug
: debug
ビルド モードでビルド スクリプトを実行します。make build-wheel
: release
モードでホイール形式で Poetry ビルドを実行します。make build-wheel-debug
: debug
モードでホイール形式で Poetry ビルドを実行します。make clean
:注意:ソース以外のアーティファクトはすべてリポジトリから削除されます。make docs
: Sphinx を使用してドキュメント HTML を構築します。make pre-commit
: すべてのファイルに対してコミット前チェックを実行します。make ruff
: pyproject.toml
構成 (自動修正付き) を使用して、すべてのファイルに対して ruff を実行します。make pytest
: pytest
を使用してすべてのテストを実行します (パフォーマンス テストを除く)。make pytest-coverage
: make pytest
と同じですが、さらにテスト カバレッジを使用して実行し、レポートを生成します。 ヒント
Rust または Cython コードを変更した後にmake build-debug
実行してコンパイルするのが、現在、開発時に最も効率的なワークフローです。
インジケーターとストラテジーは、Python と Cython の両方で開発できます。パフォーマンスと遅延に敏感なアプリケーションの場合は、Cython の使用をお勧めします。以下にいくつかの例を示します。
BacktestEngine
直接使用したバックテストの例。 Docker コンテナは、次のバリアント タグを持つベース イメージpython:3.12-slim
を使用して構築されます。
nautilus_trader:latest
は最新のリリース バージョンがインストールされています。nautilus_trader:nightly
nightly
ブランチのヘッドがインストールされています。jupyterlab:latest
jupyterlab
および付随データを含むサンプル バックテスト ノートブックとともにインストールされた最新リリース バージョンが含まれています。jupyterlab:nightly
jupyterlab
とともにインストールされたnightly
ブランチのヘッドと、付随するデータを含むバックテスト ノートブックの例が含まれています。コンテナー イメージは次のようにプルできます。
docker pull ghcr.io/nautechsystems/<image_variant_tag> --platform linux/amd64
以下を実行して、バックテストのサンプル コンテナーを起動できます。
docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64
docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly
次に、次のアドレスでブラウザを開きます。
http://127.0.0.1:8888/lab
警告
NautilusTrader は現在、Jupyter ノートブックのログ記録 (stdout 出力) のレート制限を超えています。その結果、例のlog_level
はERROR
に設定されます。このレベルを下げてより多くのログを表示すると、セルの実行中にノートブックがハングする原因になります。私たちは修正を調査中です。これには、Jupyter の設定されたレート制限を引き上げるか、Nautilus からのログのフラッシュを抑制することが含まれる可能性があります。
私たちは、Python、Cython、Rust のこのハイブリッド コードベースで可能な限り最も快適な開発者エクスペリエンスを提供することを目指しています。役立つ情報については、開発者ガイドを参照してください。
Cargo-nextest は、NautilusTrader の標準 Rust テスト ランナーです。以下を実行してインストールできます。
cargo install cargo-nextest
ヒント
Rust テストはcargo-nextest
経由で実行した場合にのみ合格します。
Nautilus Trader への貢献をご検討いただきありがとうございます。プロジェクトを改善するためにあらゆるご協力をお待ちしております。機能強化やバグ修正のアイデアがある場合、最初のステップは、GitHub で問題を開き、チームと話し合うことです。これは、あなたの貢献がプロジェクトの目標と適切に一致していることを確認し、労力の重複を避けるのに役立ちます。
投稿の作業を開始する準備ができたら、CONTRIBUTING.md ファイルに概説されているガイドラインに従ってください。これには、あなたの貢献がプロジェクトに確実に含まれるようにするための、貢献者ライセンス契約 (CLA) への署名が含まれます。
すべてのプル リクエストはdevelop
ブランチに対して行う必要があることに注意してください。ここには、リリース前に新機能と改善点が統合されます。
Nautilus Trader にご興味をお持ちいただきまして、誠にありがとうございます。皆様の貢献を検討し、プロジェクトの改善に協力できることを楽しみにしています。
Discord のユーザーや投稿者のコミュニティに参加してチャットし、NautilusTrader の最新のお知らせや機能について最新情報を入手してください。貢献したいと考えている開発者であっても、単にプラットフォームについて詳しく知りたいだけであっても、私たちのサーバーでは誰でも歓迎されます。
NautilusTrader のソース コードは、GNU Lesser General Public License v3.0 に基づいて GitHub で入手できます。プロジェクトへの貢献は歓迎されており、標準の貢献者ライセンス契約 (CLA) を完了する必要があります。
NautilusTrader は、高性能取引システムの開発を専門とするテクノロジー企業である Nautech Systems によって開発および保守されています。このプロジェクトは Rust プログラミング言語を利用しており、そのエコシステムの恩恵を受けていますが、Nautech Systems は Rust Foundation と提携しておらず、このプロジェクトは Rust Foundation の公式作品ではありません。詳細については、https://nautilustrader.io をご覧ください。
著作権 (C) 2015-2025 Nautech Systems Pty Ltd. 無断複写・転載を禁じます。