从四个维度分析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年
15 KiB
15 KiB
ETF轮动策略改进版回测分析报告
策略改进说明
本次修改内容
本报告展示添加空仓机制和大类冠军二次过滤后的策略表现。
核心改进
| 改进项 | 原逻辑 | 新逻辑 | 效果 |
|---|---|---|---|
| 空仓机制 | target为空时继续持有current_held(持仓惯性) | target为空时设置current_held=''清仓 |
避免负动量期间的持仓惯性亏损 |
| 大类冠军二次过滤 | 每大类选Top1后直接跨类排序 | 大类冠军必须>=min_score才入选,得分不足跳过 | 组合中每个标的动量都达标 |
| min_score配置化 | 固定值0.0 | 从config.yaml读取,可动态调整 | 支持策略参数调优 |
代码修改
-
selectors.py -
_apply_rebalance_control函数:- 添加else分支处理target为空的情况
- 设置
current_held=''触发清仓
-
selectors.py -
_grouped_selection函数:- 大类冠军得分不足时跳过该大类
- 持仓数量动态调整(最多select_num,最少0)
-
strategy.py - min_score参数:
- 从配置文件读取,支持动态调整
-
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年,主要因为互联网泡沫期间股票标的动量普遍为负
策略特点总结
优势
- 长期收益稳定:年化25.2%,26年周期
- 分散配置:跨市场、跨资产类别
- 动量信号有效:牛市捕捉上涨趋势
- 空仓机制:负动量期间自动清仓,避免持仓惯性亏损
- 大类冠军过滤:组合中每个标的动量达标,不强制持有弱正动量标的
弱点
- 系统性风险暴露:全球股灾时难以完全规避
- 早期数据限制:2000-2005年标的池不足
- 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. 改进建议
策略层面
- 增加长期动量过滤:标的需满足60天动量>=0才入选
- 放松分散化约束:大类冠军得分不足时跳过,不强制持有
- 增加止损机制:持仓跌幅超-5%触发止损
回测层面
- 调整回测起点:从2000年改为2005年(债券指数上市)
- 增加防御大类:添加债券、REITs等防御性资产
- 数据覆盖度验证:回测前验证标的数据完整性
数据文件
- 月度收益详细数据:
results/rotation_improved_monthly_returns.csv - 净值曲线:
results/rotation_improved_nav.csv - 调仓信号:
results/rotation_improved_signals.csv
Git提交记录
a475e1b feat(strategy): 分组选股增强-大类冠军二次过滤确保组合动量达标
修改文件:
strategies/shared/signals/selectors.pystrategies/rotation/strategy.pystrategies/rotation/config.yaml