聚宽精品-带“搅屎棍”轮动策略,年化54%?这个量化策略7年狂赚,但看完源码我直接慌了...

145 阅读6分钟

今天拿到一个聚宽上的策略源码(原策略名不雅致,想知道的请看图),回测7年年化54%,最大回撤不到29%,夏普2.27,胜率66.6%。
乍一看,底子不错呀,这特么是印钞机啊!
但当我一行行读完代码,后背有点发凉——这策略的“骚操作”背后,藏着一个绝大多数人注意不到的“坑”。
今天咱们就把它扒干净,看看这到底是神策,还是包装精美的韭菜收割机。


🎯 核心结论

一句话毒舌评价:
这是一个典型的“动量+行业轮动+高ROE微盘股”复合策略,回测漂亮得像假的一样,但在实盘中,风险在震荡市,或在流动性危机里。

【关键指标卡片】

核心指标数据表现老司机点评
年化收益54.29%🚨看着极爽,但实盘打个6折就不错了
最大回撤28.96%📉对于这个收益率来说,回撤控制得其实相当好
夏普比率2.271🏆绝对的顶级水平,资金曲线极其平滑
胜率66.6%🎲相当高,每交易3次能赚2次
策略类型风格轮动+小微盘⚔️吃尽了过去几年小盘股的红利

其他指标:


🧐 策略逻辑大白话

很多新手看这几百行代码会晕,我给你贴一段最核心的、也是这个策略最“骚”的灵魂代码:

JSG = {'银行I', '有色金属I', '钢铁I', '煤炭I'}
# ... (中间省略) ...
if ('银行I' in I_replaced or '煤炭I' in I_replaced ...) and judge_market_env(context) == '存量':
    return[]  # 直接空仓保平安!

看不懂代码没关系,如果不拽量化名词,这个策略在干嘛? 想象市场是一个大赌场,策略把所有股票分成了三拨人:

  • 搅屎棍组(JSG):银行、煤炭、钢铁这种大块头防守板块。
  • 小猴子组(XSZ):市值极小、但巨能赚钱(高ROE)的微盘股。
  • 科技宅组(CYB):创业板。

它的买卖逻辑粗暴得惊人:

  1. 如果大盘没钱了(成交量萎缩),且“搅屎棍”在暴涨:说明大资金在抱团避险,市场要跌!策略二话不说,直接清仓跑路,一分钱不玩!
  2. 如果“小猴子”长得最快:去全市场挑10只盈利能力最强、市值最小的股票满仓干。
  3. 赚了怎么卖? 每周一早上9点半调仓。但如果手里的股票昨天涨停了,就死拿!直到今天下午2点发现涨停板被砸开了,才果断落袋为安。

看懂了吗?
这其实是一个**“追强弃弱”的动量策略**,只不过动量不是用在个股上,而是用在行业板块上。然后用小市值来增强收益,因为小市值长期有超额收益。

策略有很多值得学习的地方,但也要警惕不易发觉的坑。

⚠️ 深度拆解与避坑

亮点:这策略最聪明的地方在哪?

  1. 行业轮动逻辑清晰:用“站上20日线的个股比例”来刻画行业强度,比单纯看行业指数更灵敏,也避免了被少数龙头股绑架。
  2. 分组比较+动态调整:把行业分成四组,而不是在所有行业中选最强,这样做可以防止策略永远集中在某几个行业(比如永远买消费医药),增加了适应性。
  3. 涨停板处理:能识别涨停后炸板的情况并及时卖出,这对A股这种喜欢玩涨停板的生态来说,是个非常实用的风控细节。

致命弱点:这策略在什么行情下会死?

1. 震荡市里反复打脸
动量策略的天敌就是震荡。如果一个行业今天强明天弱,策略就会频繁换股,来回吃耳光。虽然回测里最大回撤只有28%,但那是7年的整体表现,如果单独看某一年,很可能超过40%。不信你可以拉出2016-2017年的数据跑一下,那段震荡市小市值跌成狗,这个策略也不会好过。

2. 小市值因子失效时
这个策略本质上是把小市值当“基底”的。你看,除了特定情况,它绝大多数时候都在买小市值。但小市值因子在A股已经强了很多年,未来会不会失效?会不会像美股那样,小盘股长期跑输大盘?这谁也不敢打包票。

3. 存量市场里“搅屎棍”坑人
代码里有一段很骚的“搅屎棍”逻辑:如果银行、煤炭这些大家伙强势,它会去判断市场是“存量”还是“增量”。判断依据是两市成交额均线变化和银行股表现。如果判定为存量市场,且这些大家伙太猛(比例>90%),它会直接空仓!
这逻辑本身没问题,但问题是它的存量判断靠谱吗?如果判断错了,就会踏空行情,就比如现在的行情。而且,这段代码只在“搅屎棍”组被选中的时候才执行,其他组并不会被存量逻辑限制。也就是说,如果市场是存量,但小市值组很强,它还是会冲进去——这可能会在资金面不足时导致小市值补跌。

4. 过拟合的痕迹
策略里有很多硬编码的数字:比如选股只选10只,行业组划分,财务阈值(ROA>0.15)等。这些数字很可能是在回测中调出来的最优参数,换一个时间段可能就不灵了。尤其是那个“搅屎棍组比例>90%才启动特殊模式”,90%这个阈值太绝对,可能就是为了拟合某段行情。

实盘建议:你敢直接用吗?

我的结论:不敢直接实盘,但可以阉割后小仓位测试。

如果要实盘,我会做三处修改:

  1. 参数平滑:把90%这种硬阈值改为动态阈值,比如用过去N天的分位数来决定何时切换模式。
  2. 增加风控:加入全市场估值水位线,当全市场PE过高时,降低仓位或者转投债券,避免在小市值泡沫破裂时硬扛。
  3. 分散更多行业:不要只押注最强的一组,可以买前两组,降低集中度风险。

另外,这个策略的换手率肯定不低(每周调仓),加上滑点和冲击成本,回测里的0.03%佣金可能hold不住。建议用更真实的滑点(比如0.1%)重新跑一遍,看看收益还剩多少。 #量化交易 #量化策略 #程序化交易


🎁 源码获取

这个策略的完整代码我已经整理好了,包含详细的注释和参数说明,方便你在聚宽或其他平台回测。
关注公众号【量化学习实战笔记】,后台回复“轮动91”即可获取。


免责声明:本账号所有量化策略和量化技术仅作技术交流和量化思路分享,不构成任何投资建议,据此操作风险自负,本人不承担任何直接或间接责任。市场有风险,入市需谨慎。