实测结果,而非营销话术。详细基准测试将随 v1.0 版本一同发布。
核心回测操作的逐项对比。
| 指标 | Python | StratForge | 提升 |
|---|---|---|---|
| 单指标(每根 K 线) | 待定 | 待定 | 待定 |
| 策略步骤 | 待定 | 待定 | 待定 |
| 完整回测(100万根 K 线) | 待定 | 待定 | 待定 |
| 吞吐量 | 待定 | 待定 | 待定 |
| 内存占用 | 待定 | 待定 | 待定 |
StratForge 如何在回测管线中叠加优化。
K 线存储在缓存友好的列式缓冲区中。指标计算流经连续内存,而非追逐指针。
每个指标维护内部状态,每根 K 线以 O(1) 更新。无滑动窗口重新计算。
策略入场/出场逻辑尽可能重写为无分支算术,避免价格条件代码上的流水线停顿。
编译时已知的指标参数成为 consteval。特化模板消除运行时分派。
在热路径上运行一次回测。
| 操作 | Python 回测器 | StratForge |
|---|---|---|
| 堆分配 | 大量(每根 K 线的 Python 对象) | 0 |
| K 线存储 | pandas DataFrame 拷贝 | std::span 列式缓冲区视图 |
| 指标状态 | 每次调用的数组分配 | 预分配的滚动状态 |
| 内存占用 | 动态,GC 驱动 | 静态,预分配 |
| 确定性 | 跨运行的浮点漂移 | 比特级精确可复现 |
叠加为确定性、低延迟回测的设计决策。
| 技术 | Python 回测器 | StratForge |
|---|---|---|
| 内存布局 | 行式(DataFrame) | 列式(缓存友好) |
| 指标更新 | 每次调用重新计算窗口 | 增量 O(1) 每根 K 线 |
| 循环分派 | 解释执行的 Python 循环 | 内联的 C++ 模板循环 |
| 数值确定性 | 依赖 NumPy / pandas 版本 | 跨运行比特级精确 |
| 策略组合 | 类继承 + 动态分派 | Concepts + 静态多态 |
| 错误处理 | 异常 | std::expected(无抛出) |
StratForge 设计过程中研究的行业领先库和框架。
| 库 | 我们学到了什么 | 我们构建了什么 | 成果 |
|---|---|---|---|
| TA-Lib | 标准指标定义和边界情况处理 | C++23 纯头文件指标库 | 138 个指标 |
| vectorbt | 向量化回测 API 和参数扫描 | 编译时模板化参数扩展 | 待定 |
| backtrader | 策略生命周期和事件钩子 | Concept 驱动的策略接口 | 类型安全的生命周期 |
| QuantLib | 模块化定价和分析架构 | 可插拔的分析模块 | 待定 |
| Eigen | 表达式模板实现零开销数学 | 惰性指标组合 | 无临时缓冲区 |
| Arrow | 列式内存布局标准 | 原生列式 K 线存储 | 缓存行友好 |
| Folly | 无锁原语和 small_vector | 预分配交易日志 | 待定 |
| Highway | 可移植 SIMD 抽象 | SIMD 友好的指标内层循环 | 待定 |
| fmt | 编译时格式化字符串 | 零开销报告格式化 | 待定 |
| Boost.PMR | 单调缓冲区用于内存池分配 | std::pmr::monotonic_buffer_resource 内存池 | 零堆分配 |
| Catch2 | BDD 风格的指标单元测试 | 比特级精确回归测试套件 | 可复现的 CI |
三条命令即可克隆并开始回测。
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build