나뭇가지 | 버전 | 상태 |
---|---|---|
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는 오픈 소스, 고성능, 프로덕션 등급 알고리즘 거래 플랫폼으로, 정량 거래자에게 이벤트 중심 엔진을 사용하여 기록 데이터에 대한 자동화된 거래 전략 포트폴리오를 백테스트하고 동일한 전략을 실시간으로 배포할 수 있는 기능을 제공합니다. 코드 변경이 없습니다.
이 플랫폼은 성능이 뛰어나고 강력한 Python 기본 환경 내에서 알고리즘 거래 전략을 개발하고 배포하도록 설계된 'AI 우선' 플랫폼입니다. 이는 Python 연구/백테스트 환경을 프로덕션 라이브 거래 환경과 일관되게 유지해야 하는 패리티 문제를 해결하는 데 도움이 됩니다.
NautilusTraders의 설계, 아키텍처 및 구현 철학은 Python 기본, 미션 크리티컬, 거래 시스템 백테스팅 및 실시간 배포 워크로드 지원을 목표로 최고 수준의 소프트웨어 정확성과 안전성을 유지합니다.
또한 이 플랫폼은 범용적이고 자산 클래스에 구애받지 않습니다. 모든 REST, WebSocket 또는 FIX API를 모듈형 어댑터를 통해 통합할 수 있습니다. 따라서 FX, 주식, 선물, 옵션, CFD, 암호화폐 및 베팅을 포함한 모든 자산 클래스에 대한 고주파 거래 작업을 여러 장소에서 동시에 처리할 수 있습니다.
IOC
, FOK
, GTD
, AT_THE_OPEN
, AT_THE_CLOSE
, 고급 주문 유형 및 조건부 트리거가 적용되는 시간입니다. 실행 지침은 post-only
, reduce-only
및 빙산입니다. OCO
, OTO
포함한 비상 주문 목록.노틸러스(nautilus) - 고대 그리스 '선원'과 나우스 '배'에서 유래.
노틸러스 껍질은 대수 나선에 가까운 성장 인자를 갖는 모듈형 챔버로 구성됩니다. 이것이 디자인과 건축의 미학으로 해석될 수 있다는 생각입니다.
전통적으로 거래 전략 연구 및 백테스팅은 벡터화된 방법을 사용하여 Python(또는 기타 적합한 언어)에서 수행될 수 있으며, C++, C#, Java 또는 기타 정적으로 유형이 지정된 언어를 사용하여 보다 이벤트 기반 방식으로 전략을 다시 구현해야 합니다. ). 여기서의 추론은 벡터화된 백테스팅 코드가 실시간 거래의 세부적인 시간 및 이벤트 종속 복잡성을 표현할 수 없다는 것입니다. 여기서 컴파일된 언어는 본질적으로 더 높은 성능과 유형 안전성으로 인해 더 적합한 것으로 입증되었습니다.
여기서 NautilusTrader의 주요 장점 중 하나는 플랫폼의 중요한 핵심 구성 요소가 모두 Rust 또는 Cython으로 완전히 작성되었기 때문에 이제 이 재구현 단계를 우회한다는 것입니다. 이는 시스템 프로그래밍 언어가 CPython C 확장 모듈을 사용하여 성능 바이너리를 컴파일한 다음 전문 정량 거래자 및 거래 회사에 적합한 Python 기본 환경을 제공할 수 있는 작업에 적합한 도구를 사용하고 있음을 의미합니다.
Python은 원래 수십 년 전에 깨끗하고 간단한 구문을 갖춘 간단한 스크립팅 언어로 만들어졌습니다. 이후 완전한 기능을 갖춘 범용 객체 지향 프로그래밍 언어로 발전했습니다. TIOBE 지수에 따르면 Python은 현재 전 세계에서 가장 인기 있는 프로그래밍 언어입니다. 뿐만 아니라 Python은 데이터 과학, 기계 학습 및 인공 지능의 사실상 공용어가 되었습니다.
그러나 기본 제공 언어에는 단점이 없는 것은 아닙니다. 특히 성능이 중요한 대규모 시스템을 구현하는 맥락에서는 더욱 그렇습니다. Cython은 이러한 많은 문제를 해결하여 Python의 풍부한 소프트웨어 라이브러리 생태계와 개발자/사용자 커뮤니티에 내장된 정적 유형 언어의 모든 장점을 제공했습니다.
Rust는 성능과 안전, 특히 안전한 동시성을 위해 설계된 다중 패러다임 프로그래밍 언어입니다. Rust는 가비지 수집기가 없어 엄청나게 빠르고 메모리 효율적입니다(C 및 C++와 비교). 이는 미션 크리티컬 시스템에 전원을 공급하고, 임베디드 장치에서 실행되며, 다른 언어와 쉽게 통합될 수 있습니다.
Rust의 풍부한 유형 시스템과 소유권 모델은 메모리 안전성과 스레드 안전성을 결정론적으로 보장하여 컴파일 타임에 많은 종류의 버그를 제거합니다.
이 프로젝트에서는 성능이 중요한 핵심 구성 요소에 Rust를 점점 더 많이 활용하고 있습니다. Python 언어 바인딩은 Cython 및 PyO3를 통해 처리되며 휠 바이너리가 패키징되기 전 컴파일 타임에 정적 라이브러리가 연결되므로 사용자는 NautilusTrader를 실행하기 위해 Rust를 설치할 필요가 없습니다.
이 프로젝트는 Soundness Pledge를 만듭니다.
“이 프로젝트의 목적은 건전성 버그가 없는 것입니다. 개발자들은 이를 방지하기 위해 최선을 다할 것이며, 이를 분석하고 수정하는 데 도움을 환영합니다.”
메모
MSRV: NautilusTrader는 Rust 언어 및 컴파일러의 개선에 크게 의존합니다. 결과적으로 최소 지원 Rust 버전(MSRV)은 일반적으로 Rust의 최신 안정 릴리스와 동일합니다.
NautilusTrader는 어댑터 와 함께 작동하도록 모듈식으로 설계되어 원시 API를 통합 인터페이스로 변환하여 거래 장소 및 데이터 공급자에 연결할 수 있습니다.
현재 다음 통합이 지원됩니다.
이름 | ID | 유형 | 상태 | 문서 |
---|---|---|---|---|
베트페어 | BETFAIR | 스포츠 베팅 교환 | 가이드 | |
바이낸스 | BINANCE | 암호화폐 거래소(CEX) | 가이드 | |
바이낸스 미국 | 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(아마 Rust 포트 이후)에 대한 안정적인 API를 달성하는 것을 목표로 합니다. 이 마일스톤에 도달하면 API 변경 사항에 대한 지원 중단 기간을 포함하여 공식적인 릴리스 프로세스를 구현할 계획입니다. 이러한 접근 방식을 통해 우리는 현재 빠른 개발 속도를 유지할 수 있습니다.
NautilusTrader는 아직 활발하게 개발 중입니다. 일부 기능은 불완전할 수 있으며, API가 더욱 안정되는 동안 릴리스 간에 주요 변경 사항이 발생할 수 있습니다. 우리는 최선의 노력을 다해 릴리스 노트에 이러한 변경 사항을 문서화하기 위해 노력하고 있습니다.
우리는 매주 출시 일정을 따르는 것을 목표로 하고 있지만 실험적이거나 더 큰 기능으로 인해 지연이 발생할 수 있습니다.
지원되는 최신 버전의 Python을 사용하고 가상 환경에서 nautilus_trader를 설정하여 종속성을 격리하는 것이 좋습니다.
Pythons 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-dev
와 같은 개발 릴리스에 포함된 Python.h
헤더 파일이 필요합니다. 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
빌드 모드로 설치한 다음 poem(기본값)을 사용하여 패키지를 설치합니다.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
: CAUTION은 저장소에서 소스가 아닌 모든 아티팩트를 제거합니다.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(Contributor License Agreement)에 서명하는 것이 포함됩니다.
모든 풀 요청은 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. 모든 권리 보유.