Skip to content

crypto_backtesting framework based on polars, parquet and bulk_downloader

Notifications You must be signed in to change notification settings

shaojintian/crypto_backtesting

Repository files navigation

crypto_backtesting

crypto_backtesting framework based on polars, parquet and bulk_downloader

高性能回测框架架构文档

1. 项目概述

本项目旨在构建一个高性能的回测框架,结合 Python 的现代异步库 uvloop、高效的列式存储格式 Parquet、数据分析库 Polars 以及交互式可视化库 Plotly,实现快速、灵活和可扩展的回测能力。


python -m data.fetch_3_um_data.py

2. 架构设计

2.1 核心模块

2.1.1 数据模块

  • 功能:负责加载、存储、预处理交易数据。
  • 技术栈
    • 数据存储:Parquet 格式。
    • 数据处理:Polars。
  • 特点
    • 利用 Parquet 的高压缩比和快速读取特性,提升数据加载性能。
    • Polars 提供列式操作,支持多线程加速数据处理。

2.1.2 回测引擎模块

  • 功能:执行核心回测逻辑,包括数据迭代、策略执行、账户更新。
  • 技术栈
    • 异步支持:uvloop 提升事件循环效率。
  • 特点
    • 使用异步事件驱动架构,提升性能。
    • 支持多资产、多个时间频率的回测。

2.1.3 策略模块

  • 功能:用户可定义交易策略,包括入场、出场和风险管理逻辑。
  • 特点
    • 提供标准化接口,便于策略开发。
    • 支持自定义参数调优和多策略回测。

2.1.4 可视化模块

  • 功能:生成交互式可视化报表,用于分析回测结果。
  • 技术栈
    • Plotly 提供高质量、交互式图表。
  • 特点
    • 支持交易数据、账户净值、指标等多维度可视化。
    • 可生成独立 HTML 文件,便于分享。

2.2 数据流设计

  1. 数据加载:从 Parquet 文件加载历史交易数据,并进行预处理。
  2. 策略执行:按时间顺序迭代数据,对策略进行调用。
  3. 账户更新:实时计算账户状态,包括资金、持仓、收益等。
  4. 结果分析:聚合回测结果,生成指标和可视化报告。

3. 技术细节

3.1 数据预处理

  • 文件格式:Parquet 文件按时间分区,支持增量加载。
  • 数据结构
    • 时间戳 (timestamp)
    • 资产代码 (symbol)
    • 开盘价、最高价、最低价、收盘价 (OHLC)
    • 成交量 (volume)

3.2 异步回测

  • uvloop 集成
    • 替换默认事件循环,提高异步任务的性能。
  • 事件驱动
    • 数据流事件:每个时间点触发策略。
    • 账户事件:策略触发订单后更新账户状态。

3.3 可视化

  • 交互式图表
    • 净值曲线
    • 收益分布
    • 交易信号
  • 实现方式:通过 Plotly 构建动态仪表盘,支持缩放、过滤。

4. 项目流程

graph TD

A[加载数据] --> B[预处理数据]

B --> C[初始化回测引擎]

C --> D[执行回测]

D --> E[生成回测结果]

E --> F[生成可视化报表]

  1. 加载数据:从 Parquet 文件中读取历史数据。
  2. 预处理数据:使用 Polars 清理、格式化数据。
  3. 初始化回测引擎:设置回测参数、策略、账户初始状态。
  4. 执行回测:按时间序列迭代,调用策略并更新账户。
  5. 生成回测结果:聚合回测数据,计算收益、风险指标等。
  6. 生成可视化报表:通过 Plotly 展示结果。

5. 性能优化

  1. IO 优化
    • 使用 Parquet 提升数据加载速度。
  2. 计算优化
    • Polars 支持多线程加速列操作。
    • 使用异步事件循环减少阻塞。
  3. 内存优化
    • 按需加载数据,避免大规模内存占用。

About

crypto_backtesting framework based on polars, parquet and bulk_downloader

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published