2.3 KiB
2.3 KiB
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
- BREAKING: 删除原有