ETF轮动优化:保留行业信号,控制整个组合的风险
两套原策略为什么不适合直接使用
线上52周高策略混有境内ETF、QDII、LOF及商品产品,历史池按当前流动性选择,早年小池与牛市使长区间数字偏乐观。按已公布的历史持仓,在本研究统一时段与成本下重新计价,回撤仍超过30%。纯行业NAV动量则集中在一个高波动行业,收益不足以补偿40%以上的回撤。
旧行业脚本的换仓日没有保留旧持仓隔夜收益,月间按日等权而非持仓自然漂移;成本只扣半个权重变化,漏算卖出腿。净值公告在非交易日时可能被重新索引丢弃,已复权NAV又被拆分调整,且信号日使用了当日公告值。本研究统一修复这些口径;使用公告后一交易日起可见的adj_nav,不再次缩放,净值年龄超过7天不买。所有新候选入池还需在信号日实际观察到200个有行情的交易日、20日平均成交额至少1000万元。
同一时段比较
| 策略 | 年化收益 | 最大回撤 | 夏普 | 年化波动 |
|---|---|---|---|---|
| 线上原策略历史持仓重估 | 7.95% | -33.07% | 0.566 | 15.71% |
| 纯行业NAV120轮动,同为下一收盘 | 14.31% | -45.77% | 0.542 | 37.97% |
| 固定50%沪深300+25%黄金+25%国债 | 9.64% | -18.95% | 0.915 | 10.69% |
| 改版:原39只行业ETF池 | 9.99% | -12.18% | 0.973 | 10.35% |
| 改版:历史行业ETF池 | 9.97% | -13.11% | 0.991 | 10.10% |
最终规则
- 权益池只用境内行业或主题股票ETF;排除QDII、海外、LOF、商品期货、宽基及债券。原池39只和历史池分别测试,历史候选485只,实际有足够缓存数据载入454只,其中22只已退市基金;最终候选没有买入这些退市基金,缺少清算数据没有进入其收益账本。
- 以当时已经公告且年龄不超过7天的复权NAV,计算120个交易日动量,每批选最高的一只。不加市场均线择时、折溢价预测或收益追逐阈值。
- 配置基准为权益50%、黄金ETF518880.SH 25%、5年期国债ETF511010.SH 25%。权益找不到合格产品时,其份额留现金;其他资产不替它加仓。50%指信号时的权益目标上限,月间持仓可以随市场自然漂移。
- 用最近60个交易日价格收益计算目标组合波动,只把仓位乘以min(1,10%÷估计波动),不能放大到杠杆仓位。10%是估计波动目标,不保证实盘波动、亏损或回撤不超过10%。
- 四个虚拟子组合最初各占资金四分之一,分别在每月第5、10、15、最后一个交易日收盘形成信号,下一个交易日收盘成交。子组合资金各自漂移,实际订单在同一账户合并,避免为每个小账户分别买一手国债ETF。
- 目标订单按100份离散化;单笔上限为前一交易日已知20日均成交额的1%。小于1000元或账户净值20bp的订单暂缓;容量不足部分保留现金或原持仓,到下一次计划换仓再评估。先卖后买,不能借钱补仓。
不是只在一个好年份或一个换仓日成立
| 阶段 | 年化收益 | 最大回撤 | 夏普 |
|---|---|---|---|
| 训练:2019—2021 | 15.46% | -7.46% | 1.436 |
| 验证:2022—2023 | -2.86% | -9.31% | -0.269 |
| 近期探索:2024年以来 | 14.33% | -7.97% | 1.340 |
2022—2023年仍会亏损,这个改版没有消除熊市风险。2024年以来的样本已在多轮旧研究中查看过,均标为近期探索,不能再称为未经触碰的样本外验证。去掉趋势过滤的选择依据包含训练、验证期改善及减少规则;实际未来效果需要冻结规则后的跟踪确认。
| 历史大池压力测试 | 年化收益 | 最大回撤 | 夏普 |
|---|---|---|---|
| 买卖各30bp | 9.43% | -13.70% | 0.942 |
| 买卖各50bp | 8.36% | -14.98% | 0.844 |
| 四批信号提前2日 | 9.24% | -15.43% | 0.930 |
| 四批信号提前5日 | 10.38% | -10.59% | 1.038 |
| 四批信号提前10日 | 10.10% | -13.27% | 1.003 |
| 权益配置40% | 10.73% | -12.27% | 1.072 |
| 权益配置60% | 9.27% | -13.64% | 0.922 |
| 波动目标8% | 8.04% | -10.58% | 0.985 |
| 波动目标12% | 11.54% | -15.58% | 0.983 |
10万、30万、100万元账户的执行近似
| 初始资金 | 年化收益 | 最大回撤 | 订单数 | 最大订单/20日均成交额 |
|---|---|---|---|---|
| 10万元 | 9.55% | -13.27% | 676 | 0.265% |
| 30万元 | 9.80% | -13.13% | 875 | 0.806% |
| 100万元 | 9.65% | -13.11% | 1022 | 1.000% |
买单严格为100份整数倍,费用为佣金max(5元,成交额0.03%)加0.17%滑点假设,容量只用前一日已知数据,断言现金不为负。派息与拆分通过交易所调整收益计价;本试验没有重建券商每笔分红到账日,因而属于离散订单近似。收盘价成交仍需要实际盘口、交易公告、停牌、涨跌停及基金IOPV或可见NAV检查,不能由日线回测保证。
轮动超额还没有被证明
简单50%沪深300、25%黄金、25%国债配置本身已经有效。最终改版相对它的成对60日区块重采样,年化差5%/50%/95%分位为-4.19/0.08/4.94个百分点,正差比例51.4%;区间跨过零。当前证据支持改善回撤与风险调整收益,尚不足以宣称稳定行业选股超额。主要收益的一部分来自黄金、债券分散和仓位缩减。
最新候选已更新到9月30日
所有39只权益产品的日线与净值均已补充到2026-09-30,独立缓存放在candidate_cache,不覆盖原研究样本。交易日历返回下一交易日为2026-10-08。以下是9月30日的新账户单个子组合信号,仅用于审阅;配置权重指该子组合内部,分四批投入时还需乘该子组合占全账户的比例。
| 代码 | 基金 | 单个虚拟子组合配置权重 |
|---|---|---|
| 159516.SZ | 国泰中证半导体材料设备主题ETF | 13.93% |
| 518880.SH | 华安易富黄金ETF | 6.96% |
| 511010.SH | 国泰上证5年期国债ETF | 6.96% |
单个子组合现金目标为72.14%。当前行情波动较大,波动目标把基准仓位压低,因此不能把50/25/25直接当成今天的下单比例。按当前单个子组合内部权重估算,10万元资金的5年国债目标金额不足该ETF一手,离散订单会把这部分留现金;分批投入时的金额更小。已有模拟账户的持仓与待更新子组合分别记录在candidate_latest.json;null表示本批没有新调仓指令,空列表才表示目标现金。
数据与使用边界
39只池有当前选池偏差;历史池同时包含上市、退市、发行状态,降低这类偏差,但缺少完整历史名称变更、公告日内时间和净值修订快照,不能声称所有数据偏差已消除。主结果截在境内缓存与线上缓存的共同末日2026-08-10。9月30日数据用于最新候选目标,不把后来补充的历史数据拿来重写主结果。价格收益以交易所pre_close处理份额折算,未逐笔重建现金分红结算。现金收益取零。历史最大回撤不是未来损失上限。
复现与检查
python3 my-app/public/reports/etf-practical-optimization-20261003/backtest.py python3 -m unittest discover -s research -p 'test_etf_practical_optimization.py' -v # 需要更新最新候选数据时(使用项目既有Tushare环境) python3 research/etf_practical_refresh_candidate.py
最终指标与压力测试 · 逐日收益 · 历史池逐日模型权重 · 每批信号与目标 · 10万元离散订单 · 数据与代码校验清单
核对资料
100份订单口径来自上交所ETF交易单位说明和深交所基金申报单位说明。交易价格与净值存在折溢价、流动性与冲击风险,可见上交所ETF风险说明。本报告的收益与风险数字均来自项目内实测。
复现入口 · 完整研究代码 · 运行依赖 · result.json压缩下载 · core_result.json压缩下载 · ablation.json压缩下载