新增6维度策略诊断实验脚本和报告: - task1: 信号产生分析 (调仓频率、无效调仓率) - task2: 收益计算分析 (T+1执行偏差、溢价问题) - task3: 调仓逻辑分析 (最小持仓期模拟) - task4: 资金管理分析 (止损、波动率适配) - task5: 收益归因分析 (集中度、静态vs轮动) - task6: 回撤诊断分析 (最大回撤复盘、尾部风险) 输出报告: - diagnosis_report.md: 完整策略诊断报告 - rebalancing_optimization_experiment.md: 调仓频率优化实验报告 实验结论: - 发现调仓过于频繁 (405次/1549天) - No-Trade Region方案可提升年化3%、夏普0.11 - 但改善幅度有限,信号质量是根本瓶颈
118 lines
2.9 KiB
Markdown
118 lines
2.9 KiB
Markdown
# ETF 轮动策略深度诊断报告
|
||
|
||
生成时间: 2026-06-06 13:51:49
|
||
|
||
回测期间: 2020-01-10 ~ 2026-06-05
|
||
|
||
## 策略表现快照
|
||
|
||
| 指标 | 数值 |
|
||
|---|---|
|
||
| 累计收益 | +181.89% |
|
||
| 年化收益 | +18.36% |
|
||
| 最大回撤 | -16.36% |
|
||
| 夏普比率 | 1.02 |
|
||
| Calmar 比率 | 1.12 |
|
||
| 日胜率 | 54.0% |
|
||
| 调仓次数 | 405 |
|
||
|
||
## Task 1: 信号产生问题诊断
|
||
|
||
状态: OK | 耗时: 0.2s
|
||
|
||
### 诊断结论
|
||
- 调仓频率: 每 3.8 天一次,无效调仓率 43.0%
|
||
- 短期抖动事件: 141 次
|
||
- 债券持有占比: 32.9%
|
||
|
||
## Task 2: 收益计算问题诊断
|
||
|
||
状态: OK | 耗时: 0.1s
|
||
|
||
### 诊断结论
|
||
- 首日 NAV = 0.997823,存在轻微逻辑瑕疵
|
||
- 极端日共 7 次
|
||
|
||
## Task 3: 调仓逻辑问题诊断
|
||
|
||
状态: OK | 耗时: 0.1s
|
||
|
||
### 诊断结论
|
||
- 最小持仓期模拟结果:
|
||
- 1天: 年化=+19.93%, 回撤=-16.02%, 夏普=1.10
|
||
- 3天: 年化=+21.92%, 回撤=-15.68%, 夏普=1.19
|
||
- 5天: 年化=+22.85%, 回撤=-15.68%, 夏普=1.23
|
||
- 10天: 年化=+24.14%, 回撤=-15.42%, 夏普=1.29
|
||
|
||
## Task 4: 资金管理问题诊断
|
||
|
||
状态: OK | 耗时: 0.1s
|
||
|
||
### 诊断结论
|
||
- 止损机制可减少极端回撤,但频繁止损可能拖累长期收益
|
||
- 高波动期减仓有助于控制回撤
|
||
|
||
## Task 5: 整体收益归因分析
|
||
|
||
状态: OK | 耗时: 0.1s
|
||
|
||
### 诊断结论
|
||
- 收益依赖度: 最好5天贡献了 25.7% 的最终净值
|
||
|
||
## Task 6: 回撤诊断
|
||
|
||
状态: OK | 耗时: 0.1s
|
||
|
||
### 诊断结论
|
||
- 最大回撤 -16.36% 发生在 2022-05-10
|
||
- CVaR(5%): -2.6196%
|
||
- 最大连续亏损: 6 天
|
||
|
||
## 综合优化建议
|
||
|
||
### 优先级 P0(预期影响最大)
|
||
|
||
1. **降低调仓频率**
|
||
- 引入最小持仓期约束(建议 5 天起步)
|
||
- 在 `_generate_signals` 中加入 `min_hold_days` 检查
|
||
|
||
2. **启用溢价控制**
|
||
- 对 QDII ETF(NDX/N225/GDAXI/HSI/HSTECH)启用溢价过滤
|
||
- 建议 threshold=5%,避免高溢价买入
|
||
|
||
### 优先级 P1(显著改善回撤)
|
||
|
||
3. **组合级止损机制**
|
||
- 建议回撤 > 8% 时触发止损,转债券持有 10 天
|
||
|
||
4. **修复首日 NAV 逻辑**
|
||
- 首日 `current_holdings` 为空时不应计算收益
|
||
|
||
### 优先级 P2(提升风险调整收益)
|
||
|
||
5. **波动率加权配置**
|
||
- 替代等权,使用波动率倒数加权平衡风险贡献
|
||
|
||
6. **波动率适配仓位**
|
||
- 高波动期(滚动20日波动率 > 20%)减仓至 2/3
|
||
|
||
### 优先级 P3(进一步优化)
|
||
|
||
7. **评估分组机制**
|
||
- 对比取消分组 vs 当前分组的收益差异
|
||
|
||
8. **优化动态阈值**
|
||
- 调整 bond_ratio,测试不同阈值对防御效果的影响
|
||
|
||
|
||
## 执行统计
|
||
|
||
| Task | 状态 | 耗时 |
|
||
|---|---|---|
|
||
| Task 1: 信号产生问题诊断 | OK | 0.2s |
|
||
| Task 2: 收益计算问题诊断 | OK | 0.1s |
|
||
| Task 3: 调仓逻辑问题诊断 | OK | 0.1s |
|
||
| Task 4: 资金管理问题诊断 | OK | 0.1s |
|
||
| Task 5: 整体收益归因分析 | OK | 0.1s |
|
||
| Task 6: 回撤诊断 | OK | 0.1s |
|
||
| **总计** | | **0.6s** | |