55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
## 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`
|