候选池是怎么筛出来的:两段式结构
StockEye 的选股不是「全市场直接排序」,而是先在候选池做宽网过滤、再由模型在池内重排。这篇讲清两段各做什么、为什么这样设计、以及池子宽窄为什么会改变结果。
第一段:宽网过滤出候选池
全 A 股 5000 多只,如果直接让模型对全部股票打分,成本高且信噪比差。所以第一步是 用一组可解释的硬条件把市场压缩到一个池子,大致围绕趋势位置、量能与流动性、 估值与市值区间、是否 ST / 停牌这几类。(每类具体用哪些字段、门槛设在多少,属于平台策略资产,不对外公开。)
这一步的特点:只看当天就能算出来的客观数据,不做预测。它的作用是「排除明显不该看的票」, 例如成交额过小、流动性太差、或者已经连板到没法参与的位置。
第二段:模型在池内排序
池子建好后,模型只在池内做相对排序——把池里这几百只票按「模型认为的次日到两日相对强弱」排队, 取前面几只。注意两个关键词:
- 相对:模型分高只代表「在这批候选里相对靠前」,不代表绝对会上涨。
- 池内:换一个池子,同一只票的名次可能完全不同——因为比较对象变了。
这也解释了一个常见疑问:为什么把筛选条件放宽以后,选出来的票反而「变差了」。 条件放宽 = 池子变大 = 比较对象变多,模型要在更宽的范围里排,结果自然会变。
为什么用两段而不是一段
三个原因:
- 成本:模型打分要对每只票构造几十个特征,全市场跑一晚上不现实;先过滤能砍掉 90% 的计算量。
- 可解释:第一段全是人能看懂的条件,客户可以自己判断「我设的条件是不是我想要的」。
- 可控:想收紧标准时,改第一段的门槛比改模型直观得多。
池子宽窄怎么选
经验做法:池子控制在几十到一两百只。太小(十几只)等于池子替你做了决策,模型排序失去意义; 太大(上千只)则等于回到全市场,第一段的过滤价值消失,还会拖慢计算。
如果你只想看「自己关心的那一类票」,正确用法是把条件写死在筛选里(例如只看某个市值区间、 某个换手区间),而不是把池子放到极大再指望模型帮你挑。