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 协议。通过 pybind11 嵌入 Python 的 C++ 执行器。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
相比 Python 整体500-1000x> 100x

零拷贝数据流水线

从市场数据到策略执行,零内存拷贝。

1

Parquet 摄入

市场数据以列式压缩的 Apache Parquet 格式存储。直接内存映射文件访问消除反序列化开销。

2

Arrow 内存格式

Apache Arrow 提供语言无关的列式内存布局。C++ 和 Python 共享同一内存,无需任何拷贝或转换。

3

NumPy 零拷贝访问

pybind11 将 Arrow 缓冲区暴露为同一内存空间中的 NumPy 数组。策略 Python 代码零分配读取 C++ 拥有的数据。

优化历程

从架构到纳秒:系统性的性能优化方法。

阶段 0:架构500-1000x

V3 单进程执行器消除了 IPC 序列化、进程创建和跨进程数据编组。最大的收益来自架构简化。

阶段 1:基准测试框架基线

使用 CPU 亲和性固定的 RDTSC 计时。12 个基准测试程序的 P50/P90/P99/P999 百分位追踪。建立可复现的测量基础设施。

阶段 2:现代 C++5-10%

LTO、-march=native、xsimd SIMD 抽象、mimalloc 分配器、Quill 低延迟日志、Abseil 容器。编译器和库级别优化。

阶段 3:内存主权1.05x

PMR 基础设施、缓存对齐分配器、热路径零分配。目标 L1 缓存未命中率 < 5%,TLB 未命中率 < 0.5%。

体验速度

克隆、构建并在几分钟内运行您的第一次回测。引擎包含在免费版中。

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