StratCraft

C++23 回測引擎

從 7 層和 5 個行程到 4 層和 2 個行程。專為量化研究速度而生的目的性執行引擎。

架構演進

三代的精煉:在每一層消除開銷。

V1

V1:多行程

7+ 抽象層,5 個獨立行程,IPC 序列化開銷。純 Python 執行,架構複雜度高。

7 層,5 個行程
V2

V2:整合

減少行程數量,引入 C++ 元件。過渡性架構,驗證了嵌入式執行概念。

5 層,3 個行程
V3

V3:嵌入式引擎

4 層,2 個行程,1 個協定。C++ 執行器內嵌 pybind11 Python。零拷貝 Apache Arrow 到 NumPy 資料流。

4 層,2 個行程

效能基準測試

使用 RDTSC 計時、CPU 親和性綁定和 P50/P90/P99/P999 百分位追蹤測量。

指標測量值目標
每根 K 線延遲2.15 ns< 1 µs
GIL 取得時間26.62 ns< 10 µs
GIL 持有時間203.30 ns< 100 µs
SIMD 加速(AVX2)2.48x≥ 2x
無鎖吞吐量15.73 M ops/s> 10 M ops/s
整體 vs Python500-1000x> 100x

零拷貝資料流水線

從市場資料到策略執行,零記憶體拷貝。

1

Parquet 攝取

以 Apache Parquet 格式儲存市場資料,採用欄式壓縮。直接記憶體映射檔案存取消除反序列化開銷。

2

Arrow 記憶體格式

Apache Arrow 提供語言無關的欄式記憶體佈局。C++ 和 Python 共享相同的記憶體,無需任何拷貝或轉換。

3

NumPy 零拷貝存取

pybind11 將 Arrow 緩衝區在相同記憶體空間中公開為 NumPy 陣列。策略 Python 程式碼讀取 C++ 擁有的資料,零分配。

最佳化歷程

從架構到奈秒:系統性的效能方法。

第零階段:架構500-1000x

V3 單行程執行器消除了 IPC 序列化、行程生成和跨行程資料封送。最大收益來自架構簡化。

第一階段:基準框架基準線

具有 CPU 親和性綁定的 RDTSC 計時。跨 12 個基準程式的 P50/P90/P99/P999 百分位追蹤。建立可重現的測量基礎設施。

第二階段:現代 C++5-10%

LTO、-march=native、xsimd SIMD 抽象、mimalloc 分配器、Quill 低延遲日誌、Abseil 容器。編譯器和函式庫層面的最佳化。

第三階段:記憶體主權1.05x

PMR 基礎設施、快取對齊分配器、零熱路徑分配。目標 L1 快取缺失 < 5% 和 TLB 缺失 < 0.5%。

體驗速度

數分鐘內 Clone、建置並執行您的第一次回測。引擎包含在免費版中。

git clone https://github.com/StratCraft/StratCraft.git\ncd StratCraft\npnpm install && pnpm dev:desktop