问题根因: - reindex(method='ffill') 不会填充已存在的 NaN 值 - 当 factor_df 中已有 NaN(境外市场放假),reindex 无法填充 修复方案: - 改为两步操作:reindex() 然后 ffill() - ffill() 会填充所有 NaN,包括已存在的 影响范围: - rotation.py: positions 对齐到 A 股日历 - export_backtest_detail.py: 因子对齐到展示日历 验证结果: - 2026-04-30 HSI: nan → 0.2388 ✅ - 2026-05-08 HSI: nan → 0.1144 ✅