feat(report): 净值曲线数据统一来源,直接读取轮动策略输出
修改内容: 1. strategies/rotation/report.py - 新增保存策略净值曲线到CSV文件的功能 - 保存字段:日期、策略净值、基准净值、各品种净值 - 输出路径: results/report_nav.csv - 包含1754条净值记录 2. visualization/report_generator/generate_report.py - 加载净值曲线CSV文件(优先) - 直接使用轮动策略输出的净值数据,不再重新计算 - 保留备用计算逻辑(CSV不存在时) - 新增 benchmark_values 用于显示基准净值 3. visualization/report_generator/template.html - 净值曲线图表新增基准净值曲线(红色虚线) - 添加图例显示(策略净值、基准净值) - Tooltip 显示双线数据对比 效果: - 净值曲线数据统一从轮动策略回测结果获取 - 避免重复计算导致的曲线不一致 - HTML报告显示策略vs基准对比曲线 - 数据来源清晰可追溯(1754条完整净值记录)
This commit is contained in:
@@ -163,6 +163,21 @@ def generate_performance_report(
|
||||
with open(metrics_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(metrics_dict, f, indent=2, ensure_ascii=False)
|
||||
print(f"策略指标已保存: {metrics_path}")
|
||||
|
||||
# 保存净值曲线数据到CSV文件
|
||||
nav_df = pd.DataFrame({
|
||||
'日期': strategy_nav.index.strftime('%Y-%m-%d'),
|
||||
'策略净值': strategy_nav.values,
|
||||
'基准净值': benchmark_nav.values,
|
||||
})
|
||||
# 添加各品种净值
|
||||
for code in code_list:
|
||||
if f"净值_{code}" in backtest_result.columns:
|
||||
nav_df[f"净值_{code}"] = backtest_result[f"净值_{code}"].values
|
||||
|
||||
nav_path = f"{save_path}_nav.csv"
|
||||
nav_df.to_csv(nav_path, index=False)
|
||||
print(f"净值曲线已保存: {nav_path}")
|
||||
|
||||
# 返回指标字典
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user