在上一篇中,我们梳理了大类资产配置与资金分层:宏观上确定了资金在美股(47.5%)、日股(14.5%)、中国资产(9.5%)等各大市场之间的配比,并在股票内部切分了核心宽基底仓(Core)与卫星轮动个股(Satellite)。
大方向定好之后,我们面对的是一个更具体的工程问题:各个市场用于轮动的卫星个股,到底应该从哪些标的里面挑选?
这属于整个选股体系的第二层:候选池召回与双轨粗排。
在展开具体的数据分析之前,我们先把从全市场到最终买入的三层处理链条放出来:

整个流水线由浅入深分为三层:
| 阶段 | 核心任务与输入输出规模 | 采用的规则与计算指标 | 承担的工程定位 |
|---|---|---|---|
| 第一层:资产分层与配比(上一篇) | 全局资产宏观配置与仓位切分 | 美股 47.5%、日股 14.5%、中国资产 9.5% 等;核心底仓与卫星个股分工 | 决定宏观资金走向与各市场持仓数量上限 |
| 第二层:召回与粗排(本篇) | 从全市场(5,000+)初筛并压缩至 单市场 100 只物理观察池 | 召回:日均成交额 ≥ 5,000 万元流动性底线,剔除 ST、B 股、OTC 与仙股 粗排:47 只全景行业 ETF 顺风雷达定位领涨大类,动态选拔领头羊;结合个股成交活跃度扫描 | 攻克物理接口配额约束,消除哑铃型两极扭曲,输出高信息密度的日常监控名单 |
| 第三层:指标精排与监控(下一篇) | 从 100 只观察池筛选出 最终买入持仓(各市场 3~4 只) | 250 天历史日 K 线拉取、MA200 趋势硬门槛、距年线 ≤ +30% 防追高、12-1 相对动量排序、双线缓冲区控制换手 | 高精度指标计算与风控执行,决定具体实盘资金构建 |
平时看盘,大家习惯直接拿看盘软件里的自选股作为量化输入。但自选池通常只有几十只,范围过早被主观框死,系统很难在全市场范围内捕捉结构性机会。
我们要先解决怎么从全市场把候选标的召回出来,再通过粗排压缩到可日常监控的观察池中。
为什么不能全市场通抓
有人会问,既然自选池太窄,把全市场的几千只股票全部抓进来行不行?
在实际执行时,这会遇到两个现实阻碍。
一个是工程与接口开销。A 股有 5,300 多只股票,港股有 2,600 多只,美股超过 12,000 只。每天抓取全市场的完整日 K、计算复权和指标,个人设备的存储计算压力大,券商行情接口(如富途 OpenD)也会直接触发每日订阅配额上限。
另一个更根本的制约,是股票市场本身的极度非均匀分布。
我们编写了探索性数据分析脚本 scripts/analytics/universe_eda.py,拉取各市场的全量快照,日成交额直接通过各标的当日成交量乘以收盘价计算得出。清洗剔除 B 股、ST 股、场外粉单和现价低于 1 美元的标的后,三地市场的真实截面如下:
| 市场 | 原始标的总量 | 清洗后有效标的 | 市值中位数 | 日成交额 P50 | 极端标的分布情况 |
|---|---|---|---|---|---|
| A 股 | 5,309 只 | 5,036 只 | 64.6 亿元 | 1.12 亿元 | 剔除 ST 与 \*ST 195 只,剔除 B 股 76 只 |
| 港股 | 2,666 只 | 2,666 只 | 8.4 亿港元 | 18.5 万港元 | 市值 P25 仅 2.1 亿港元,尾部存在大量仙股 |
| 美股 | 12,011 只 | 5,218 只 | 10.3 亿美元 | 569 万美元 | 剔除全部 OTC 粉单 6,297 只,剔除低于 1 美元标的 389 只 |
数据呈现极度右偏。港股的成交额中位数只有 18.5 万港元,美股有一半以上是场外粉单和空壳公司。全市场通抓,抓进来的大部分都是缺乏流动性的僵尸股。这些标的偶尔有一两笔小额成交拉动价格,在动量系统里会被误判成放量突破,给后续选股制造大量噪音。
从数据分析推导客观筛选门槛
为了让不同市场的股票能在合理的池子里竞争,我们需要设定流动性与市值的准入门槛。
如果凭直觉给门槛拍一个规整的整数,比如随手定个 200 亿市值、1 亿日成交额,往往会带有明显的凑整偏好和盲区。在量化系统中,门槛需要从实际数据分布和交易成本中推导出来。
为了看清各市场的真实分布,我们绘制了三地市场的对数散点分布、累计贡献曲线与内生拐点图:

通过对数据的探索性分析,我们发现了几个关键事实:
1. 资金规模与真实冲击成本
很多机构指标习惯要求日成交额在 1 亿元以上,是因为机构单笔建仓数百上千万元,需要大成交量来吸收冲击成本。
但我们是个人账户,整体预算规模在数十万元,分配到单只卫星个股的头寸通常在数万元。以几万元的一笔订单来推算:
- 在日成交额 5,000 万元的股票上,单笔成交占比通常在万分之五以内;
- 即便在日成交额 2,000 万元的股票上,单笔占比也仅在千分之一至千分之二左右。
个人资金在数千万元日成交的标的上几乎零滑点,不会对盘口带来冲击。照搬机构的 1 亿元日成交门槛,属于过度设防。把流动性底线设在 5,000 万元,对个人交易完全够用。
2. 数学拐点与中盘动量弹性
通过曲率分析(Maximum Distance to Diagonal),A 股累计市值曲线的数学内生极大曲率拐点(Elbow Point)出现在 232.9 亿元(对应市场前 15.8% 标的,贡献 74.4% 市值),这印证了 200 亿元左右确实是市场市值的集中度拐点。
但如果机械地把大盘门槛卡死在 200 亿元,会产生一个动量盲区:千亿以上的超大盘权重往往以低贝塔或均值回归为主,而真正容易走出顺势动量主线的,往往是 100 亿至 200 亿元之间的细分中大盘龙头。
在清洗后的 5,036 只 A 股有效标的中,按市值分档的真实分布如下:
| 市值区间 | 标的数量 | 数量占比 | 市值累计占比 | 成交额累计占比 | 日成交额中位数 | 日成交额 ≥ 5,000 万元比例 | 日成交额 ≥ 1 亿元比例 |
|---|---|---|---|---|---|---|---|
| 小于 20 亿元 | 169 只 | 3.4% | 0.2% | 0.7% | 3,200 万元 | 25.4% | 2.4% |
| 20 至 50 亿元 | 1,785 只 | 35.4% | 5.5% | 11.7% | 5,400 万元 | 54.1% | 26.6% |
| 50 至 100 亿元 | 1,337 只 | 26.5% | 13.5% | 28.2% | 1.08 亿元 | 81.6% | 53.7% |
| 100 至 200 亿元 | 809 只 | 16.1% | 23.1% | 44.1% | 1.87 亿元 | 94.4% | 76.5% |
| 200 至 500 亿元 | 572 只 | 11.4% | 38.0% | 64.1% | 3.35 亿元 | 98.6% | 94.2% |
| 500 至 1000 亿元 | 197 只 | 3.9% | 49.9% | 77.5% | 6.48 亿元 | 99.5% | 98.5% |
| 大于 1000 亿元 | 167 只 | 3.3% | 100.0% | 100.0% | 12.42 亿元 | 98.8% | 97.6% |
为了更直观地展示各区间的标的规模与流动性厚度,我们绘制了对应的柱状分布与流动性特征图:

数据显示,100 亿至 200 亿元区间内有 809 只股票,贡献了市场 15.9% 的成交额,其中 94.4% 的标的日成交额都在 5,000 万元以上。将门槛由 200 亿适度放宽至 100 亿元,日成交额设为 5,000 万元,可以把 782 只兼具充沛流动性与弹性的中大盘龙头纳入召回视野。
基于实测数据,各市场的初筛门槛确定如下:
| 市场 | 标的范围基线 | 设定门槛 | 数据支撑与原因 |
|---|---|---|---|
| A 股(CNY) | 剔除 ST、\*ST 与 B 股 | 市值 ≥ 100 亿元 日成交额 ≥ 5,000 万元 | 覆盖 100~200 亿弹性中盘股;5,000 万元日成交对个人数万元订单冲击仅万分之几;有效纳入 782 只成长龙头 |
| 港股(HKD) | 主板与创业板挂牌股票 | 市值 ≥ 100 亿港元 日成交额 ≥ 3,000 万港元 | 港股 ≥100 亿港元标的占全市场 22.2%(593 只),贡献 97.1% 市值与 95.4% 成交额;3,000 万成交额门槛让达标率升至 60%,兼顾流动性与行业覆盖 |
| 美股(USD) | 剔除 OTC 场外粉单 剔除现价低于 1 美元标的 | 市值 ≥ 100 亿美元 日成交额 ≥ 2,000 万美元 | ≥100 亿美元标的占上市板块 19.2%(1,002 只),贡献 94.6% 市值与 85.8% 成交额,日成交额中位数达 1.68 亿美元,流动性充裕 |
数据在进入多路召回前,还要完成基础清洗:A 股按前缀剔除 195 只 ST 与 76 只 B 股;美股剔除 6,297 只 OTC 粉单和 389 只 1 美元以下标的,并对同一发行人的多种股份类别(如 GOOGL 与 GOOG)去重,每组只保留流动性最好的一只。
物理约束与“哑铃型两极扭曲”
通过上面的门槛初筛,我们对全市场数据进行了严密核验:
- A 股:在清洗后的 5,036 只标的中,符合新门槛(市值 ≥ 100 亿元且日成交额 ≥ 5,000 万元)的有效标的精确为 1,714 只(贡献 100.7 万亿元市值与 1.08 万亿元日成交额);
- 港股:符合新门槛(市值 ≥ 100 亿港元且日成交额 ≥ 3,000 万港元)的标的为 327 只;
- 美股:符合新门槛(市值 ≥ 100 亿美元且日成交额 ≥ 2,000 万美元)的上市普通股为 814 只。
三地市场合计初筛合格的宽池标的达到 2,855 只。这依然远超我们日常监控所能承载的规模。我们在券商接口和监控系统上,存在明确的物理配额约束:
富途 OpenD 标准权限单账户的行情订阅上限为 300 只总探测窗口。这 300 只总预算在全局多市场之间进行协同分配:
- 中国市场(A 股 + 港股):切分约 100 只 深度观察名单(62 只 A 股与 38 只港股);
- 海外市场(美股):切分约 100 只 深度观察名单;
- 全景 ETF 探针与跨市场资产:切分约 60 至 100 只 配额(47 只全景行业 ETF 探针、12 只日股大盘、加密资产现货代理与机动池)。
这意味着,在单市场内,真正能够进入日常日 K 抓取并进行监控的名单,必须控制在 100 只以内。
机械截取导致的哑铃型扭曲与新逻辑前后对照
如果直接从初筛合格的宽池里,按大盘配额 25 只降序截取、小盘配额 25 只升序截取,名单并没有均匀覆盖大盘和小盘,实际截面呈现出了严重的哑铃型两极扭曲。
我们在图 1 中还原了老名单的这种扭曲,并在图 2 中把剔除宽基后、按纯行业 ETF 双轨粗排新逻辑选出的标的补回对数轴进行了严格对照:

实测数据展现了这种两极扭曲与新逻辑的改善效果:
- 大盘线实际生效门槛变成了 5,500 亿元:A 股满足 100 亿门槛的标的有 1,714 只,但因为大盘线机械按市值截取前 25 名,第 25 名市值就达到了 5,596.7 亿元(中位数 9,949 亿元)。处于 100 亿至 5,500 亿元之间的行业龙头在大盘规则通道里全部被挡在门外。
- 小盘线实际生效门槛被挤死在 21.8 亿元:满足 20 亿小盘门槛的股票有 2,000 多只,机械按市值升序截取前 25 名后,全部 25 只小盘股被死死挤在 20.1 亿至 21.8 亿元极窄的区间内。而在 22 亿元至 100 亿元区间内的标的,入选数量直接变成了 0 只。
- 新逻辑彻底填平中间断层:老名单在 500 亿至 2,000 亿元主力成长带仅有 6 只标的(且全部来自机构研报金股推荐)。按纯行业 ETF 双轨粗排跑出的新标的,市值中位数由割裂的 1,160 亿元健康回落并聚焦至 2,249 亿元,500 亿至 2,000 亿元的领跑龙头数量由 6 只大幅提升至 24 只,原本被掏空的中间主力地带被彻底填满。
单靠门槛加机械截取,无法输出合理的观察池。我们需要在召回之后,引入更具信息密度的粗排机制。
第二层粗排机制:全景 ETF 顺风雷达与双轨选拔
为了在 100 只物理观察配额内实现对全市场机会的高效覆盖,我们建立了以行业 ETF 为探针的双轨粗排体系。
1. 47 只全景 ETF 矩阵结构与配比
如果粗排用的行业 ETF 只有区区几只,就会陷入盲人摸象。一旦市场行情爆发在通信设备、创新药或有色黄金,而雷达池里没有对应的 ETF,自上而下的追踪就会失灵。
我们在 src/cang/analytics/sectors.py 中落地了 47 只全景行业 ETF 矩阵,覆盖结构与配比如下:
| 资产类别 | 探针数量 | 覆盖层级与代表性标的 | 承担的雷达功能 |
|---|---|---|---|
| 美股一级核心基准 | 11 只 | 标普 11 个 SPDR 一级行业(XLK 科技、XLC 通信、XLY 可选消费、XLP 必需消费、XLE 能源、XLF 金融、XLV 医药、XLI 工业、XLB 材料、XLU 公用事业、XLRE 地产) | 在分类学上对美股全行业实现 100% 穷尽覆盖 |
| 美股二级高弹性赛道 | 6 只 | 半导体硬件(SMH)、芯片半导体(SOXX)、生物医药(XBI)、软件 SaaS(IGV)、黄金矿业(GDX)、航空航天国防(ITA) | 捕获全球资金关注度最高的细分高贝塔赛道 |
| 加密资产代理 | 2 只 | 比特币现货(IBIT)、以太坊现货(ETHA) | 监控全球另类高弹性资产流动性溢出效应 |
| A 股与港股大盘宽基 | 6 只 | 沪深 300(510300)、科创 50(588000)、创业板指(159915)、盈富基金(02800)、恒生科技(03033)、恒生中国企业(02828) | 锚定中国市场大盘风格与核心蓝筹基准 |
| A 股硬科技与高端制造 | 7 只 | 半导体(512480)、芯片(512760)、通信(515880)、计算机(512720)、游戏传媒(159869)、军工(512660)、智能汽车(516110) | 监控数字科技、算力芯片与自主制造产业动量 |
| A 股新能源与周期资源 | 7 只 | 新能源(516160)、电网设备(512150)、有色金属(512400)、黄金股(159562)、煤炭(515220)、化工(159870)、中证红利(515080) | 监控上游大宗商品、电网基建与高股息红利轮动 |
| A 股医药与大消费 | 4 只 | 医药(512010)、创新药(159992)、白酒(512690)、核心消费(159928) | 监控大消费与医药抗周期防御板块 |
| A 股大金融与资本 | 2 只 | 证券(512880)、银行(512800) | 监控宏观流动性与牛市风向标板块 |
| 日本核心大盘 | 2 只 | TOPIX 宽基(1306)、日经 225(1321) | 监控日本市场大盘贝塔状态 |
2. 剥离宽基后的纯行业 ETF 真实覆盖度检验
如果把宽基指数算进来,覆盖度自然偏高,因为宽基天生横跨全行业。为了真正检验纯行业探针对结构性机会的捕捉能力,我们必须剥离宽基指数,对纯细分行业 ETF 进行穿透实测:

实测数据表明:
- 美股市场(814 只合格标的):11 个 SPDR 一级行业在 GICS 分类学上对美股上市股票实现了 100.0% 的穷尽覆盖。没有任何一只合规上市股票会脱离这 11 个板块的监控视野。
- A 股市场(1,714 只合格标的):在彻底剔除沪深 300、科创 50 等宽基后,仅凭 20 只纯行业 ETF,直接穿透覆盖了 1,714 只合格标的中的 1,328 只纯行业个股(数量覆盖率 77.5%),对应的市值覆盖率达到 84.1%,日成交额覆盖率达到 86.3%。 未设立行业 ETF 的标的主要分布在轻工制造、纺织服饰、农林牧渔、商贸零售等低弹性或长周期阴跌行业(合计占市场 3.2% 市值)。这些行业在自上而下的行业轮动中本身不具备动量爆发力,不会产生系统性错失。
- 港股市场(327 只合格标的):恒生科技与核心指数覆盖了市场 94.2% 的总市值,大型科技网络股与国企高股息标的均在监控之内。
3. 顺风雷达与动态龙头选拔逻辑
明确了 ETF 矩阵的完备性之后,粗排在工程上通过两层机制完成:
第一层:ETF 顺风雷达定位领涨大类
每天监控 47 只 ETF 只需要轻量的快照请求。系统通过 MA200 趋势与 3 个月动量指标,判定板块冷热状态。在任何时间窗口,全市场同时处于多头顺风状态的行业板块通常只有 8 至 12 个。
第二层:顺藤摸瓜动态选拔领头羊
锁定 8 至 12 个顺风行业之后,系统进入该行业对应的成分股底座,执行动态选拔函数 select_dynamic_sector_leaders:
- 年线一票否决:成分股最新收盘价必须
>= MA200,跌入空头走势的弱势股票直接剔除; - 相对动量决出龙头:在通过年线检验的成分股中,按近 3 个月相对涨幅降序排列,动态选出排名前 2 至 3 名的领涨龙头。
这样,8~12 个顺风行业动态贡献约 30 至 50 只领跑龙头,既借到了顺风赛道的贝塔势能,又确保选出的标的落在 100 亿至 5,000 亿元最具弹性的中大盘区间。
4. 双轨粗排汇聚与 100 只观察池结构
为了防止纯行业 ETF 出现分类盲区,粗排采用自上而下与自下而上结合的双轨制:
- 自上而下顺风轨(主干配额约 50%~75%):由全景 ETF 顺风雷达定位领涨大类,动态选拔顺风板块的支柱龙头。中国资产中包含 76 只 A 股与港股行业龙头,美股包含 48 只标普一级与高贝塔赛道龙头;
- 自下而上活跃轨(补充配额约 25%~50%):脱离行业框架,直接在通过初筛的宽池中按日成交额与流动性独立扫描,专门捕捉脱离行业贝塔的跨赛道独立大牛股(中国资产 24 只,美股 52 只);
- 研报金股辅助校验:在特定市场(如 A 股),将券商月度金股与深度覆盖标的作为定性对照,补充纯量化指标容易忽略的信息。
两轨选拔汇聚去重后,初筛合格的 2,855 只宽池标的被精准收敛为单市场 100 只物理观察名单:

从最终落盘的名单结构来看:
- 中国资产观察池(62 只 A 股 + 38 只港股):以 76% 的纯行业顺风龙头为底座,覆盖硬科技与智能制造(20%)、大金融与高息红利(16%)、新能源与周期资源(16%)、港股互联生态(14%)及消费医药(10%),辅以 24% 的高流动性活跃黑马。市值中位数达到 2,907 亿元,日成交额中位数达 14.5 亿元。
- 美股资产观察池(100 只上市普通股):48% 的标普与主题龙头实现了对 11 个一级行业的完备锚定,52% 的自下而上活跃标的则将高流动性的科技巨头与跨赛道龙头一网打尽。市值中位数达到 1,874 亿美元,日成交额中位数达 15.2 亿美元。
这彻底消除了此前“极端微盘扎堆”与“超大盘权重割裂”的两极扭曲,将监控精力 100% 聚焦在 100 亿至 5,000 亿元(美股 100 亿至 1 万亿美元)这一动量弹性充沛、承载能力强的黄金区间。
进入下一层:指标精排与实盘执行
通过多路召回与双轨粗排,两份物理观察名单已经正式成型。
在架构设计上,我们将第二层与第三层做了清晰的工程解耦:
- 第二层(本篇):产出的是月度或季度低频更新的“战略监控底表”,解决的是物理接口配额、覆盖面与两极扭曲问题;
- 第三层(下一篇):则是每天在收盘后运行的“战术指标计算”,直接依托本地数据库中的多周期日 K 时序数据,执行高精度的趋势研判与仓位决策。
在下一篇中,我们将深入第三层:探讨进入这 100 只观察池的标的,如何通过 MA200 趋势硬门槛一票否决、距年线超过 30% 坚决防追高拒买、12-1 相对动量排序以及双线缓冲区,最终筛选出各市场 3 至 4 只实际买入的最终持仓。