# ETF轮动策略报告生成器 生成精美的 HTML 策略报告,展示回测结果和关键指标。 ## 功能特性 - ✅ **策略 KPI** - 累计收益、年化收益、胜率、夏普比率等 - ✅ **净值曲线** - 交互式折线图,支持缩放和悬停 - ✅ **月度收益** - 柱状图展示每月收益分布 - ✅ **盈亏分布** - 饼图展示盈利/亏损比例 - ✅ **品种排行** - 横向条形图展示各品种表现 - ✅ **调仓记录** - 可按日期和品种筛选的交易明细表格 - ✅ **现代化 UI** - 渐变色头部、卡片布局、响应式设计 - ✅ **打印友好** - 支持直接打印为 PDF ## 使用方法 ### 基础用法 ```bash # 生成完整报告 python visualization/report_generator/generate_report.py # 指定时间区间 python visualization/report_generator/generate_report.py --start 2024-01-01 --end 2024-12-31 # 指定输出目录 python visualization/report_generator/generate_report.py --output my_reports ``` ### Python API 调用 ```python from visualization.report_generator.generate_report import ReportGenerator # 创建生成器 generator = ReportGenerator(results_dir='results') # 生成报告 output_file = generator.generate( start_date='2024-01-01', end_date='2024-12-31', output_dir='reports' ) print(f"报告已生成: {output_file}") ``` ### 定时生成(可选) ```bash # 添加到 crontab,每天生成一次 0 9 * * * cd /path/to/etf && python visualization/report_generator/generate_report.py ``` ## 依赖 ```bash pip install pandas numpy jinja2 ``` ## 文件结构 ``` visualization/report_generator/ ├── template.html # HTML 模板 ├── generate_report.py # 报告生成脚本 └── README.md # 说明文档 ``` ## 输出示例 生成的报告包含: 1. **头部区域** - 报告标题和数据区间 2. **KPI 卡片** - 8 个关键指标(收益、胜率、夏普比等) 3. **净值曲线** - 带渐变填充的折线图 4. **月度收益** - 红绿柱状图 5. **盈亏分布** - 环形饼图 6. **品种排行** - 横向条形图 7. **调仓表格** - 支持筛选和打印 ## 自定义 ### 修改配色方案 编辑 `template.html` 中的 CSS 变量: ```css :root { --primary-color: #1890ff; --success-color: #52c41a; --danger-color: #ff4d4f; } ``` ### 添加新指标 在 `generate_report.py` 的 `calculate_kpis()` 方法中添加: ```python def calculate_kpis(self, trades_filtered): # ... 现有代码 ... # 添加新指标 new_metric = ... return { 'total_return': ..., 'new_metric': new_metric, # 新增 ... } ``` 然后在模板中使用: ```html
{{ new_metric }}
``` ## 技术栈 - **模板引擎**: Jinja2 - **图表库**: ECharts 5.4 - **样式框架**: Bootstrap 5.3 - **图标**: Bootstrap Icons ## 注意事项 1. 确保 `results/report_summary.csv` 和 `results/report_trades.csv` 存在 2. 数据格式需符合预期(参考现有 CSV 文件) 3. 生成的 HTML 文件可离线查看(ECharts 使用 CDN) 4. 打印时筛选栏会自动隐藏 ## 示例输出 ``` 🚀 开始生成策略报告... ✅ 数据加载成功: 1233 条交易记录 📊 筛选后数据: 1233 条记录 ✅ 报告已生成: reports/strategy_report_20260508_210000.html 📁 文件大小: 125.3 KB 🌐 在浏览器中打开: file:///Users/aszer/Documents/vscode/etf/reports/strategy_report_20260508_210000.html ```