fix(report): 修复 generate_legacy_report 重复日期导致的 reindex 失败

问题:nav_series 或 backtest_result.index 存在重复日期时,
reindex() 抛出 'cannot reindex on an axis with duplicate labels'

修复:
- 先检查并去除 nav_series 的重复日期
- 同时检查并去除 backtest_result.index 的重复日期
- 使用 duplicated(keep='last') 保留最后一条记录
This commit is contained in:
2026-05-14 01:21:07 +08:00
parent 6a5d4dacd4
commit 2789713637

View File

@@ -170,7 +170,14 @@ def run_with_legacy_report():
else:
continue
# 对齐净值数据到回测日期使用ffill处理日期差异
nav_aligned = nav_series.reindex(backtest_result.index, method='ffill')
# 先去除重复日期
if nav_series.index.has_duplicates:
nav_series = nav_series[~nav_series.index.duplicated(keep='last')]
# 确保 backtest_result.index 无重复
target_index = backtest_result.index
if target_index.has_duplicates:
target_index = target_index[~target_index.duplicated(keep='last')]
nav_aligned = nav_series.reindex(target_index, method='ffill')
etf_nav_data_raw[idx_code] = nav_aligned.values
# 生成原引擎格式的报告