A股的收益来源,和全球大多数股票市场都不太一样。
在绝大多数市场中,股票收益主要来自隔夜收益,也就是上一天的收盘价平均都要低于今天的开盘价;
而日内波动更多只是噪音,整体并不能提供稳定收益。
但A股恰恰相反。
A股的隔夜收益是负的,而日内收益是正的。
这张图展现的就是全球主要股票市场 ,隔夜收益(蓝线)与日内收益(绿线)的对比。我们可以发现,除了最右下角的A股市场是绿线高于蓝线(日内收益大于隔夜收益),其余所有的市场,都是蓝线高于绿线(隔夜收益大于日内收益)。

换句话说,平均来看,A股股票第二天的开盘价,往往低于前一天的收盘价。
每天开盘都对应着一个相对低位的入场机会。
A股与众不同的原因
而这种现象背后的核心原因,很大程度上来自A股特有的 T+1 交易制度。
-
由于A股当日买入、当日不能卖出,越早买入,就意味着要承担更长时间的持仓风险;而承担了更久的风险敞口,自然也更应该获得更高的预期回报。
-
另外,前一天的收盘买入,相当于隐形购买了一张第二天可以卖出股票的期权,带来了额外溢价。
所以,结合A股独特的收益来源:
越早在早盘进场,往往就越容易拿到更低的成交价格;而如果能在收盘附近完成卖出,也更有可能卖在相对更高的位置。
而一天之中最早的交易机会,正是集合竞价。
很多股票当天能不能走强,能不能上板,
在集合竞价阶段,其实就已经开始定调了。
所以,一个值得研究的问题便是:
如何在集合竞价阶段,用高频订单流信号提前识别出最有可能走强、甚至日内上板的股票,并抢在开盘前拿到先手。
集合竞价规则
先简单介绍一下 A股集合竞价的基本规则。
A股早盘集合竞价分为三个阶段:
-
9:15 - 9:20:可以报单,也可以撤单
-
9:20 - 9:25 :可以报单,但不能撤单
-
9:25 :交易所对所有有效委托进行集中撮合,形成当日开盘价
从本质上看,9:15 到 9:25 这 10 分钟,其实就是市场资金在用真金白银为股票"投票"。
资金越愿意以更高价格挂单买入,说明市场看多意愿越强;
资金越急于以更低价格卖出,说明市场看空意愿越强。
因此,集合竞价阶段本身就包含了非常丰富的信息。
我们完全可以利用这段时间的高频数据,分析委托和成交特征,去找出那些大家用钱投票出来明显强势的股票,并在集合竞价最后时刻,在大家已经投完票后,以明牌的方式买入。
不过,这里面还有一个关键问题:
9:15 到 9:20 这段时间是允许撤单的。
这意味着,一些资金完全可能通过虚假挂单再撤单的方式,制造出"抢筹"或"抛压"的假象,误导别人。
所以,如果直接使用 9:15 到 9:20 的数据,信号里可能会混入不少噪音,甚至包含刻意制造的假信息。

比如看这个例子,集合竞价一开始, 股价直接被虚假挂单打到涨停,但临集合竞价结束前,股价直接被干回0轴线。而后续股票也是延续下跌。

再比如这个相反的例子,集合竞价一开始,先跌,临近结束前又被拉回,后续股价延续上涨。
这些例子都说明,集合竞价前半段的表象未必可靠,真正更有参考价值的,是 9:20 - 9:25 这段不能撤单的订单流。
我们后续构建因子也将只用 9:20 - 9:25 这段时间的集合竞价数据,
用这段"不能撤单"的真实订单流,去提取更有价值的市场信号。
分享几个用于分析集合竞价强势股的因子
这里分享两个思路。
1. 集合竞价买入强度因子
第一个因子,衡量的是集合竞价阶段的净买入力度。
如果在集合竞价阶段,主动以不低于卖一价挂出的买单多,而主动以不高于买一价挂出的卖单少,那么说明这只股票存在较强的抢筹意愿。
我们可以这么定义集合竞价净买入资金流:
集合竞价净买入资金流=∑(下单价≥卖一价的买单金额)−∑(下单价≤买一价的卖单金额)\text{集合竞价净买入资金流} = \sum \bigl(\text{下单价} \ge \text{卖一价的买单金额}\bigr) - \sum \bigl(\text{下单价} \le \text{买一价的卖单金额}\bigr)集合竞价净买入资金流=∑(下单价≥卖一价的买单金额)−∑(下单价≤买一价的卖单金额)
这个指标越大,说明集合竞价阶段的主动买盘越强,股票越可能在开盘后延续强势。
不过,不同股票本身的成交活跃程度差异很大,我们不能直接比较不同股票的绝对净买入资金流。
比如,一只大市值热门股的 3000 万净流入,和一只小票的 3000 万净流入,含义显然完全不同。
因此,更合理的方式是把它标准化,去比较它相对于历史成交量的强弱。这里我们用过去 5 个交易日的平均日成交量做归一化,得到:
集合竞价买入强度因子=集合竞价净买入资金流15∑t=15日成交量−t\text{集合竞价买入强度因子} = \frac{ \text{集合竞价净买入资金流} }{ \frac{1}{5}\sum_{t=1}^{5} \text{日成交量}_{-t} }集合竞价买入强度因子=51∑t=15日成交量−t集合竞价净买入资金流
这个因子越高,说明当前集合竞价阶段的净买盘,相对于过去一段时间的正常成交水平越强,也就意味着这只股票在开盘前表现得越强势。
这个因子筛选出的强势股,不一定是那些已经上板的股票,或者买在已经接近涨停的价格。
更多的是,已经有启动迹象,但行情还没有完全发酵,股价还处于相对低位的股票。
比如下面两个例子,都是我们这个因子筛选出的股票。


他们都在9:20 - 9:25期间表现出强势,但是价格还没有上涨太多,我们 在集合竞价结束前买入,甚至开盘就能获得跳开3 - 4个点的收益。
2. 散户集合竞价卖出强度因子
第二个因子,延续了上一篇文章《既然散户都在亏,跟着散户反着买,10年800倍!》里的核心思路:
如果散户的交易行为本身具有反向指标属性,那么在集合竞价阶段,散户越是急着卖出的股票,反而越值得关注。
我们可以定义散户集合竞价净卖出资金流:
散户集合竞价净卖出资金流=∑(下单价≤买一价的散户卖单金额)−∑(下单价≥卖一价的散户买单金额)\text{散户集合竞价净卖出资金流} = \sum \bigl(\text{下单价} \le \text{买一价的散户卖单金额}\bigr) - \sum \bigl(\text{下单价} \ge \text{卖一价的散户买单金额}\bigr)散户集合竞价净卖出资金流=∑(下单价≤买一价的散户卖单金额)−∑(下单价≥卖一价的散户买单金额)
同样地,为了消除不同股票成交规模的影响,我们也用过去 5 个交易日的平均日成交量进行标准化,定义出散户集合竞价卖出强度因子:
散户集合竞价卖出强度因子=散户集合竞价净卖出资金流15∑t=15日成交量−t\text{散户集合竞价卖出强度因子} = \frac{ \text{散户集合竞价净卖出资金流} }{ \frac{1}{5}\sum_{t=1}^{5} \text{日成交量}_{-t} }散户集合竞价卖出强度因子=51∑t=15日成交量−t散户集合竞价净卖出资金流
这个因子越高,说明散户在集合竞价阶段的净卖出越强。
而根据前文"散户反向指标"的逻辑,散户越是集中卖出,后续反而越可能存在反向机会。
高频因子的工程实现
在 9:24:59 ,也就是集合竞价即将结束的最后时刻,基于 9:20 - 9:25 期间持续接收的高频数据,输出全市场每只股票的最新因子值,并完成横截面排序,筛选出排名靠前的股票作为候选买入池。
我们希望将决策时点尽可能后移,因为越接近集合竞价结束,可利用的信息越完整,因子对最终撮合前真实买卖强弱的刻画也越准确。
但与此同时,还必须预留足够时间完成因子更新、排序、下单,确保订单能够在 9:25 前成功进入撮合系统。
因此,因子计算在工程实现上必须采用事件驱动的流式增量计算架构,而不是在最后时刻对全市场做一次集中式矩阵计算。
也就是说,因子需要随着竞价阶段的数据流持续实时更新;到了最终决策时点,系统只读取最新状态、完成排序并下单,而不是从头重算全部股票。
这样的实现是在两个目标之间做平衡:
一方面尽可能晚地读取信号,以最大化信息利用;
另一方面又必须足够早地完成计算与报单,以保证交易可执行性。
强势股半仓轮动策略
-
在 9:24:59,计算出全市场每只股票的因子值,并按照因子大小进行排序。结合因子加权,筛选出全市场排名前 20 的股票,作为当天的候选买入池。
-
对候选的股票直接以涨停价挂单买入半仓,尽可能确保能够在集合竞价中成交。
-
第二天收盘,卖出前一天买入的仓位。
这个策略的持仓结构是:
-
**日内,**账户同时持有两部分仓位:
-
一部分是前一天买入、准备在当天收盘卖出的仓位;
-
另一部分是当天集合竞价新买入的仓位。
-
到了当日收盘,卖出前一天建仓的那一半仓位,保留当天新买入的半仓继续隔夜持有。
每天早盘通过集合竞价买入新的强势股半仓,
每天尾盘卖出前一天买入的半仓,
从而始终维持"半仓旧仓 + 半仓新仓"的滚动持仓结构,
半仓轮动确保我们能够持续参与,筛选出来的强势股机会;
也避免了一次性满仓押注单日信号,使得收益曲线更加平滑,提高夏普。
同时,这个策略也天然契合A股"隔夜弱、日内强 "的收益特征,不仅吃到强势股带来的超额收益 ,也能享受A股特有的日内收益红利。
这里随意放两个月的回测,
回测已经扣费,且当天开盘即涨停的票视为不能成交。

学会利用市场底层规律
那些长期有效的策略,往往先识别出市场中那些长期稳定存在的结构性规律,再在这些规律之上去设计策略、优化执行。
这样做的好处是,策略不再只是偶然撞上的结果,而是建立在市场真实运行逻辑之上的自然推演。
A股"隔夜弱、日内强"的收益结构,就是这样一种底层规律。
而围绕集合竞价去做高频打板,本质上也是顺着这条规律,去寻找最早的先手、最强的信号和最肥的那段日内利润。
先找到市场的底层规律,再在规律之上构建策略,往往能够事半功倍。