## 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`