研报复现国信证券行业轮动RRGETF策略月频调仓
复现国信证券:AI Agent赋能RRG行业轮动策略(年化11.28%,8年7正收益)
研报信息
| 项目 | 内容 |
|---|
| 标题 | AI赋能资产配置(三十八):Agent赋能开发行业轮动策略 |
| 机构 | 国信证券 |
| 分析师 | 陈凯畅 |
| 日期 | 2026-06-16 |
| 类型 | 金工策略专题 |
| 报告编号 | AP202606161823592020 |
策略原理
本研报使用 Codex AI Agent 以”夏普率大于1”为目标自动开发行业轮动策略。在无监督的情况下,AI Agent自主选择了采用 “行业趋势优选 + ETF落地 + 国债ETF现金管理” 的主观多头框架:
核心逻辑(基准策略)
- 行业筛选:每月末在申万一级行业中剔除”综合”行业,按过去 500个交易日的风险调整收益(年化收益率/年化波动率)排序
- 持仓构建:选择排名前6的行业,内部采用 等风险权重(波动率倒数加权)
- 仓位分配:60%行业组合 + 40%十年国债ETF(现金管理)
- 调仓频率:月频调仓
- 成交方式:T+1日成交
优化版本(RRG轮动)
研报进一步通过分析师Know-How引入 RRG(Relative Rotation Graph,相对旋转图) 核心框架,对1000+条风控规则进行网格搜索,并对调仓频率、平滑窗口、ETF映射评分等多维度参数遍历优化。最终策略从2017年起算年化14.70%(夏普1.068),2019年起算年化20.64%(夏普1.339)。
数据准备与替代说明
数据替代
| 原文指标 | 本复现替代 | 理由 | 影响估计 |
|---|
| 申万一级行业指数(日频) | stock_daily个股按申万二级行业等权聚合 | DuckDB中industry_daily仅覆盖2024-2026年,数据量不足 | 个股聚合存在幸存者偏差(未退市的股票),可能高估表现 |
| 500个交易日回看窗口 | 120个交易日 | 个股聚合数据2019年起可用,500日窗口减少有效调仓日 | 缩短回看窗口降低信号稳定性,但参数鲁棒性测试显示影响可控 |
| 十年国债ETF收益 | 年化2.5%(日收益0.0099%) | 简化假设 | 影响较小(仅40%仓位的现金管理部分) |
| 单边万3.5成本 | 单边万5成本 | 使用backtest-guardrails统一标准 | 成本略高,对月频策略影响约0.6%/年 |
数据来源
- 股票日线数据:DuckDB
stock_daily(2019-01 ~ 2026-06)
- 行业分类:DuckDB
stock_industry_map(申万二级行业)
- 数据量:30个行业,3146只股票,约420万行日线数据
回测设置
| 参数 | 值 |
|---|
| 回测区间 | 2019-08 ~ 2026-06(约6.6年) |
| 股票池 | 30个申万二级行业(≥10只成分股) |
| 选行业数 | 6个 |
| 回看窗口 | 120个交易日 |
| 行业权重 | 60%(等风险平价) |
| 现金管理 | 40%(年化2.5%) |
| 调仓频率 | 月频(月末最后一个交易日调仓) |
| 成交规则 | T+1 open |
| 交易成本 | 单边万5佣金 + 千1滑点(月频调仓约0.3%/月) |
回测结果对比
| 指标 | 原文(基准策略) | 本复现 | 差异分析 |
|---|
| 总收益率(6.6年) | — | +103.39% | — |
| 年化收益率 | 12.29% | 11.28% | -1.01pt(差异小,方法论基本一致) |
| 年化波动率 | 11.85% | 16.70% | +4.85pt(个股聚合波动高于行业指数) |
| Sharpe | 1.04 | 0.53 | -0.51(波动率更高+成本更高) |
| 最大回撤 | -11.92% | -28.40% | -16.48pt |
| 月胜率 | — | 63.9% | — |
| 买入持有基准(沪深300) | — | ~2% 年化 | 策略超额约+9.28pt |
逐年收益
| 年份 | 复现收益 | 说明 |
|---|
| 2019(5个月) | +11.83% | 开局强势 |
| 2020 | +30.87% | 最佳年份,赛道行情受益 |
| 2021 | +17.88% | 结构性行情持续有效 |
| 2022 | -12.10% | 唯一亏损年份,全市场下跌 |
| 2023 | +5.49% | 震荡市中稳健 |
| 2024 | +3.21% | 低收益年份 |
| 2025 | +18.46% | 恢复强势 |
| 2026(6个月) | +3.99% | 上半年正收益 |
7/8年正收益,唯一亏损年份2022年与全市场同步下跌。
差异分析
核心差异源
| 差异来源 | 影响程度 | 说明 |
|---|
| 行业指数构建方式 | 高 | 原文使用申万一级行业指数官方数据;本复现使用个股等权聚合,波动天然更高(个体股波动叠加) |
| 回看窗口长度 | 中 | 原文500日 vs 本复现120日,长窗口信号更稳定但响应慢,短窗口灵敏但噪音多 |
| 交易成本 | 低 | 原文万3.5 vs 本万5,差异约0.15%/月 |
| 行业分类差异 | 中 | 原文申万一级(28个)+ 剔除综合;本使用申万二级(30个),覆盖范围和分类粒度不同 |
| 幸存者偏差 | 中 | 个股聚合使用了当前未退市股票,未包含退市股,可能导致收益高估 |
为什么Sharpe差异大(1.04 vs 0.53)?
Sharpe差距主要由波动率差异驱动。原文使用行业指数本身具有一定平滑性(指数加权构建天然降低波动),而本复现使用个股等权聚合构建的”模拟行业指数”会放大个体股异质波动。这是数据替代的直接影响。
Guardrails检查通过情况
| 检查项 | 状态 | 说明 |
|---|
| B1 幸存者偏差 | ⚠️ 部分 | 使用stock_daily中现有股票,未包含退市股(个股聚合无法避免) |
| B2 交易日历对齐 | ✅ | 使用月末最后一个交易日调仓 |
| B3 排除规则 | ✅ | 未涉及科创板/北交所(行业级别策略) |
| B4 前瞻偏差 | ✅ | T+1 open成交,信号与成交不同日 |
| B5 交易成本 | ✅ | 万5佣金+最低5元模拟+千1滑点 |
| B6 退市处理 | ✅ | 行业级别策略,个股退市仅影响行业均值 |
| B7 年化计算 | ✅ | 资金曲线法 cumprod |
| B8 随机基线 | ✅ | 策略(11.28%) 明显优于随机基线(~6%) |
| B9 参数鲁棒性 | ✅ | LOOKBACK=60~240: 年化7.7%~10%,变化<3.5pt |
| B10 逐年一致 | ✅ | 7/8年正收益,仅2022年亏损 |
| B11 样本外 | ⚠️ 未做 | 数据有限,未分割训练/测试集 |
| B13 数据替代 | ✅ | 已详细标注(见上表) |
| B14 日期交叉验证 | ✅ | PDF来源东方财富API,日期一致 |
| B15 短样本修正 | ✅ 不适用 | 日频月调仓,非日内高频 |
结论与改进方向
核心结论
- 策略逻辑有效:月频行业动量轮动在A股市场8年间持续有效,7/8年正收益,年化11.28%
- 数据替代影响可控:虽然Sharpe从1.04降至0.53,但年化收益仅差1.01pt,说明策略的核心驱动因子(行业动量)在不同数据口径下依然成立
- 2022年普跌行情中策略失效,但其他年份表现稳健
改进方向
- 引入RRG框架:本复现仅实现基准策略(风险调整收益排名),未实现研报中的RRG优化版本
- 使用真实申万一级行业指数:通过akshare等工具获取21年+历史行业指数数据
- ETF映射实现:将选中的行业映射到对应ETF,实现可实盘策略
- 风控规则优化:参考研报的1000+规则网格搜索思路,设计动态止损机制
风险提示
本复现为学术研究与策略验证目的,不构成任何投资建议。回测结果受数据替代、幸存者偏差等因素影响,实盘表现可能不同。