本篇为前一轮回撤优化研究。后续按20%年化与25%—30%回撤预算开展的研究见ETF轮动20%年化目标报告。

2026年10月3日研究|主回测2019-01-02至2026-08-10|最新候选行情与净值截至2026-09-30

ETF轮动优化:保留行业信号,控制整个组合的风险

最终保留:120日已公告复权NAV动量,每批选一只境内行业ETF;配置基准为50%行业权益、25%黄金、25%5年期国债,按10%年化波动目标缩减组合,不加杠杆,余款留现金。四个虚拟子组合分批更新,在一个证券账户中净额执行。删除效果不稳定的额外趋势过滤。历史大池版年化9.97%、最大回撤-13.11%、夏普0.991。这是研究候选;线上策略与历史台账尚未切换。

两套原策略为什么不适合直接使用

线上52周高策略混有境内ETF、QDII、LOF及商品产品,历史池按当前流动性选择,早年小池与牛市使长区间数字偏乐观。按已公布的历史持仓,在本研究统一时段与成本下重新计价,回撤仍超过30%。纯行业NAV动量则集中在一个高波动行业,收益不足以补偿40%以上的回撤。

旧行业脚本的换仓日没有保留旧持仓隔夜收益,月间按日等权而非持仓自然漂移;成本只扣半个权重变化,漏算卖出腿。净值公告在非交易日时可能被重新索引丢弃,已复权NAV又被拆分调整,且信号日使用了当日公告值。本研究统一修复这些口径;使用公告后一交易日起可见的adj_nav,不再次缩放,净值年龄超过7天不买。所有新候选入池还需在信号日实际观察到200个有行情的交易日、20日平均成交额至少1000万元。

同一时段比较

策略年化收益最大回撤夏普年化波动
线上原策略历史持仓重估7.95%-33.07%0.56615.71%
纯行业NAV120轮动,同为下一收盘14.31%-45.77%0.54237.97%
固定50%沪深300+25%黄金+25%国债9.64%-18.95%0.91510.69%
改版:原39只行业ETF池9.99%-12.18%0.97310.35%
改版:历史行业ETF池9.97%-13.11%0.99110.10%

1,844个交易日,按244日年化,现金利率为零,买入与卖出各计0.2%。各策略从同一天新建账户,使用该日前最近已知计划信号建仓,不计开始日前的收益。线上原策略对照来自冻结的已公布历史选股结果,保留原池与原溢价筛选的选股结果,只修正持仓漂移和成本;这些历史选股是回测记录,不能解释为真实券商成交。纯行业对照与改版同用下一交易日收盘成交。

ETF策略净值与回撤比较

最终规则

  1. 权益池只用境内行业或主题股票ETF;排除QDII、海外、LOF、商品期货、宽基及债券。原池39只和历史池分别测试,历史候选485只,实际有足够缓存数据载入454只,其中22只已退市基金;最终候选没有买入这些退市基金,缺少清算数据没有进入其收益账本。
  2. 以当时已经公告且年龄不超过7天的复权NAV,计算120个交易日动量,每批选最高的一只。不加市场均线择时、折溢价预测或收益追逐阈值。
  3. 配置基准为权益50%、黄金ETF518880.SH 25%、5年期国债ETF511010.SH 25%。权益找不到合格产品时,其份额留现金;其他资产不替它加仓。50%指信号时的权益目标上限,月间持仓可以随市场自然漂移。
  4. 用最近60个交易日价格收益计算目标组合波动,只把仓位乘以min(1,10%÷估计波动),不能放大到杠杆仓位。10%是估计波动目标,不保证实盘波动、亏损或回撤不超过10%。
  5. 四个虚拟子组合最初各占资金四分之一,分别在每月第5、10、15、最后一个交易日收盘形成信号,下一个交易日收盘成交。子组合资金各自漂移,实际订单在同一账户合并,避免为每个小账户分别买一手国债ETF。
  6. 目标订单按100份离散化;单笔上限为前一交易日已知20日均成交额的1%。小于1000元或账户净值20bp的订单暂缓;容量不足部分保留现金或原持仓,到下一次计划换仓再评估。先卖后买,不能借钱补仓。

不是只在一个好年份或一个换仓日成立

阶段年化收益最大回撤夏普
训练:2019—202115.46%-7.46%1.436
验证:2022—2023-2.86%-9.31%-0.269
近期探索:2024年以来14.33%-7.97%1.340

2022—2023年仍会亏损,这个改版没有消除熊市风险。2024年以来的样本已在多轮旧研究中查看过,均标为近期探索,不能再称为未经触碰的样本外验证。去掉趋势过滤的选择依据包含训练、验证期改善及减少规则;实际未来效果需要冻结规则后的跟踪确认。

历史大池压力测试年化收益最大回撤夏普
买卖各30bp9.43%-13.70%0.942
买卖各50bp8.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

调仓日扰动会将四批分别提前,若跨过月首则截在月首。保留50%权益与10%波动目标,采用中间参数;没有改用事后最高收益的权重、波动或日期。

10万、30万、100万元账户的执行近似

初始资金年化收益最大回撤订单数最大订单/20日均成交额
10万元9.55%-13.27%6760.265%
30万元9.80%-13.13%8750.806%
100万元9.65%-13.11%10221.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国泰中证半导体材料设备主题ETF13.93%
518880.SH华安易富黄金ETF6.96%
511010.SH国泰上证5年期国债ETF6.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万元离散订单 · 数据与代码校验清单

12项账本与边界测试已通过,覆盖隔夜收益、双边费用、缺报价延后、上市退市、新基金历史长度、过期NAV、缺流动性、禁止杠杆、不足持仓留现金和以已知信号初始化账户。研究产物保持独立,不修改原线上策略或只增不改台账。

核对资料

100份订单口径来自上交所ETF交易单位说明和深交所基金申报单位说明。交易价格与净值存在折溢价、流动性与冲击风险,可见上交所ETF风险说明。本报告的收益与风险数字均来自项目内实测。

复现入口 · 完整研究代码 · 运行依赖 · result.json压缩下载 · core_result.json压缩下载 · ablation.json压缩下载

在cb-allotment仓库原目录运行复现入口,使用已冻结本地行情缓存;代码下载不包含原始行情。一次性研究报告,数据时点以正文为准。