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:
@@ -170,7 +170,14 @@ def run_with_legacy_report():
|
|||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
# 对齐净值数据到回测日期(使用ffill处理日期差异)
|
# 对齐净值数据到回测日期(使用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
|
etf_nav_data_raw[idx_code] = nav_aligned.values
|
||||||
|
|
||||||
# 生成原引擎格式的报告
|
# 生成原引擎格式的报告
|
||||||
|
|||||||
Reference in New Issue
Block a user