重构回测代码架构,新增批量回测功能
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
## Why
|
||||
|
||||
当前 `backtest.py` 存在职责混杂的问题:命令行参数解析、核心回测逻辑、数据访问、结果展示都耦合在单一文件中,导致:
|
||||
- 难以在其他模块中复用回测功能
|
||||
- 无法进行单元测试
|
||||
- 仅支持单股票回测,无法批量处理
|
||||
|
||||
需要重构为分层架构,将核心逻辑与 CLI 界面分离,提升代码复用性和可维护性。
|
||||
|
||||
## What Changes
|
||||
|
||||
- **创建 `config.py`**:集中管理数据库配置、默认回测参数、图表配色
|
||||
- **创建 `backtest_core.py`**:核心回测引擎
|
||||
- 提供标准化接口 `run_backtest()`(单股票)
|
||||
- 提供批量接口 `run_batch_backtest()`(多股票,串行执行)
|
||||
- 封装数据访问和策略加载逻辑
|
||||
- 返回结构化结果对象 `BacktestResult`
|
||||
- **创建 `backtest_command.py`**:命令行界面
|
||||
- 支持多股票代码参数 `--codes`(接受多个值)
|
||||
- 使用 `tabulate` 优化批量结果的表格展示
|
||||
- 使用 `tqdm` 显示批量回测进度条
|
||||
- 保留原有的单股票详细输出格式
|
||||
- **删除 `backtest.py`**:不再需要,功能已迁移
|
||||
- **依赖更新**:添加 `tabulate`、`tqdm` 到项目依赖
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
- `batch-backtest`: 批量回测功能,支持传入多个股票代码进行串行回测,并提供进度条和表格化结果展示
|
||||
|
||||
### Modified Capabilities
|
||||
- 无(其他均为实现重构,不改变 spec 级别行为)
|
||||
|
||||
## Impact
|
||||
|
||||
- **代码影响**:
|
||||
- 删除 `backtest.py`(284 行)
|
||||
- 新增 `config.py`(约 30 行)
|
||||
- 新增 `backtest_core.py`(约 250 行)
|
||||
- 新增 `backtest_command.py`(约 150 行)
|
||||
- **API 变化**:
|
||||
- 新增 `run_backtest(code, start_date, end_date, strategy_file, ...)` 函数
|
||||
- 新增 `run_batch_backtest(codes, start_date, end_date, strategy_file, ...)` 函数
|
||||
- 新增 `BacktestResult` 数据类
|
||||
- **命令行变化**:
|
||||
- 单参数 `--code` 改为多值参数 `--codes`
|
||||
- 新增 `--output-dir` 参数,为每个股票生成独立 HTML 图表
|
||||
- 批量回测时显示进度条和表格化结果
|
||||
- **依赖变化**:
|
||||
- 新增 `tabulate`(表格格式化)
|
||||
- 新增 `tqdm`(进度条显示)
|
||||
- **兼容性**:
|
||||
- **BREAKING**: 删除原有 `backtest.py`,命令行使用方式从 `python backtest.py` 改为 `uv run python backtest_command.py`
|
||||
- 参数名称从 `--code` 改为 `--codes`
|
||||
Reference in New Issue
Block a user