第一階段:全局認識

模組 01:為什麼選擇 NautilusTrader 理解量化交易的挑戰,以及這個框架如何解決它們

一、量化交易的核心挑戰

在你開始了解 NautilusTrader 之前,先來看看量化交易中最常見的「坑」。 這些不是技術問題,而是每一個做量化交易的人都會遇到的實際痛點:

📊

回測和實盤不一致

用 Python 做回測結果很好,但換成 C++ 或 Java 寫實盤代碼後,結果完全不同。因為回測和實盤是兩套完全不同的代碼。

🐢

速度不夠快

Python 好學好用,但速度慢。高頻策略需要微秒級的執行速度,純 Python 根本做不到。

🧩

難以擴展

一開始只交易一個交易所,後來想加更多交易所或資產類別,整個代碼就要重寫。

💣

數據靜默錯誤

一個錯誤的價格數據沒被發現,策略用錯誤的價格下了單,造成不可逆的虧損。

🔄

重複造輪子

每次新策略都要從零開始寫訂單管理、風控、數據處理、持倉追蹤。大量時間花在基礎設施而非策略本身。

⚠️

風險管控薄弱

沒有系統化的風控,一個 bug 就可能導致無限下單。凌晨出問題時沒人發現。

💡 交易員視角

如果你曾經用 Excel 或 Python 腳本做過回測,你一定遇過第一個問題 — 回測賺錢但實盤虧錢。這在量化圈叫做「回測-實盤落差」(Backtest-Live Gap)。NautilusTrader 的最大賣點就是解決這個問題。

二、NautilusTrader 是什麼

NautilusTrader 是一個開源的、高性能的、可用於生產環境的算法交易平台。 它的核心理念可以用一句話概括:

「用同一套代碼,在回測和實盤中運行完全相同的策略」

它由澳洲的 Nautech Systems 公司開發和維護,使用 LGPL v3.0 開源許可。核心用 Rust 編寫(追求極速和安全),外層用 Python 封裝(方便使用和研究)。

三、核心優勢一覽

⚡

極速

核心用 Rust 編寫,配合 Tokio 非同步網絡。在保持 Python 易用性的同時,獲得接近 C++ 的性能。

🎯

回測 = 實盤

策略代碼在回測和實盤中完全一致,不需要任何修改。徹底消除「回測-實盤落差」。

🔒

可靠安全

Rust 保證類型安全和線程安全。Fail-Fast 策略確保錯誤數據立即被發現,不會靜默傳播。

🔌

模組化可擴展

適配器架構可以接入任何 REST API 或 WebSocket。想加新交易所?只需寫一個適配器。

📦

功能全面

9 種訂單類型、18 種 Bar 聚合方式、條件單(OCO/OTO/OUO)、冰山訂單、移動止損、TWAP 算法 — 一應俱全。

🤖

AI 友好

回測引擎足夠快,可以直接用來訓練 AI 交易代理(強化學習/進化策略)。

四、支援的資產和交易所

4.1 支援的資產類別

NautilusTrader 是資產類別無關的設計,理論上可以交易任何東西:

資產類別說明例子
🏦 外匯 (FX)貨幣對交易EUR/USD, GBP/JPY
📈 股票 (Equities)股票交易AAPL, TSLA
📋 期貨 (Futures)期貨合約ES, NQ, CL
🎰 期權 (Options)期權合約股票期權、指數期權
🪙 加密貨幣 (Crypto)中心化及去中心化交易所BTC, ETH
🌐 DeFi去中心化金融協議dYdX, Hyperliquid
🏇 博彩 (Betting)運動賽事博彩交易Betfair
🔮 預測市場預測市場交易Polymarket

4.2 已整合的交易所和數據源

截至目前,NautilusTrader 已經有 15 個官方整合適配器:

名稱類型狀態
🟢 Binance(幣安)加密貨幣交易所穩定
🟢 Bybit加密貨幣交易所穩定
🟢 OKX加密貨幣交易所穩定
🟢 Interactive Brokers(盈透)券商(多市場)穩定
🟢 BitMEX加密貨幣交易所穩定
🟢 dYdX去中心化交易所穩定
🟢 Betfair博彩交易所穩定
🟢 Polymarket預測市場穩定
🟢 Databento數據供應商穩定
🟢 Tardis加密貨幣數據穩定
🟢 Deribit加密貨幣期權交易所穩定
🟢 Kraken加密貨幣交易所穩定
🟢 AX Exchange傳統金融(多市場執行)穩定
🟢 Hyperliquid去中心化永續合約穩定
✅ 對交易員的意義

不管你交易哪個市場、哪個交易所,你的策略代碼都是一樣的。只需要切換適配器,就能把同一個策略從幣安切到盈透,從加密貨幣切到股票期貨。

五、為什麼用 Rust + Python?

這是一個很重要的設計決策。NautilusTrader 不是純 Python,也不是純 Rust, 而是「Rust 核心 + Python 封裝」的混合架構:

flowchart LR
                        subgraph python_layer["🐍 Python 層 — 你寫策略的地方"]
                        direction TB
                        p_strategy["策略代碼 Python"]
                        p_config["配置 Python"]
                        p_analysis["分析/研究 Python"]
                        p_strategy --- p_config --- p_analysis
                        end

                        subgraph cython_layer["🔗 Cython/PyO3 橋接層"]
                        direction TB
                        bindings["C 擴展模組<br/>類型安全介面"]
                        end

                        subgraph rust_layer["🦀 Rust 核心 — 高性能引擎"]
                        direction TB
                        r_engine["交易引擎"]
                        r_model["領域模型"]
                        r_infra["網絡與序列化"]
                        r_engine --- r_model --- r_infra
                        end

                        python_layer --> cython_layer
                        cython_layer --> rust_layer

                        style cython_layer fill:#1a1f2e,stroke:#ab47bc,stroke-width:2px
                        style python_layer fill:#0f1419,stroke:#4fc3f7,stroke-width:1px
                        style rust_layer fill:#0f1419,stroke:#ef5350,stroke-width:1px
圖 1:Rust + Python 雙層架構
層次語言負責什麼為什麼用這個語言
核心引擎Rust領域模型、消息總線、緩存、序列化、網絡 IO極速、記憶體安全、線程安全、零成本抽象
橋接層Cython / PyO3將 Rust 功能暴露為 Python 可調用的介面讓 Python 直接調用 Rust 編譯的二進制代碼
使用者層Python策略編寫、配置、數據分析、研究簡單易用、機器學習生態、快速迭代
💡 類比理解

想像你開一輛賽車:Rust 是引擎(追求極致性能和安全),Python 是方向盤和儀表板(你只需要握住方向盤就能駕駛,不需要懂引擎內部怎麼運作)。

六、和其他平台對比

特性NautilusTraderziplinebacktraderQuantConnect
核心語言Rust + PythonPythonPythonC# + Python
回測-實盤一致性✅ 完全一致❌ 僅回測❌ 分離⚠️ 部分
性能🟢 極高🔴 低🔴 低🟡 中等
事件驅動✅ 是❌ 向量化✅ 是✅ 是
多交易所✅ 15❌ 無❌ 少✅ 多
開源✅ LGPL v3✅ 是✅ 是⚠️ 部分
類型安全✅ Rust 保證❌ 無❌ 無✅ C# 靜態
納秒精度✅ 是❌ 否❌ 否❌ 否

七、三種使用場景

NautilusTrader 支援三種使用場景,涵蓋了策略開發的完整生命週期:

flowchart LR
                        subgraph backtest["📊 回測 (Backtest)"]
                        direction TB
                        bt_in["歷史數據"] --> bt_eng["模擬引擎"] --> bt_out["績效報告"]
                        end

                        subgraph sandbox["🏖️ 沙箱 (Sandbox)"]
                        direction TB
                        sb_in["即時數據"] --> sb_eng["模擬執行"] --> sb_out["虛擬盈虧"]
                        end

                        subgraph live["🔴 實盤 (Live)"]
                        direction TB
                        lv_in["即時數據"] --> lv_eng["真實執行"] --> lv_out["真實盈虧"]
                        end

                        backtest -->|"策略驗證通過"| sandbox
                        sandbox -->|"確認一切正常"| live

                        style backtest fill:#0f1419,stroke:#4fc3f7,stroke-width:1px
                        style sandbox fill:#0f1419,stroke:#ffa726,stroke-width:1px
                        style live fill:#0f1419,stroke:#ef5350,stroke-width:1px
圖 2:策略從回測到實盤的流程
場景數據源交易執行適用時機
📊 回測歷史數據模擬交易所開發新策略、驗證想法、調整參數
🏖️ 沙箱即時市場數據模擬交易所用真實市場數據測試,但不動真錢
🔴 實盤即時市場數據真實交易所正式上線,真金白銀交易
⚠️ 重要提醒

策略在這三個場景中的代碼完全一樣。你只需要切換配置,而不是重寫代碼。這就是 NautilusTrader 最強大的地方。

八、NautilusTrader 的名字由來

「Nautilus」來自古希臘語,意思是「水手」(nautilus = sailor, naus = ship)。 鸚鵡螺(Nautilus)的殼由模組化的腔室組成,其生長因子接近對數螺旋。 這個理念被轉化為框架的設計美學 —— 模組化、可擴展、優雅成長。

🐚 設計隱喻

就像鸚鵡螺的殼一樣,NautilusTrader 的架構也是一個個「腔室」(模組)組成的。每個模組獨立但連接,整體形成一個優雅的螺旋結構。你可以只用幾個模組,也可以使用全部。

九、互動練習

🧠 思考題 1:你的需求分析

根據你目前的交易情況,回答以下問題:

  1. 你目前交易哪些市場?(加密貨幣、股票、期貨?)
  2. 你是否遇過回測賺錢但實盤虧錢的情況?
  3. 你對交易系統最重要的需求是什麼?(速度?穩定性?容易使用?)

💬 這些問題沒有標準答案,但你的回答會決定你在後面的模組中應該特別關注哪些部分。

🧠 思考題 2:平台選擇

根據本模組學到的內容,列出 NautilusTrader 最吸引你的 三個特點,並解釋為什麼。

參考答案(僅供參考,你的答案可能不同):1. 回測-實盤一致性 → 不用維護兩套代碼,降低 bug 風險和開發成本2. 多交易所支援 → 同一策略可以在不同交易所運行,增加靈活性3. Fail-Fast 數據安全 → 錯誤數據會立即被發現,避免因為錯誤的價格數據 做出錯誤的交易決策

十、本模組重點回顧

📋 你應該記住的關鍵點
  1. NautilusTrader 解決的核心問題:消除「回測-實盤落差」
  2. 雙語架構:Rust 核心(性能)+ Python 封裝(易用)
  3. 資產無關設計:支援 FX、股票、期貨、期權、加密貨幣、DeFi、博彩
  4. 15 個整合:涵蓋主流交易所和數據源
  5. 三種場景:回測 → 沙箱 → 實盤,代碼完全一致
  6. 模組化設計:像鸚鵡螺的殼一樣,可以靈活組合和擴展