最近在聚宽社区看到 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个交易日内暂停买入。 我的感受:这是一个"大势判断"的模块。无论个股多好,大盘不行的时候就不玩了。 第四道:微盘股一致性风控这个模块我读了三遍才理解。它的思路是: - 取全市场最小5%市值的股票,看它们昨天的涨跌幅
- 计算这些股票涨跌幅的一致性(在均值±标准差范围内的比例)
- 用120日布林带动态计算一致性的上轨
- 如果中位数跌幅>2% 且 一致性超过上轨→ 全场微盘在同步暴跌 → 清仓!
翻译成人话就是:如果所有小股票都在一起跌,说明是系统性风险,赶紧跑。 但如果大盘均线是向上的(牛市环境),这个检查直接跳过。作者的意思是:牛市里的同步回调是机会,熊市里的同步下跌是灾难。 第五道:放量换手检测日内实时监控持仓股票的换手率。如果今日换手率 > 10% 且超过20日均值的2倍,判定为异常放量,立即卖出。 我之前只知道"放量上涨是好事",看了这段代码才明白:对于小市值股票来说,突然放量可能意味着主力在出货。 四、两个让我"恍然大悟"的细节1. 冷却期机制止损卖出的股票,2天内不能再买回来: g.no_buy_after_day = 2 # 止损后不买入的窗口期这个设计太人性化了。我以前手动交易的时候,经常止损后心怀不甘又买回来,结果亏得更多。策略相当于强制给自己"冷静"的时间。 2. 动态持股数量策略根据中证1000的10日均线偏离度,动态调整持股数量: 指数偏离 ≥ +200点 → 只持3只(市场过热,集中持仓)偏离 ≥ -200点 → 持4只偏离 ≥ -500点 → 持5只偏离 < -500点 → 持6只(市场低迷,分散风险)市场越弱,持仓越分散;市场越强,持仓越集中。 这个思路我之前完全没想过,一直以为"分散就是好的"。但仔细想想,牛市里集中持仓才能抓住涨幅最大的票。 五、我从这个策略中学到了什么读完这1163行代码,我最大的感悟是: 风控不是"加上去"的,而是"长出来"的。 每一道防线背后,可能都有作者一次惨痛的亏损经历。 好的策略是不断迭代的。 从v1到v3,从简单的审计筛选到九项排雷,这不是一天就写出来的。 框架比参数重要。 与其纠结"止损线到底设8%还是9%",不如先把多层防御体系搭起来。 小市值策略的核心不是选到牛股,而是活得够久。 30倍收益不是靠一两只翻倍股实现的,而是靠五年如一日地避开地雷、控制回撤积累出来的。
六、学完之后,拿去实战PK一下?读完这个策略之后,我一直在想一个问题:回测30倍的策略,拿到真实市场里到底能排第几? 后来我发现了一个叫 9db量化竞技场 的网站。它的玩法很有意思——你可以把自己看好的策略上传交割单,然后和其他人的策略同台PK,按**/模拟收益率实时排名。 我把这个小市值策略参与竞技上去之后,发现: - 有些周期确实能排进前10,说明策略的爆发力是真的强
- 但也有些周期排名靠后,尤其是大盘连续下跌的时候
这给了我一个很大的启发:单看5年的回测收益率是不够的,还要看策略在不同市场环境下的稳定性。 在9db上和几百个策略一起比,能够更客观地评估自己策略的水平。 如果你也在学习量化,推荐去 9db.com 看看,不用注册就能浏览排行榜,看看大佬们的策略都是什么水平。知道差距,才知道努力的方向。
我知道这篇文章可能有很多理解不到位的地方,毕竟我还是一个入门半年的新手。如果哪里理解有误,欢迎大佬们在评论区指正。 也特别感谢 Mean.Saint 老师的无私分享,让我这样的新手有机会学习到一套如此完整的策略框架。对我来说,学到的不仅是代码,更是一种"敬畏市场、系统思考"的量化思维方式。 最后,如果你也是刚入门的朋友,我的建议是:先别急着跑策略赚钱,找一个好的策略,一行一行读下去。 你会发现,最好的教材不在书本里,而在社区大佬的代码里。
以上是一个量化小白的学习笔记,欢迎交流讨论 ?
|