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

15 KiB
Raw Blame History

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