一套50只微盘股策略:逻辑、优点与回测风险

量化交易
聚宽
微盘股
多因子
策略研究
从五因子排序、50只分散持仓、涨停延迟卖出到交易成本,详细拆解一套聚宽微盘策略的收益来源、优点、风险与回测偏差。
发布于

2026-09-07

50只微盘股量化组合、长期增长曲线和深度回撤的抽象示意图

50只微盘股从候选池进入组合,收益增长与深度回撤同时存在

最近研究了一套来自聚宽公开文章的微盘股策略。代码的核心思路并不复杂:先寻找基本面仍在增长的小市值股票,再用五个偏小、偏低、偏弱的指标排序,每周持有最多50只。

从用户提供的回测截图看,测试区间为2018年1月1日至2026年6月1日,初始资金100万元,基准为中证500。主要结果如下:

累计收益2162.74%的含义是:期末资产约为初始资金的22.63倍,也就是100万元在该次回测中约变成2262.74万元,不能再把结果夸大。

这条曲线足够吸引人,但真正值得研究的不是“2162%”这个终点,而是三个问题:收益到底由什么驱动?扩容到50只解决了什么?45.98%的回撤又暴露了什么?

2018年至2026年微盘50只策略聚宽回测结果截图

聚宽回测结果原始截图

本文根据用户提供的代码和回测截图进行静态审计,没有重新运行回测。截图只能证明该参数组合在该次回测中的显示结果,不能替代逐笔成交、年度收益、换手率和样本外检验。

一、先把策略翻译成人话

策略每天更新持仓状态,每周第一个交易日9:30调仓,14:00检查昨日涨停股是否开板。完整流程如下:

微盘50只策略的股票池、基本面筛选、五因子排序和交易流程

策略从全市场筛选至50只组合的流程

第一步:建立可选股票池

策略取得前一交易日全部A股,然后排除:

  • 科创板和北交所股票;
  • 上市不足375天的次新股;
  • ST、退市标记等股票。

这里没有排除创业板,因此30开头的股票仍可能进入组合。

第二步:加入基本面门槛

代码要求:

  • 市净率大于0;
  • inc_return大于0;
  • 营业收入同比增长大于0;
  • 净利润同比增长大于0。

之后按总市值从小到大排序,只保留最小的100只。换句话说,它不是在全部股票中直接做五因子排名,而是先把研究范围压缩到基本面指标为正的极小市值100只股票。

第三步:用五个变量进行二次排序

五个变量及权重为:

变量 权重 排名偏好
总市值 1.0 越小越好
流通市值 1.0 越小越好
当前股价 1.6 越低越好
最近约5个交易日成交量 0.8 越低越好
60日价格比值 2.0 越低越好

代码使用下面这种形式计算每个因子的得分:

weight * log(该因子最小值 / 当前股票因子值)

由于当前值通常不小于最小值,这个对数得分通常小于或等于0。最终按得分从高到低排序,也就是选择最接近各项最小值的股票。

特别值得注意的是,60日因子的权重最高,而且偏好60日价格比值更低的股票。因此它并不是追涨策略,而是带有明显的小市值、低价、低成交活跃度和中期弱势反转倾向。

第四步:持有最多50只

策略在调仓时卖出不再入选的股票,再用剩余现金买入新股票,目标持股上限为50只。新开仓时会按照待补仓位数量分配现金,所以初始状态近似等权。

但它不是严格的每日或每周等权再平衡:已经持有且仍在名单内的股票不会被重新调整到2%权重,组合权重会随着涨跌逐渐漂移。

第五步:给昨日涨停股一次延迟退出机会

如果某只持仓昨天收盘涨停,即使本周已经不在目标名单中,9:30也不会立即卖出。到14:00再检查:

  • 仍然涨停:继续持有;
  • 涨停已经打开:尝试卖出。

这相当于给强势股增加了一个“涨停延续”规则,使策略在整体偏反转的基础上,又保留了一小段涨停动量。

二、这套策略为什么可能获得高收益?

微盘50只策略的潜在收益来源与对应风险

收益来源和风险来源并列拆解

1. 最主要的是极小市值暴露

股票先按总市值排序,只留下最小的100只;综合得分又继续偏好更小的总市值和流通市值。因此策略长期收益的第一来源,大概率是极端小市值风格,而不是五个彼此独立的Alpha。

总市值和流通市值相关性很高,同时使用二者,相当于进一步强化了规模暴露。回测使用中证500作为基准,而组合实际风格远小于中证500,所谓“超额收益”中会包含相当一部分小盘风格收益。

2. 基本面门槛剔除了部分最差公司

策略不是无条件购买最小市值股票。它要求营收和净利润同比增长为正,并加入PB和inc_return条件。这些规则能过滤掉部分持续亏损、经营恶化或指标异常的公司。

它的逻辑可以理解成:

不在所有垃圾股里找最小,而是在基本面仍有改善迹象的公司里找最小。

这种“规模+基本面过滤”比纯市值排序更有解释力。不过,几个同比指标只代表变化方向,不代表绝对盈利质量、现金流和财务真实性。

3. 低价、低活跃和60日弱势带来反转特征

低股价本身并不创造价值,但在A股微盘样本中,它可能与投资者偏好、流动性、历史跌幅和困境反转共同作用。低成交量和弱60日表现则进一步把组合推向近期不受欢迎的股票。

当市场重新给这类股票定价时,反弹可能非常剧烈;但在风险偏好继续下降时,这些特征也可能共同放大亏损。

4. 50只持仓降低单票风险

微盘公司容易出现业绩暴雷、停牌、监管处罚和连续跌停。由10只扩展到50只,可以显著降低单只股票对组合的破坏力,也降低偶然选中一只大牛股对结果的依赖。

但分散只能降低个股特有风险,不能消除共同的微盘风格风险。2024年初大量微盘股票同时下跌时,50只可能一起跌,最大回撤仍然达到45.98%。

5. 涨停股延迟卖出保留了右尾收益

微盘策略的少数大收益往往来自连续涨停或短期快速上涨。策略不会在昨日涨停后第二天早盘机械卖出,而是等到下午观察是否开板,有利于保留部分强势股的收益尾部。

相应代价是,一旦开板后快速回落,14:00才处理可能失去更好的卖点;遇到跌停或流动性消失,也不保证能够卖出。

三、它做得比较好的地方

股票池和基本面数据使用前一交易日

基本面查询明确指定date=yesterday,同时开启avoid_future_data,比直接使用默认最新财务数据更规范。新股、ST和板块过滤也比较清楚。

交易成本考虑了印花税变化

代码按2023年8月28日前后切换卖出印花税,并使用用户声明的免5佣金。这比整段历史使用同一个税率更接近真实情况。

扩容改善单票容量

50只持仓把资金分散到更多标的。相同资金规模下,每只股票的下单金额更小,理论上比10只集中持仓更容易成交,也更能承受单票异常。

规则清晰,可解释性强

整个策略没有复杂机器学习模型。每一次入选都能还原为基本面门槛、规模排序和五个变量的组合得分,便于做因子拆解和压力测试。

四、回测中最需要警惕的问题

1. 最大问题是滑点被设为零

代码明确使用:

set_slippage(PriceRelatedSlippage(0.000))

对持有50只极小市值、低成交量股票的策略来说,零滑点是非常强的理想化假设。真实成本不只是佣金和印花税,还包括:

  • 买卖价差;
  • 下单后的价格冲击;
  • 开盘集合竞价的成交偏差;
  • 涨跌停无法成交;
  • 多只股票同时调仓时的排队问题。

而且策略主动偏好低成交量股票,恰好也是滑点更容易恶化的股票。回测若没有加入成交量占比限制和冲击成本,高收益可能被明显高估。

2. “成交量”使用股数,横截面可比性不足

代码累计约1200根一分钟K线的volume,也就是成交股数,而不是成交金额或换手率。不同股票的股价和流通股本差异很大:同样成交100万股,3元股票和30元股票的资金容量完全不同。

如果这个因子的目标是衡量流动性,更合理的候选包括成交额、换手率、过去若干日成交额中位数,以及计划下单金额占日均成交额的比例。

3. 低价因子可能重复放大流动性与困境暴露

股价是公司拆股、送转和股本结构共同决定的名义数字。低价不等于低估值。权重1.6使其成为第二重要因子,可能让组合额外暴露于经营困境、投资者偏好和流动性风险。

需要做的不是立刻删除低价因子,而是分别回测:去除低价、降低权重、改成估值或价格分位后,收益和回撤如何变化。

4. 60日“动能”实际是反转

变量名称叫m_days_return,但排序偏好数值更小的股票。权重2.0又是所有因子中最高,因此策略明显偏好过去60日表现较弱者。

这可能捕捉超跌反转,也可能不断买入仍在下跌的股票。代码没有趋势失效、个股止损或市场环境过滤,所以当弱势继续延伸时,组合只能等下周调仓。

5. 50只并非始终严格等权,也可能超过50只

已有持仓只要继续入选,就不会被调回标准权重。此外,昨日涨停但已经落选的股票会被暂时保留;目标名单仍可以包含50只,因此组合在某些时点理论上可能超过50只,或者因为保留仓位而无法补齐新名单。

所以“50只”更准确的说法是目标持仓数量,而不是任何时刻都严格保持50只、每只2%。

6. 9:30调用一分钟数据需要核对可得性和成交价

策略在9:30计算当前一分钟价格,又立刻调仓。研究时需要确认聚宽在该时间点返回的是哪一根分钟线、该价格是否能作为当次订单的可成交参考,以及实盘中计算全部候选因子需要多长时间。

即便没有未来函数,信号可得也不等于按同一个价格成交。

7. 一次长回测不等于样本外有效

2018年至2026年的累计结果覆盖了不同市场阶段,这是优点;但权重[1.0, 1.0, 1.6, 0.8, 2.0]是否根据这段历史调整过,截图无法回答。

如果研究者试过大量权重和过滤条件,最后只保留最好的一组,就会产生参数选择偏差。可靠验证至少需要滚动样本外、分年度表现、不同起始日期和权重扰动测试。

8. 最大回撤比年化收益更接近实盘感受

45.98%的最大回撤意味着净值从阶段高点接近腰斩。100万元在最差路径中可能从高点回落到约54万元;想从54万元恢复到100万元,需要随后上涨约85%。

这不是“忍一忍就过去”的小波动,而是足以让多数实盘使用者中途停掉策略的压力。高年化收益与大回撤在这里不是矛盾,而是同一种高风险暴露的两面。

五、回测指标应该怎样正确解读?

策略累计收益、年化收益、最大回撤、夏普比率以及回测可靠性提示

回测收益、风险与可靠性三组指标

2162.74%的累计收益

它说明复利结果很强,但终点数值对回测区间、成交假设和少数强势年份高度敏感。必须同时看年度收益和水下曲线,不能只看终值。

46.61%的年化收益

长期维持这一收益非常困难。对微盘策略尤其要问:资金扩大十倍以后还能否以相同价格成交?如果容量上升导致滑点增加,年化收益会比回测更快下降。

1.517的夏普比率

从回测指标看,单位波动对应的收益不错。但夏普默认波动能够充分代表风险,而微盘策略真正危险的部分往往是跳空、跌停和无法卖出,这些风险不能被普通日收益标准差完整描述。

65.2%的胜率和2.826的盈亏比

两项同时较高看起来很优秀,但截图中的统计口径需要进一步确认:按天、按交易还是按持仓计算?如果不清楚口径,就不能直接拿来推算未来交易成功率。

0.895的Beta

Beta接近1并不表示组合风险接近中证500。线性Beta主要刻画共同涨跌关系,无法反映微盘拥挤、流动性枯竭和跌停退出风险。

六、我会怎样验证这套策略?

如果准备继续研究,我不会先调权重,而会按以下顺序做实验。

第一组:拆解收益来源

分别运行:

  1. 只保留总市值排序;
  2. 总市值+基本面门槛;
  3. 依次加入流通市值、低价、低成交量和60日反转;
  4. 比较每一步增加的收益、回撤和换手。

这样才能知道五个变量究竟提供了独立信息,还是重复强化微盘暴露。

第二组:测试真实成交

  • 设置多档滑点;
  • 限制单笔交易占过去成交额的比例;
  • 模拟涨跌停无法成交;
  • 将调仓价格延后至9:35或更晚;
  • 比较100万、500万和1000万资金规模。

如果资金一放大,收益迅速消失,说明策略的核心瓶颈是容量。

第三组:测试稳定性

  • 10只、20只、30只、50只和100只持仓;
  • 周一、周二及不同调仓时间;
  • 60日反转改成40、80和120日;
  • 五个权重上下扰动20%;
  • 逐年和滚动三年回测。

真正稳定的策略不会因为一个参数稍微变化就从高收益变成失效。

第四组:更换合理基准

除了中证500,还应该对比中证2000、小市值等权组合,以及“最小100只股票简单等权”基线。如果策略跑赢中证500,却没有跑赢简单微盘基线,那么主要贡献仍然是规模Beta。

七、这套策略适合谁,不适合谁?

它适合用来研究:

  • 微盘规模效应;
  • 基本面过滤与反转因子的组合;
  • 分散持仓对单票风险的改善;
  • 微盘策略的容量与成交问题。

它不适合被理解成:

  • 收益已经可以直接复现;
  • 50只持仓就不会发生大回撤;
  • 有佣金和印花税就等于交易成本完整;
  • 历史2162%可以线性外推到未来。

结语

这套策略的优点很鲜明:规则简单、基本面有门槛、持仓足够分散、长期回测结果突出。它比只买10只微盘股更能降低单票风险,也更适合作为微盘多因子研究的起点。

它的缺点同样集中:收益高度依赖极小市值风格,低价、低成交量和60日弱势可能叠加流动性与困境风险;零滑点又恰好忽略了微盘策略最昂贵的成本。45.98%的最大回撤提醒我们,扩容解决的是单票集中度,不是微盘风格的系统性风险。

因此,这条漂亮曲线最有价值的地方不是证明“微盘50只一定有效”,而是提出一组可以继续验证的问题:

扣除真实冲击成本以后还剩多少收益?五个变量中谁真正提供增量?资金规模扩大后还能不能成交?离开最有利的历史参数以后,结果是否仍然稳定?

回答完这些问题,才有资格从“好看的回测”走向“可以评估的策略”。

原始代码来源:聚宽公开文章页面。本文仅用于代码与量化研究,不构成投资建议。回测结果不代表未来表现,微盘股可能出现大幅波动、连续跌停和无法成交。