mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 22:34:18 +08:00
问题: `/api/backtest/factor/run` 与 `/api/backtest/factor/batch` 省略 start 时, 使用了策略默认区间 STRATEGY_DEFAULT_DAYS(3 年), 而非为因子回测定义的 FACTOR_DEFAULT_DAYS(180 天)。以 end=2026-08-24 为例, 会解析成 2023-08-25。 影响: 用户只选因子直接运行会加载约 3 年数据, 徒增内存与耗时; 也与前端 「默认最近 3 个月」的提示不一致。且服务器区间守卫上限为 186 天, 该默认区间 在开启守卫时会被直接拒绝。 根因: factor_run / factor_batch 调用 _resolve_start 时误传 STRATEGY_DEFAULT_DAYS。 同文件的 strategy_run 已正确使用 FACTOR_DEFAULT_DAYS, 仅两个因子入口写反。 修复: 两处改为 FACTOR_DEFAULT_DAYS。显式传 start=null(全部历史)与显式日期的 语义保持不变(由 _resolve_start 的 model_fields_set 判定, 未改动)。 验证: 新增 tests/backtest/test_factor_default_range.py, 用替身 Service 捕获 传入配置, 覆盖省略 start、显式 null、显式日期三种情况(factor_run + factor_batch)。 修复前 2 例失败(解析为 2023-08-25), 修复后 4 例全过; 相邻 factor/optimizer 回归 28 passed; ruff 通过。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>