mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 19:04:15 +08:00
P1 — run_batch 进入因子循环前对 close 有效序列计算一次 _next_return (仅依赖 symbol/date/close/rebalance, 与因子无关), 通过 left join 附着到 共享面板; _evaluate_panel 检测到预计算列时直接复用, 跳过逐因子 shift/ 调仓日 JOIN。因子空值集中在预热期前缀, 过滤后无内部空洞, 故与逐因子 在过滤后面板上重算的结果完全等价 (daily/weekly/monthly 均数值一致)。 P2 — 将 _calc_group_nav / _calc_group_stats / _calc_long_short 三段 逐行 Python 循环改为向量化: - 分组净值: Polars cum_prod 替代 dict 累乘 - 分组统计: numpy maximum.accumulate 计算回撤, 向量化周期收益序列 - 多空组合: cumprod 合成净值, 向量化峰值/回撤 峰值初值沿用原逻辑 max(1.0, 历史最高), 400 组随机序列 (含 null/负收益) 下与旧实现逐值等价。 测试: tests/backtest 全量 184 passed。