从一个小白的视角,拆解一套5年30倍的小市值策略

用户头像sh_***174w0d
2026-06-01 发布

最近在聚宽社区看到 Mean.Saint 老师分享的小市值策略,回测5年收益30倍、最大回撤仅17%,这个数据震撼到我了。于是我花了整整两个周末,逐行拆读了这份将近1200行的代码。今天把我的学习笔记分享出来,希望能帮到和我一样正在入门的朋友。


一、第一眼:这不只是一个选股策略

刚打开代码的时候,我以为小市值策略就是"选市值最小的股票买入"。但读完之后我才发现,选股只占了整个策略的20%,剩下80%全是风控

这是我学到的第一个认知:好的量化策略,不是"怎么赚更多",而是"怎么少亏"。

策略的整体架构大致是这样的:

每周二执行:
  1. 早盘 9:05  → 预处理(一致性检查、昨日涨停记录)
  2. 早盘 9:31  → 顶背离检测
  3. 早盘 9:40  → 卖出不在目标列表的持仓
  4. 早盘 9:45  → 买入新的目标股票
  5. 盘中 10:00 → 止盈止损检查
  6. 盘中 10:30 → ATR止损价更新 + 放量换手检测
  7. 尾盘 14:00 → 涨停打开检测 + ATR再次更新
  8. 尾盘 14:50 → 成交额宽度防御检查

看到这个时间表的时候,我第一次意识到:一个成熟策略,是在盘中不断"巡检"的,而不是开盘买了就不管了


二、选股模块:三代进化,越来越"讲究"

策略提供了三个版本的选股逻辑(v1/v2/v3),默认使用 v3。我逐个读了一遍,能清晰看到作者的思路演变:

v1 — 最朴素的想法

从中证1000成份股里选流通市值最小的50只,再按总市值排序取前30只,最后做行业分散(每个二级行业只选1只)。

我的理解:v1的核心思想很简单——"买最小的,但别都买同一个行业"。

v2 — 加入了财务门槛

在v1基础上增加了ROE>15%、ROA>10%、归母净利润>0、营业收入>1亿等条件,并且限制股价≤20元。

我的理解:开始有"排雷"意识了,不再是无脑买最小的,而是要求公司"真的在赚钱"。

v3 — 终极版本

v3最大的亮点是引入了一个九项年报排雷系统apply_nine_point_audit),我觉得这是整个策略里最值得学习的模块之一。它会检查:

排雷项 检查内容 踩雷扣分
1 年报是否晚于4月20日才披露 +1
2 业绩预告是否预减/亏损 +1
3 审计意见是否非标(直接剔除) 直接OUT
4 扣非净利润是否为负或占比过低 +1
5 净利润为正但经营性现金流为负 +1
6 商誉占净资产超过30% +1
7 负债率>70%或短期借款>现金 +1
8 大股东质押比例超80% +1
9 近一年是否被监管立案调查 +1

累计扣分≥2分的股票直接剔除。

读到这里的时候我非常感慨——很多初学者(包括之前的我)只关心"这只股票能涨多少",但这套排雷系统关心的是"这只股票会不会爆雷"。在小市值的世界里,一颗雷就可能把所有收益炸没。

另外v3还有一个细节让我印象深刻:2025年1月1日之前用简单的审计意见筛选,之后才切换到九项排雷。这说明作者是在持续迭代策略的,不是一蹴而就的。


三、风控体系:五道防线,层层设防

这是我花时间最久、也收获最大的部分。策略一共有五道防线

第一道:固定止损 + 成本保护止损

最基础的风控——亏损9%直接卖出。但在此基础上,策略还增加了一个阶梯式成本保护

盈利 ≥ 15% → 止损线提升到成本价(保本)
盈利 ≥ 30% → 止损线提升到 +10%(锁定利润)
盈利 ≥ 100% → 直接止盈卖出

这让我想到一句话:"让利润奔跑,但给它系上安全绳。"以前我做手动交易的时候,经常眼看着30%的浮盈变成亏损,如果当时有这套逻辑,至少能保住10%。

第二道:ATR动态止损

这是我第一次在实际策略中看到ATR的用法。策略用14日ATR计算一个动态止损价:

止损价 = 买入成本 - 2倍ATR

关键是这个止损价只会往上移,不会往下移(trailing stop)。股价涨的时候,止损价跟着涨;股价跌的时候,止损价不动。一旦跌破就卖出。

这比固定止损线聪明太多了——波动大的股票,止损线会自动放宽;波动小的股票,止损线会自动收紧。

第三道:MACD顶背离检测

策略会检测中证1000指数(399101)的MACD顶背离信号:价格创新高、但DIF没有创新高,同时MACD柱由正转负。

一旦检测到顶背离,直接清仓所有非涨停股票,并且在接下来10个交易日内暂停买入。

我的感受:这是一个"大势判断"的模块。无论个股多好,大盘不行的时候就不玩了。

第四道:微盘股一致性风控

这个模块我读了三遍才理解。它的思路是:

  1. 取全市场最小5%市值的股票,看它们昨天的涨跌幅
  2. 计算这些股票涨跌幅的一致性(在均值±标准差范围内的比例)
  3. 用120日布林带动态计算一致性的上轨
  4. 如果中位数跌幅>2% 且 一致性超过上轨→ 全场微盘在同步暴跌 → 清仓!

翻译成人话就是:如果所有小股票都在一起跌,说明是系统性风险,赶紧跑。

但如果大盘均线是向上的(牛市环境),这个检查直接跳过。作者的意思是:牛市里的同步回调是机会,熊市里的同步下跌是灾难。

第五道:放量换手检测

日内实时监控持仓股票的换手率。如果今日换手率 > 10% 且超过20日均值的2倍,判定为异常放量,立即卖出。

我之前只知道"放量上涨是好事",看了这段代码才明白:对于小市值股票来说,突然放量可能意味着主力在出货。


四、两个让我"恍然大悟"的细节

1. 冷却期机制

止损卖出的股票,2天内不能再买回来

g.no_buy_after_day = 2  # 止损后不买入的窗口期

这个设计太人性化了。我以前手动交易的时候,经常止损后心怀不甘又买回来,结果亏得更多。策略相当于强制给自己"冷静"的时间。

2. 动态持股数量

策略根据中证1000的10日均线偏离度,动态调整持股数量:

指数偏离 ≥ +200点 → 只持3只(市场过热,集中持仓)
偏离 ≥ -200点   → 持4只
偏离 ≥ -500点   → 持5只
偏离 <-500点   → 持6只(市场低迷,分散风险)

市场越弱,持仓越分散;市场越强,持仓越集中。 这个思路我之前完全没想过,一直以为"分散就是好的"。但仔细想想,牛市里集中持仓才能抓住涨幅最大的票。


五、我从这个策略中学到了什么

读完这1163行代码,我最大的感悟是:

  1. 风控不是"加上去"的,而是"长出来"的。 每一道防线背后,可能都有作者一次惨痛的亏损经历。
  2. 好的策略是不断迭代的。 从v1到v3,从简单的审计筛选到九项排雷,这不是一天就写出来的。
  3. 框架比参数重要。 与其纠结"止损线到底设8%还是9%",不如先把多层防御体系搭起来。
  4. 小市值策略的核心不是选到牛股,而是活得够久。 30倍收益不是靠一两只翻倍股实现的,而是靠五年如一日地避开地雷、控制回撤积累出来的。

六、学完之后,拿去实战PK一下?

读完这个策略之后,我一直在想一个问题:回测30倍的策略,拿到真实市场里到底能排第几?

后来我发现了一个叫 9db量化竞技场 的网站。它的玩法很有意思——你可以把自己看好的策略上传交割单,然后和其他人的策略同台PK,按模拟收益率实时排名。

我把这个小市值策略参与竞技上去之后,发现:

  • 有些周期确实能排进前10,说明策略的爆发力是真的强
  • 但也有些周期排名靠后,尤其是大盘连续下跌的时候

这给了我一个很大的启发:单看5年的回测收益率是不够的,还要看策略在不同市场环境下的稳定性。 在9db上和几百个策略一起比,能够更客观地评估自己策略的水平。

如果你也在学习量化,推荐去 9db.com 看看,不用注册就能浏览排行榜,看看大佬们的策略都是什么水平。知道差距,才知道努力的方向。


我知道这篇文章可能有很多理解不到位的地方,毕竟我还是一个入门半年的新手。如果哪里理解有误,欢迎大佬们在评论区指正。

也特别感谢 Mean.Saint 老师的无私分享,让我这样的新手有机会学习到一套如此完整的策略框架。对我来说,学到的不仅是代码,更是一种"敬畏市场、系统思考"的量化思维方式。

最后,如果你也是刚入门的朋友,我的建议是:先别急着跑策略赚钱,找一个好的策略,一行一行读下去。 你会发现,最好的教材不在书本里,而在社区大佬的代码里。


以上是一个量化小白的学习笔记,欢迎交流讨论 ?

评论