Skip to content

cloudQuant/cybacktrader

Repository files navigation

cybacktrader

Cython-accelerated, drop-in compatible interface for backtrader

总结

  1. 暂定为失败,性能只提高了20%-30%,远低于理想中的5-10倍。
  2. 现在是AI时代,大模型氛围编程,可以让一个项目进行下去,几天搞定一个项目很常见了。
  3. 失败是成功之母,看来还是得重构backtrader,去掉元编程技术。

⚡ 性能对比

Performance Comparison

实测性能数据

实现方式 平均时间 加速比 说明
backtrader (CPython 3.13) 0.492秒 1.00x 基准
cybacktrader (CPython 3.13) 0.443秒 1.11x 🚀 Cython优化
backtrader (PyPy 7.3.15) 0.409秒* 1.20x* JIT编译(*第3轮最佳)

测试环境: 10,000行数据,5/20日均线交叉策略,3轮测试取平均
详细分析: 性能对比分析报告

关键发现

  • cybacktrader提供稳定的11%性能提升,无预热开销
  • 100% API兼容,无需修改任何代码
  • PyPy可提供最高20%提升,但需要JIT预热时间
  • ⚠️ 性能瓶颈在架构层面(Strategy.next()逐Bar调用),理论上限约2-3x

项目简介

cybacktrader 是对知名 Python 量化回测框架 backtrader 的 Cython 重构版本。主要目标:

  • 性能提升:通过 Cython 静态类型优化和编译加速,实测提升11%
  • 完全兼容:API 与 backtrader 100% 兼容,只需替换导入语句
  • 代码结构一致:文件名、类名、函数接口完全对应,便于迁移
  • 渐进式优化:优先优化性能热点,保证稳定性

📖 文档

所有详细文档都已整理到 docs/ 文件夹中

快速开始

安装

# 克隆仓库
git clone https://github.com/yourusername/cybacktrader.git
cd cybacktrader

# 安装依赖
pip install -e .[dev]

# 编译 Cython 模块(当前版本使用 backtrader 兼容层)
python setup.py build_ext --inplace

使用示例

只需将原有的 backtrader 导入替换为 cybacktrader

# 原来的代码
# import backtrader as bt

# 新的代码
import cybacktrader as bt

# 其余代码完全不变
cerebro = bt.Cerebro()
# ... 您的策略代码

重构进度

阶段 1:脚手架与兼容层 ✅

  • 创建 pyproject.tomlsetup.py
  • 创建 cybacktrader/__init__.py 兼容层
  • 配置 Cython 构建系统

阶段 2:测试迁移 🔄

  • 批量替换测试文件中的导入
  • 运行冒烟测试
  • 修复基础兼容性问题

阶段 3:基准与性能剖析 🔄

  • 创建基准测试脚本
  • 性能热点分析
  • 建立性能基线报告

阶段 4:Cython 化核心模块(优先级 A)📋

  • linebuffer.pylinebuffer.pyx
  • lineiterator.pylineiterator.pyx
  • lineseries.pylineseries.pyx
  • lineroot.pylineroot.pyx
  • mathsupport.pymathsupport.pyx

阶段 5:Cython 化计算密集模块(优先级 B)📋

  • indicator.pyindicator.pyx
  • indicators/* 各指标模块

阶段 6:Cython 化调度与撮合(优先级 C)📋

  • cerebro.pycerebro.pyx
  • broker.pybroker.pyx
  • order.pyorder.pyx

性能优化策略

  1. 静态类型声明:为关键变量添加 C 类型声明
  2. 内存视图:使用 memoryview 优化数组访问
  3. 禁用边界检查:在安全的地方禁用 Python 边界检查
  4. C 除法语义:使用 C 除法避免 Python 开销
  5. 函数内联:对热点小函数使用 inline

开发与贡献

项目结构

cybacktrader/
├── cybacktrader/           # Cython 优化后的模块
│   └── __init__.py        # 兼容层入口
├── backtrader/            # 原始 backtrader 代码
├── tests/                 # 测试用例
├── benchmarks/            # 性能基准测试
├── docs/                  # 项目文档
│   ├── README.md         # 文档导航
│   ├── MIGRATION_GUIDE.md # 迁移指南
│   ├── PERFORMANCE.md    # 性能分析
│   ├── CONTRIBUTING.md   # 贡献指南
│   └── OPTIMIZATION_PLAN.md # 优化计划
├── examples/              # 使用示例
├── scripts/               # 辅助脚本
├── setup.py              # Cython 构建配置
├── pyproject.toml        # 项目配置
└── README.md             # 本文档

运行测试

# 迁移测试导入
python scripts/migrate_tests_imports.py

# 运行测试
pytest tests/

性能基准

# 运行基准测试
python benchmarks/baseline_benchmark.py

更多开发细节请参阅 贡献指南

兼容性

  • Python >= 3.8
  • Cython >= 3.0
  • NumPy

许可证

本项目遵循 backtrader 的原始许可证。

📚 更多资源

致谢

本项目基于 backtrader 开发,感谢 Daniel Rodriguez 及 backtrader 社区的贡献。

About

using cython refactor the backtrader

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •