从30倍到47倍:给小市值装上ETF引擎后
作为一个量化小白花了不少篇幅拆解了社区大佬的小市值策略——五道风控防线、九项年报排雷、动态持仓调节……拆完之后我有一个很直观的感受这套策略的内核是活得久靠的是极致风控 小市值弹性。但最近两个月盯盘下来我发现一个问题ETF行情太好了。纳指ETF、黄金ETF、港股互联网ETF……这些标的动辄月涨10%而且波动远小于小市值个股。我手里的小市值策略虽然在A股震荡行情里能吃到肉但碰到「市场整体偏弱、ETF板块性行情轮动」的阶段就会显得力不从心——小市值在休息ETF在狂飙两边接不上。于是我开始在社区里大量翻阅ETF轮动相关的帖子和策略学习各位大佬的思路。看了十几篇帖子之后我萌生了一个想法能不能把小市值和ETF轮动组合起来搞一个双核引擎说实话ETF轮动这块我是完完全全的新手。下面文章里涉及的ETF池子构建、动量打分、滤波器选择等都是我在社区里反复学习、参考了多位大佬的策略和文章后慢慢拼凑理解出来的。如果有理解不到位的地方还请各位前辈多多指教?小市值负责在A股弹性行情里捕捉超额ETF轮动负责在板块行情里追趋势。两个引擎交替发力互相补位——我给它起了个名字「双龙出海」。一、为什么要加ETF先看数据说话单跑小市值策略5年30倍年化收益极高但有一个问题回撤集中在大盘系统性下跌的阶段。当大盘暴跌时小市值股票的跌幅往往比大盘还狠。而ETF轮动策略有一个天然优势它可以在全球资产中切换。A股不行就切港股ETF港股不行就切纳指ETF纳指也不行就直接买货币基金银华日利 511880躺平。加上ETF之后效果怎么样我跑了2021年至今的回测结果直接把我看傻了5年47倍年化112%最大回撤才15.5%——对比上一篇纯小市值的5年30倍17回撤收益从30倍提升到47倍回撤反而从17%降到了15.5%。说白了就是加了ETF引擎之后不仅赚得更多了还更稳了。这不就是既要又要的最佳答案么核心逻辑小市值是矛ETF轮动是盾——双核协同攻守兼备。二、架构设计两个子账户各管各的双核策略的架构其实不复杂核心就是子账户隔离聚宽提供了 set_subportfolios 的功能可以把一个账户拆成两个独立子账户各自有独立的持仓和资金互不干扰这样做的好处是策略之间完全隔离小市值止损不会影响ETF持仓反之亦然资金分配清晰各占50%不会出现一边吃掉另一边资金的情况独立记录收益可以分别看两个策略各自的表现方便归因分析三、ETF轮动引擎拆解站在大佬肩膀上小市值部分的逻辑我在上一篇已经拆过了这里重点讲ETF轮动部分。先说声感谢ETF轮动这块我参考了社区里很多大佬的策略和思路包括ETF池子的构建方式、动量打分的数学方法、震荡期切换机制等。我做的更多是「学习→理解→整合」的工作算不上什么原创更像是一个学习笔记。如果哪位大佬看到觉得某个模块眼熟那大概率就是从您那学来的?3.1 ETF池子固定池 动态池双池合并ETF轮动的第一个难题是从哪些ETF里选我学习到的一个很聪明的做法——固定池 动态池合并固定池108只手工精选的优质ETF覆盖黄金、白银、纳指、恒生、各行业板块等动态池全市场扫描每天从全市场ETF中自动筛选流动性达标的头部标的去重后取行业最强的那一只关键过滤逻辑剔除宽基指数ETF沪深300、中证500等——这些不是行业轮动标的剔除债券/货币类ETF短融、国债、可转债等——这些不是趋势标的流动性门槛日均成交额低于全市场ETF均值/20000的直接淘汰行业去重同行业多只ETF时只保留成交额最高的那一只最终合并出约100-150只ETF的作战池。3.2 动量打分拉普拉斯滤波 高斯滤波ETF轮动最核心的问题是怎么判断哪只ETF最强策略用的是加权线性回归 数学滤波器的组合方案动量得分计算25日回看1. 对收盘价取对数2. 用加权最小二乘法拟合趋势线近期数据权重更高3. 斜率年化 → 年化收益率4. 计算R²拟合优度→ 趋势稳定度5. 动量得分 年化收益率 × R²说人话就是涨得快还涨得稳的ETF得分最高。但这还不够。策略额外加了两层数学滤波器用来判断该不该现在买正常行情用拉普拉斯灵敏一点抓趋势震荡行情切高斯保守一点少挨打。两个滤波器自动切换这个设计很巧妙。3.3 震荡期自动切换市场的红绿灯策略有一套完整的红绿灯机制来判断当前是正常期还是震荡期进入震荡期亮红灯——满足任一条件●沪深300的乖离率BIAS 8%涨太多了有回调风险●RSI从70以上回落到65以下超买后开始回落●当天触发了止损市场可能在变差退出震荡期亮绿灯——满足任一条件●从近20日低点反弹超过4%●回撤收窄 多个复苏信号连续出现●震荡期持续超过20个交易日强制退出不能永远观望还有一个冷却期设计每次红绿灯切换后3个交易日内不允许再次切换防止频繁反复。3.4 多层过滤漏斗从作战池到最终买入要过七道关100只ETF→ 动量得分过滤0 ≤ 得分 ≤ 5→ R²过滤 0.4趋势不稳的排除→ 成交量过滤量比 1.8异常放量的排除→ 短期风控近3天没有单日跌 3%→ 溢价率过滤可选防止QDII高溢价陷阱→ 动态滤波过滤正常期/震荡期分别用不同滤波器→ 最终只选1只没错最终只持有1只ETF。这是一个非常激进但也非常纯粹的设计——全仓轮动不分散。因为分散在ETF轮动里反而是稀释收益不如集中火力追最强的那个。3.5 分钟级止损最后的保险丝ETF策略还有一个分钟级的止损机制every_bar 频率运行固定止损当前价格跌破成本价的95%时立刻卖出日内跌幅止损可选如果当天相对昨收跌超过5%也立刻卖出触发止损后会标记 stop_loss_triggered_today在午后13:10的检查中自动触发进入震荡期——止损不仅是保护本金还会触发策略整体进入防守姿态。四、双核协同的几个关键细节4.1 资金分配当前是简单的50:50平分。但我在想未来可以根据市场状态动态调整——比如A股弹性好的时候多给小市值ETF板块轮动强的时候多给ETF。这是一个可以继续优化的方向。4.2 独立收益记录策略每日收盘后会分别记录两个子策略的累计收益率方便做归因分析。用 record() 函数输出到回测图表上可以直观看到两条收益曲线。4.3 滑点和佣金的差异化设置很多人忽略的一个细节——股票和ETF的交易成本是不一样的ETF的交易成本天然比股票低很多这也是ETF轮动策略能频繁调仓的基础。五、一个小白的学习感悟1.不要只盯一个赛道。小市值再好碰到风格切换也会歇菜。加一个ETF轮动引擎相当于给自己多开了一个全球化的战场。2.站在巨人肩膀上学得更快。ETF轮动这一整套逻辑如果让我从零开始写可能半年都写不出来。但社区里有那么多大佬无私分享代码和思路我做的只是把不同的模块学懂、拼到一起。聚宽社区的开源氛围真的很好感谢每一位分享策略的前辈。3.数学滤波器很有意思。拉普拉斯、高斯这些信号处理领域的工具用到金融数据上效果很好。作为小白第一次接触这些概念说实话还没有完全吃透后面还要继续啃论文和代码。4.震荡期切换是ETF轮动的灵魂。没有这个机制ETF轮动在震荡行情里会被反复打脸。有了红绿灯冷却期策略才能在追趋势和认怂之间优雅切换。5.子账户隔离是个好设计。让两个策略各管各的不争抢资金不相互干扰。简单粗暴但有效。最后还是那句话风控是一切的基础。不管是小市值的五道防线还是ETF的分钟级止损核心都是同一个信仰——先活着再赚钱。六、实战检验说得再好不如跑起来看。我已经把这套「小市值ETF轮动_双龙出海」策略上传到了9db量化竞技场用真实模拟盘每天跑。欢迎围观、拍砖。在9db上可以看到每天的交易记录、持仓变化、收益曲线。比回测更真实因为是每天实时跑的——好不好跑几周就知道了。也欢迎大家去看看其他大佬的策略表现和自己的策略做个对比。量化这条路闭门造车不如多看多学。作为一个刚入门的量化小白文中很多理解可能不够深入甚至有偏差欢迎各位大佬在评论区指正。也特别感谢社区里那些无私分享策略和思路的前辈们没有你们的开源精神就没有这篇学习笔记。免责声明以上内容仅为个人学习记录不构成任何投资建议。股市有风险投资需谨慎。