hxj20061987
V2EX  ›  股票

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

  •  
  •   hxj20061987 · 2 days ago · 487 views

    最近在某社区看到 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 老师的无私分享,让我这样的新手有机会学习到一套如此完整的策略框架。对我来说,学到的不仅是代码,更是一种**"敬畏市场、系统思考"**的量化思维方式。

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


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

    3 replies    2026-06-02 11:10:05 +08:00
    soresolitudee
        1
    soresolitudee  
       2 days ago
    竟然看懂了( PS: 我的交易次数只有二、三十次吧)
    cemian
        2
    cemian  
       2 days ago
    回测排除未来函数了吗?
    qieqie
        3
    qieqie  
       1 day ago
    纯后视镜开车拟合出来的玩意,随便换一下常数就崩
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1513 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 16:54 · PVG 00:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.