Files
etf/docs/experiments/轮动策略改进版回测分析报告.md
aszerW 6308627f8c docs(experiments): 添加2001年收益深度分析章节
从四个维度分析2001年-41.1%收益的根因:

1. 策略原理层面:
   - 短期动量陷阱(25天窗口在长期下跌中产生噪音信号)
   - 分散化选股约束(必须从US/HK/EU/JP选Top3)
   - 空仓机制触发条件(所有标的动量<0才触发)

2. 信号分布分析:
   - 空仓31天(9.9%),部分生效但触发时机不理想
   - 股票持仓占比过高(NDX+HSI+GDAXI+N225≈167%)
   - 商品持仓不足(GC=F仅30.6%)

3. 大跌月份持仓分析:
   - 2月(-18%): HSI持仓87.5%,空仓仅8.3%
   - 3月(-18.2%): GC=F持仓57.7%,空仓19.2%

4. 宏观市场环境:
   - 互联网泡沫破裂(2000-2002)
   - 911事件冲击
   - 缺乏债券等防御资产

改进建议:
- 增加长期动量过滤(60/120天)
- 放松分散化约束
- 增加止损机制
- 回测起点后移至2005年
2026-05-16 20:57:40 +08:00

398 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ETF轮动策略改进版回测分析报告
## 策略改进说明
### 本次修改内容
本报告展示添加**空仓机制**和**大类冠军二次过滤**后的策略表现。
#### 核心改进
| 改进项 | 原逻辑 | 新逻辑 | 效果 |
|--------|--------|--------|------|
| **空仓机制** | target为空时继续持有current_held持仓惯性 | target为空时设置`current_held=''`清仓 | 避免负动量期间的持仓惯性亏损 |
| **大类冠军二次过滤** | 每大类选Top1后直接跨类排序 | 大类冠军必须>=min_score才入选得分不足跳过 | 组合中每个标的动量都达标 |
| **min_score配置化** | 固定值0.0 | 从config.yaml读取可动态调整 | 支持策略参数调优 |
#### 代码修改
1. **selectors.py** - `_apply_rebalance_control`函数:
- 添加else分支处理target为空的情况
- 设置`current_held=''`触发清仓
2. **selectors.py** - `_grouped_selection`函数:
- 大类冠军得分不足时跳过该大类
- 持仓数量动态调整最多select_num最少0
3. **strategy.py** - min_score参数
- 从配置文件读取,支持动态调整
4. **config.yaml** - 新增参数:
- `min_score: 0.0`(过滤负动量标的)
---
## 版本对比分析
### 总体指标对比
| 指标 | 原版(无空仓机制) | 改进版(空仓+二次过滤) | 改善幅度 |
|------|-------------------|----------------------|---------|
| **累计收益** | 11872.2% | **14580.5%** | +2708.3% (+22.9%) |
| **年化收益** | 23.2% | **25.2%** | +2.0% |
| **最大回撤** | -71.9% | **-61.1%** | +10.8% (回撤减少) |
| **空仓天数** | 4天 (0.05%) | **131天 (1.6%)** | +127天 |
| **回测区间** | 2000-01 ~ 2026-05 | 2000-01 ~ 2026-05 | 相同 |
### 关键年份对比
| 年份 | 原版年收益 | 改进版年收益 | 改善幅度 | 原版空仓 | 改进版空仓 |
|------|-----------|-------------|---------|---------|-----------|
| 2000 | -26.0% | **-8.3%** | +17.7% | 0天 | **77天 (24.8%)** |
| 2001 | -48.7% | **-41.1%** | +7.6% | 0天 | **31天 (9.9%)** |
| 2002 | -10.5% | **3.0%** | +13.5% | 0天 | **10天 (3.2%)** |
| 2008 | -36.2% | **-22.5%** | +13.7% | 0天 | 0天 |
| 2007 | 136.7% | **132.8%** | -3.9% | 0天 | 3天 |
### 决策说明
**min_score设置为0.0**,原因:
- 阈值选择比较"trick",难以确定最优值
- min_score=0.02虽能改善2001年回撤但2000年恶化空仓过多错过机会
- 保持简单稳健的策略更好,避免过度优化
- 空仓机制已能有效改善回撤(-71.9% → -61.1%
---
## 回测概况(改进版)
| 指标 | 值 |
|------|-----|
| **回测区间** | 2000-01-06 ~ 2026-05-15 |
| **总天数** | 8109天22.2年) |
| **累计收益** | 14580.46% |
| **年化收益** | 25.2% |
| **最大回撤** | -61.1% |
| **月胜率** | 63.0%199正/117负 |
| **空仓天数** | 131天1.6% |
---
## 年度收益汇总
| 年份 | 年收益率 | 正月数 | 负月数 | 月均收益 |
|------|---------|--------|--------|---------|
| 2000 | -8.3% | 5 | 6 | -0.7% |
| 2001 | **-41.1%** | 3 | 8 | -3.4% |
| 2002 | 3.0% | 5 | 6 | 0.2% |
| 2003 | 33.3% | 7 | 5 | 1.6% |
| 2004 | 45.8% | 8 | 4 | 2.4% |
| 2005 | 12.8% | 6 | 5 | 1.1% |
| 2006 | 29.9% | 7 | 3 | 2.5% |
| 2007 | **132.8%** | 10 | 1 | 11.1% |
| 2008 | **-22.5%** | 7 | 5 | -1.5% |
| 2009 | **70.3%** | 10 | 2 | 4.6% |
| 2010 | 12.3% | 7 | 5 | 0.9% |
| 2011 | 18.3% | 6 | 6 | 1.4% |
| 2012 | 27.3% | 6 | 6 | 1.6% |
| 2013 | 46.6% | 8 | 4 | 3.1% |
| 2014 | 15.8% | 9 | 3 | 1.3% |
| 2015 | 5.9% | 7 | 5 | 0.8% |
| 2016 | 5.7% | 8 | 4 | 0.6% |
| 2017 | 6.2% | 7 | 5 | 0.4% |
| 2018 | -6.7% | 5 | 7 | -0.8% |
| 2019 | 38.9% | 10 | 2 | 2.6% |
| 2020 | 27.6% | 7 | 5 | 2.8% |
| 2021 | 20.4% | 7 | 5 | 1.5% |
| 2022 | 27.7% | 9 | 3 | 1.9% |
| 2023 | 9.8% | 7 | 5 | 0.6% |
| 2024 | **82.1%** | 5 | 7 | 4.8% |
| 2025 | 35.5% | 8 | 4 | 2.9% |
| 2026* | 18.1% | 4 | 1 | 3.9% |
> *2026年数据截止5月15日
---
## 月度收益详细表格2000-2026
| 年份 | 年收益 | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
|------|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|------|------|------|
| 2000 | -8.3% | 3.8% | -1.9% | 8.6% | -8.4% | 7.7% | -1.6% | -2.5% | 3.7% | **-15.1%** | 3.7% | **-13.1%** | 3.7% |
| 2001 | **-41.1%** | 5.5% | **-18.0%** | **-18.2%** | 5.3% | -9.8% | -4.7% | 0.1% | -8.1% | -4.3% | -6.0% | 11.8% | -3.0% |
| 2002 | 3.0% | -1.9% | 5.5% | 11.4% | **-13.8%** | -2.2% | -6.4% | 6.6% | -1.4% | 0.8% | -4.8% | 7.4% | -0.2% |
| 2003 | 33.3% | -5.9% | -1.5% | **-11.6%** | 8.2% | 10.6% | 3.7% | 3.2% | 3.3% | -2.0% | 3.3% | -0.7% | 8.4% |
| 2004 | 45.8% | 6.2% | 10.5% | -1.1% | -3.8% | 4.0% | -1.4% | 3.3% | 5.1% | 0.8% | 1.2% | 7.2% | -2.6% |
| 2005 | 12.8% | -4.3% | 2.2% | 3.4% | -4.2% | -2.3% | 2.9% | 4.6% | 1.1% | -4.6% | -4.2% | 12.9% | 2.5% |
| 2006 | 29.9% | 4.2% | -6.8% | 3.0% | 17.7% | 7.0% | -1.7% | -5.8% | 2.4% | 1.9% | 3.7% | -0.8% | 3.2% |
| 2007 | **132.8%** | 10.3% | 7.5% | 11.9% | 15.7% | 11.5% | 1.9% | 8.0% | 9.7% | 3.0% | 8.7% | -5.3% | 7.9% |
| 2008 | **-22.5%** | -2.0% | 2.4% | -8.1% | 4.6% | 3.2% | 1.5% | -4.6% | -9.0% | 1.5% | **-15.8%** | 3.9% | 4.8% |
| 2009 | **70.3%** | -5.0% | 0.3% | 7.0% | 13.0% | 19.5% | 1.0% | 6.5% | 4.0% | 3.0% | 1.0% | 6.6% | -1.7% |
| 2010 | 12.3% | -8.5% | 0.6% | 5.9% | -3.1% | -1.7% | -1.0% | 6.0% | 2.3% | 4.9% | 4.8% | 0.7% | -0.2% |
| 2011 | 18.3% | -0.6% | -1.1% | 1.5% | 7.3% | -3.2% | 1.2% | 4.3% | 4.6% | -6.3% | 13.0% | -3.1% | -0.9% |
| 2012 | 27.3% | 3.9% | 5.4% | 3.4% | -3.5% | -6.5% | -0.7% | -0.5% | 6.3% | 7.6% | -0.1% | -0.5% | 4.6% |
| 2013 | 46.6% | 12.2% | -1.2% | 2.0% | 0.2% | 12.9% | -0.6% | 8.6% | -3.5% | 0.8% | 4.5% | 4.2% | -2.5% |
| 2014 | 15.8% | 1.2% | 3.6% | -4.7% | -5.2% | 5.7% | 2.7% | 1.2% | 1.9% | 2.8% | -1.7% | 5.0% | 2.6% |
| 2015 | 5.9% | 0.6% | 7.1% | 11.1% | 11.3% | 4.2% | **-13.3%** | -1.3% | -8.2% | -6.8% | 8.9% | 3.2% | -6.6% |
| 2016 | 5.7% | -6.5% | 0.6% | 6.8% | -4.3% | 0.2% | -5.7% | 1.9% | 2.2% | 1.1% | -3.4% | 10.8% | 4.0% |
| 2017 | 6.2% | -0.0% | 0.9% | -0.1% | -3.7% | 0.1% | -1.9% | 2.5% | 0.7% | 0.2% | 3.0% | 4.3% | -1.0% |
| 2018 | -6.7% | 8.4% | **-10.0%** | -0.2% | 0.4% | 0.4% | -2.0% | -2.5% | 2.4% | 5.2% | -5.2% | -2.7% | -4.3% |
| 2019 | 38.9% | 9.3% | 4.4% | 3.8% | 4.2% | -1.8% | 3.5% | 1.3% | 0.8% | 0.1% | 4.0% | -0.3% | 2.0% |
| 2020 | 27.6% | -3.6% | -2.8% | -6.8% | 12.7% | 9.1% | 6.5% | 8.6% | 0.7% | -3.3% | -2.4% | 6.9% | 7.5% |
| 2021 | 20.4% | 3.4% | 1.2% | -1.0% | 8.7% | 4.4% | 4.1% | -3.3% | 3.5% | -1.3% | 6.3% | -5.5% | -2.1% |
| 2022 | 27.7% | 4.5% | 4.9% | 3.9% | -6.1% | 6.2% | 9.7% | 2.3% | -3.1% | 2.1% | -9.6% | 7.3% | 0.7% |
| 2023 | 9.8% | 12.2% | -5.9% | 0.6% | -2.0% | 7.2% | 0.9% | 6.2% | -5.4% | 0.2% | -4.8% | -2.4% | 0.6% |
| 2024 | **82.1%** | -0.5% | 8.0% | -0.6% | -1.2% | 2.3% | -0.7% | -5.0% | 2.3% | **28.5%** | **30.3%** | -5.3% | -0.0% |
| 2025 | 35.5% | 4.4% | 10.1% | 1.6% | -0.3% | 5.6% | 6.6% | -6.5% | 15.7% | 13.2% | -9.1% | -7.0% | 0.9% |
| 2026 | 18.1% | -0.2% | 1.7% | 7.3% | 4.8% | 5.3% | - | - | - | - | - | - | - |
> 注:**粗体** 标注年收益超过50%或跌幅超过20%、月度跌幅超过10%或涨幅超过20%
---
## 空仓天数统计
### 总体空仓情况
| 指标 | 原版 | 改进版 |
|------|------|--------|
| 空仓总天数 | 4天 | **131天** |
| 空仓占比 | 0.05% | **1.6%** |
### 各年度空仓天数
| 年份 | 空仓天数 | 占比 |
|------|---------|------|
| 2000 | **77天** | **24.8%** |
| 2001 | **31天** | **9.9%** |
| 2002 | 10天 | 3.2% |
| 2003-2026 | 0天 | 0.0% |
> 空仓集中在2000-2002年主要因为互联网泡沫期间股票标的动量普遍为负
---
## 策略特点总结
### 优势
1. **长期收益稳定**年化25.2%26年周期
2. **分散配置**:跨市场、跨资产类别
3. **动量信号有效**:牛市捕捉上涨趋势
4. **空仓机制**:负动量期间自动清仓,避免持仓惯性亏损
5. **大类冠军过滤**:组合中每个标的动量达标,不强制持有弱正动量标的
### 弱点
1. **系统性风险暴露**:全球股灾时难以完全规避
2. **早期数据限制**2000-2005年标的池不足
3. **2001年回撤仍较大**-41.1%,短期动量陷阱问题未完全解决
---
## 2001年收益深度分析
### 问题描述
尽管添加了空仓机制和大类冠军二次过滤2001年收益仍为**-41.1%**,最大回撤**-51.6%**发生在10月19日。本节从策略原理、信号分布、标的表现和宏观市场四个维度分析根因。
---
### 1. 策略原理层面分析
#### 问题1短期动量陷阱
| 窗口参数 | 当前值 | 问题 |
|---------|--------|------|
| 动量窗口 | 25天 | 计算短期动量,无法识别长期趋势 |
**现象**
- 2001年互联网泡沫破裂纳指长期下跌趋势
- 但25天窗口内可能出现短期反弹动量得分>=0
- 例如2001年4月反弹+5.3%,策略短暂持有股票标的
**根因**:短期动量在长期下跌趋势中会产生"噪音信号",误判趋势反转。
#### 问题2分散化选股机制
| 参数 | 当前值 | 影响 |
|------|--------|------|
| diversified | true | 强制每大类选Top1持仓分散 |
**2001年数据覆盖度**
| 大类 | 标的 | 数据起始 |
|------|------|---------|
| US | NDX | 2000-01-03 |
| HK | HSI | 2000-01-02 |
| EU | GDAXI | 2000-01-02 |
| JP | N225 | 2000-01-03 |
| COMMODITY | GC=F, CL=F, HG=F | 2000-08-23 |
**问题**
- 股票大类有4个子类US/HK/EU/JP分散化策略会从中选Top3
- 即使商品动量更强,策略也必须持有部分股票标的
- 2001年缺乏A股、债券等防御性资产
#### 问题3空仓机制触发条件
| 条件 | 说明 | 2001年情况 |
|------|------|-----------|
| 所有标的动量<0 | trigger清仓 | 未完全触发 |
**根因**股票标的在某些时段动量>=0短期反弹空仓机制未触发。
---
### 2. 2001年信号分布分析
#### 总体统计
| 指标 | 数值 | 说明 |
|------|------|------|
| 总交易日 | 312天 | |
| 空仓天数 | **31天** | 9.9%,部分生效 |
| 持仓天数 | 281天 | |
#### 主要持仓分布
| 标的 | 持仓天数 | 占比 | 所属大类 |
|------|---------|------|---------|
| NDX | 142天 | 50.5% | US(美股) |
| HSI | 141天 | 50.2% | HK(港股) |
| GDAXI | 111天 | 39.5% | EU(欧洲) |
| GC=F | 86天 | 30.6% | COMMODITY |
| N225 | 75天 | 26.7% | JP(日本) |
**问题**股票标的持仓占比过高NDX+HSI+GDAXI+N225 ≈ 167%商品持仓不足GC=F仅30.6%)。
#### 各月持仓与收益详情
| 月份 | 收益 | 空仓天数 | 主要持仓 | 问题分析 |
|------|------|---------|---------|---------|
| 1月 | +5.5% | 0天 | HSI, NDX, GDAXI | 开年正收益 |
| **2月** | **-18.0%** | 2天 | HSI(87%), GDAXI, CL=F | 股票持仓主导,空仓不足 |
| **3月** | **-18.2%** | 5天 | GC=F(58%), NDX(50%) | 商品替代部分生效但仍持有NDX |
| 4月 | +5.3% | 0天 | N225, GDAXI, CL=F | 短期反弹 |
| 5月 | -9.8% | 0天 | HSI, NDX, N225 | 股票持仓 |
| 6月 | -4.7% | 7天 | GDAXI, NDX, GC=F | 空仓增加 |
| 7月 | +0.1% | **15天** | GC=F, NDX | 空仓最多,收益持平 |
| 8月 | -8.1% | 2天 | CL=F, GC=F, GDAXI | 商品持仓增加 |
| 9月 | -4.3% | 0天 | GC=F, GDAXI, HG=F | 911事件冲击 |
| 10月 | -6.0% | 0天 | GDAXI, N225, GC=F | 最大回撤月份 |
| 11月 | +11.8% | 0天 | NDX, GDAXI, HSI | 反弹 |
| 12月 | -3.0% | 0天 | HSI, NDX, HG=F | 年末下跌 |
**关键发现**
- 2月、3月大跌时空仓仅2-5天不足以规避风险
- 7月空仓最多15天收益持平+0.1%
- 空仓机制部分生效,但触发时机不理想
---
### 3. 大跌月份持仓分析
#### 2月-18.0%)持仓
| 标的 | 持仓天数 | 占比 |
|------|---------|------|
| HSI | 21天 | **87.5%** |
| GDAXI | 12天 | 50.0% |
| CL=F | 12天 | 50.0% |
| NDX | 10天 | 41.7% |
| 空仓 | 2天 | **8.3%** |
**问题**
- HSI持仓占比87.5%,过度集中于港股
- 空仓仅8.3%,无法规避系统性下跌
- 股票标的动量得分在部分时段>=0被选中
#### 3月-18.2%)持仓
| 标的 | 持仓天数 | 占比 |
|------|---------|------|
| GC=F | 15天 | **57.7%** |
| NDX | 13天 | 50.0% |
| N225 | 4天 | 15.4% |
| 空仓 | 5天 | **19.2%** |
**改善**
- 黄金(GC=F)持仓增加至57.7%
- 空仓天数增加至19.2%
- 但NDX仍持有50%,拖累收益
---
### 4. 宏观市场环境分析
#### 2001年市场背景
| 事件 | 时间 | 影响 |
|------|------|------|
| 互联网泡沫破裂 | 2000-2002持续 | 纳指下跌约-40% |
| 911恐怖袭击 | 2001-09-11 | 全球股市冲击 |
| 全球经济衰退 | 2001年 | 各市场普遍下跌 |
#### 各标的年度表现估算
| 标的 | 估算年收益 | 说明 |
|------|-----------|------|
| NDX | -40%~-50% | 纳指泡沫破裂主跌 |
| HSI | -20%~-30% | 港股跟随下跌 |
| GDAXI | -20%~-25% | 德国股市 |
| N225 | -15%~-25% | 日本股市 |
| GC=F | +5%~+10% | 黄金避险资产 |
#### 策略应对局限
| 局限 | 说明 |
|------|------|
| 商品数据限制 | GC=F从2000年8月开始2001年数据仅1年 |
| 缺乏债券 | 债券指数未上市,无法切换防御 |
| 分散化约束 | 必须持有多个大类,无法全仓黄金 |
---
### 5. 根因总结
| 根因 | 具体表现 | 改进方向 |
|------|---------|---------|
| **短期动量陷阱** | 25天动量在长期下跌中产生噪音信号 | 增加长期动量过滤60/120天 |
| **分散化选股约束** | 必须从US/HK/EU/JP选Top3强制持有股票 | 放松分散化约束或增加防御大类 |
| **数据覆盖度不足** | 2001年缺乏A股、债券等防御资产 | 回测起点后移至2005年 |
| **空仓触发条件** | 所有标的动量<0才触发部分时段未满足 | 增加持仓止损机制 |
---
### 6. 改进建议
#### 策略层面
1. **增加长期动量过滤**标的需满足60天动量>=0才入选
2. **放松分散化约束**:大类冠军得分不足时跳过,不强制持有
3. **增加止损机制**:持仓跌幅超-5%触发止损
#### 回测层面
1. **调整回测起点**从2000年改为2005年债券指数上市
2. **增加防御大类**添加债券、REITs等防御性资产
3. **数据覆盖度验证**:回测前验证标的数据完整性
---
## 数据文件
- 月度收益详细数据: `results/rotation_improved_monthly_returns.csv`
- 净值曲线: `results/rotation_improved_nav.csv`
- 调仓信号: `results/rotation_improved_signals.csv`
---
## Git提交记录
```
a475e1b feat(strategy): 分组选股增强-大类冠军二次过滤确保组合动量达标
```
修改文件:
- `strategies/shared/signals/selectors.py`
- `strategies/rotation/strategy.py`
- `strategies/rotation/config.yaml`