NautilusTrader는 오픈소스·프로덕션 등급의 Rust-native 다중 자산·다중 거래소 트레이딩 엔진이다. 연구(백테스트)·결정적 시뮬레이션·라이브 실행을 하나의 이벤트 기반 아키텍처로 묶고, 전략 로직·설정·오케스트레이션은 Python(PyO3 바인딩)이 컨트롤 플레인으로 담당한다. 2026-08-18 KST 기준 GitHub REST 메타데이터·고정 커밋 README·아키텍처 문서·릴리스 API를 조사해 기록한다.

한눈에 보기

  • 프로젝트 성격: 거래소 연결 라이브러리·백테스트 프레임워크·라이브 실행까지 아우르는 “생산용” 트레이딩 스택. 동일한 결정적 시간 모델로 research-to-live에 코드 변경 없이 배포를 지향한다.
  • 고정 기준: develop HEAD 860561f40c2a78d78752cf02c8582a4c4f2ede5a (Require OKX option instrument family, 2026-08-18T13:12:59Z). 기본 브랜치는 develop.
  • 소유/라이선스: Nautech Systems Pty Ltd (© 2015-2026) · LGPL-3.0 · CLA 필요.
  • 규모 (2026-08-18 스냅샷): stars 26,209 / forks 3,396 / open issues 102 / 20,700+ commits. 저장소 생성 2018-06-25. PyPI nautilus_trader.
  • 버전 상태: master = v1.231.0 (Release 1.231.0 Beta, 2026-08-02, 최근 안정 릴리스) · develop = v2.0.0rc3 (Rust-native v2 릴리스 후보 전환 중). Cargo workspace version = "0.62.0", MSRV Rust 1.97.1.
  • 검증 상태: 설치·백테스트 실행·라이브 연결·벤치마크는 수행하지 않았다. README/문서 주장과 저장소 소스 구조는 분리해 기록한다.

핵심 설계

  • Rust-native 코어 + Python 컨트롤 플레인: 컴파일 언어의 성능/안전과 Python의 유연성을 결합. PyO3 바인딩으로 v2 런타임을 노출하며, 미션 크리티컬 워크로드는 순수 Rust로도 작성 가능.
  • 결정적 이벤트 기반 아키텍처: 백테스트·샌드박스·라이브가 같은 실행 의미론(semantics)과 시간 모델을 공유 → research-to-live parity. 전략 코드를 재구현 없이 연구→프로덕션 배포.
  • 어셋 클래스 무관(asset-class-agnostic): REST API/WebSocket 피드가 있는 어떤 베뉴든 modular adapter로 통합. CEX/DEX 크립토·FX·주식·선물·옵션·베팅 거래소·예측시장 커버.
  • 정밀도 모드 2종: Price/Quantity/Money에 대해 High-precision(128-bit 정수, 소수점 16자리)과 Standard-precision(64-bit, 소수점 9자리). Python 공식 휠은 기본 high-precision, 순수 Rust crate는 기본 standard(high-precision feature flag).
  • 어드밴스드 오더 타입: TIF IOC/FOK/GTC/GTD/DAY/AT_THE_OPEN/AT_THE_CLOSE, 실행 지시 post-only/reduce-only/iceberg, 컨틴전시 오더 OCO/OUO/OTO.

아키텍처

NautilusKernel 코어 컴포넌트

공통 코어는 nautilus-system crate의 NautilusKernel이 소유한다 (백테스트/샌드박스/라이브 공유).

컴포넌트역할
MessageBus컴포넌트 간 통신 라우팅 — pub/sub · request/response · command/event messaging. Redis 외부 백킹 옵션
Cache인메모리 트레이딩 상태(인스트루먼트·계좌·오더·포지션) + 선택적 DB 백킹(recovery)
DataEngine퀀트·트레이드·바·오더북·커스텀 데이터 처리, 구독/요청 흐름, 소비자 라우팅
ExecutionEngine오더 라이프사이클·실행 라우팅·fill·거래소 실행 상태 reconciliation
RiskEngine사전 트레이드 검증(주문 필드·잔고·수량·notional·reduce-only·거래 상태), rate limit
Portfolio계좌·포지션 상태 파생 — 잔고·마진·실현/미실현 PnL·익스포저
Traderactor·strategy·execution algorithm 등록, 라이프사이클·클록·구독 관리

환경 컨텍스트 3종

  • Backtest: 과거 데이터 + 시뮬레이션 execution
  • Sandbox: 실시간 데이터 + 시뮬레이션 execution
  • Live: 실시간 데이터 + 실거래소 연결 (paper/실계좌)

데이터 플로우 (QuoteTick 경로)

Adapter(API 파싱 → QuoteTick) → MPSC 채널 → DataEngine::process_datahandle_quoteCache.add_quoteMessageBus.publish_quote(토픽, e.g. data.quotes.BINANCE.BTCUSDT-PERP) → 구독 전략 on_quote(). 전략 핸들러는 **싱글스레드 코어**에서 실행된다. 오더북 델타/스냅샷은 캐시 우선이 아니라 직접 발행되고 BookUpdater`가 별도로 북 상태를 유지한다.

실행 플로우 (Order 경로)

전략 submit_order(command)RiskEngine 사전 트레이드 검사 → ExecutionEngine 라우팅 → ExecutionClient → Venue(REST/WS) → OrderAccepted/OrderFilled 이벤트 → MessageBus → 전략 on_order_accepted() 등.

Rust crate 구조 (23 crate)

core, model, system, data, execution, risk, portfolio, backtest, live, adapters, indicators, analysis, persistence, event_store, serialization, network, cryptography, plugin, cli, pyo3, common, testkit, infrastructure.

  • 포트·어댑터(hexagonal) + DDD + 이벤트 드리븐 + 메시징 패턴을 설계 기법으로 사용.
  • Crash-only design: 릴리즈 프로파일이 panic = "abort". 복구 불가 결함 시 외부 슈퍼바이저가 재시작. 정상 운영은 stop/dispose graceful shutdown 유지.
  • Fail-fast 정책: 타임스탬프·가격·수량의 산술 오버플로, 역직렬화 시 NaN/무한대/범위 밖 값, 음수 값 변환 등은 에러/패닉. “잘못된 가격 하나가 포지션 사이징·주문 가격·백테스트 결과·자금 손실로 전파”됨을 막는다.
  • Assurance-driven engineering: 핵심 도메인 타입·리스크/실행 흐름의 불변식을 단위 테스트·프로퍼티 테스트·퍼저·static assertion으로 CI에서 실행.

통합 — 어댑터 17종 (2026-08-18, 전부 “stable” 상태)

ID타입베뉴
AXPerpetuals ExchangeArchitect / architect.exchange
BETFAIRSports Betting ExchangeBetfair
BINANCECrypto Exchange (CEX)Binance
BITMEXCrypto Exchange (CEX)BitMEX
BYBITCrypto Exchange (CEX)Bybit
COINBASECrypto Exchange (CEX)Coinbase
DATABENTOData ProviderDatabento
DERIBITCrypto Exchange (CEX)Deribit
DERIVECrypto Exchange (DEX)Derive
DYDXCrypto Exchange (DEX)dYdX
HYPERLIQUIDCrypto Exchange (DEX)Hyperliquid
INTERACTIVE_BROKERSBrokerage (multi-venue)Interactive Brokers
KRAKENCrypto Exchange (CEX)Kraken
LIGHTERCrypto Exchange (DEX)Lighter
OKXCrypto Exchange (CEX)OKX
POLYMARKETPrediction Market (DEX)Polymarket
TARDISCrypto Data ProviderTardis

버전·릴리스·스코프

  • 시장 주기: 대략 격주(bi-weekly) 릴리스. 릴리스 노트는 best-effort. NautilusTrader는 아직 active development — breaking change 가능(특히 v2 전환 중).
  • 브랜치: master(최신 릴리스 소스, 프로덕션 권장) · nightly(develop 일일 스냅샷, 14:00 UTC 머지) · develop(개발 브랜치, 기본). PR은 develop 대상. v1은 develop_v1 브랜치에서 critical 보안 백포트만.
  • v2: Rust-native v2 런타임으로 전환 중. 2.0.0rcN 휠은 pip install -U nautilus_trader --pre로 테스트 가능(프로덕션 비권장).
  • MSRV: “일반적으로 최신 stable Rust” (현재 1.97.1). Soundness Pledge 준수.
  • 오픈소스 스코프: 단일 노드 백테스팅 + 개인/소규모 팀 퀀트를 위한 라이브 트레이딩에 초점. 범위 밖(Out of scope): UI 대시보드, 분산 오케스트레이션, 내장 AI/ML 툴링.

보안

  • 총체적 supply chain 통제: CODEOWNERS 게이트, 서명 커밋/불변 릴리스 태그, lockfile checksum pin, wheel만 설치, cargo-vet, LGPL-3.0-or-later 라이선스 검사.
  • 스캐닝/퍼징: Gitleaks·Zizmor(pre-commit), CodeQL(PR), cargo-audit·cargo-deny·OSV Scanner·pip-audit, cargo-fuzz(어댑터·서명 표면), OpenSSF Scorecard 배지.
  • 빌드/배포 무결성: GitHub Actions 커밋 SHA 핀, SLSA build provenance, Sigstore 서명 컨테이너 이미지 + SPDX SBOM, PyPI/crates.io OIDC Trusted Publishing(release 환경).
  • 런타임 암호화: TLS에 aws-lc-rs, Ed25519 서명에 ed25519-dalek. 취약점 신고: GitHub Security Advisories / security@nautechsystems.io(48시간 이내 접수, critical 30일 패치).

설치

# Pre-built wheel (Python 3.12–3.14, Linux x86_64/ARM64 · macOS ARM64 · Windows x86_64)
pip install -U nautilus_trader
pip install -U "nautilus_trader[visualization]"   # tearsheets/charts
pip install -U nautilus_trader --pre              # v2.0.0rcN 테스트용
 
# Nautech Systems 인덱스 (PEP-503): 안정/개발 휠
pip install -U nautilus_trader --index-url=https://packages.nautechsystems.io/simple
  • uv + “vanilla” CPython 권장. Conda는 공식 미지원.
  • 소스 빌드: rustup + clang/LLVM + uv → git clone --branch develop --depth 1make sync(PyO3 환경변수 설정) → make build.
  • Redis는 캐시 DB/메시지 버스 백킹으로 쓸 때만 선택적.
  • Makefile 주요 타깃: make install · make build · make build-wheel · make cargo-test(cargo-nextest) · make pytest · make ruff · make pre-commit · make docs.

유사 도구와의 차이점 (README·문서 기반 해석)

  • Backtrader/Zipline/Freqtrade — Python이 실행 엔진까지 담당하는 반면, NautilusTrader는 Rust 코어가 실행 엔진이고 Python은 컨트롤 플레인. 성능·타입 안전성에서 차이.
  • CCXT — 연결 라이브러리에 머무르는 반면, NautilusTrader는 통합 실행·리스크·포트폴리오·백테스트 레이어를 포함.
  • AI/LLM 트레이딩 에이전트 프레임워크(TradingAgents 등) — LLM 멀티에이전트 의사결정에 초점. NautilusTrader는 그 아래 실행/백테스트 인프라 레이어. README는 RL/ES 방식의 AI 트레이딩 에이전트 훈련 가능(engine speed)을 명시하지만 내장 AI/ML 툴링은 스코프 밖.

공식 사실·해석·미검증 범위

직접 확인한 것

  • GitHub REST 메타데이터(스타·포크·라이선스·토픽·기본 브랜치)와 git ls-remote ref 확인
  • 고정 커밋 README 전체(기능·통합 17종·정밀도 모드·설치·보안·릴리스 정책)
  • docs/concepts/architecture.md (NautilusKernel·데이터/실행 플로우·crash-only·fail-fast·assurance)
  • docs/concepts/adapters.md·recursive 트리(4,694 파일)·릴리스 API·version.json·Cargo.toml

저장소가 주장하지만 재현하지 않은 것

  • 백테스트·라이브 실행의 research-to-live parity, 성능 수치(고주파 처리량), RL/ES 에이전트 훈련 속도
  • 어댑터 17종의 실제 작동 안정성, nanosecond 데이터 정밀도 경험치

이번 조사에서 하지 않은 것

  • pip install nautilus_trader / Rust 소스 빌드 / make 타깃 실행
  • 백테스트 실행, live 페이퍼/실거래 연결, 어댑터 인증
  • Rust cargo test/cargo-nextest·pytest, 벤치마크, 퍼징, 보안 감사 재현
  • Docker 배포 검증

관련 메모