概念笔记
股票池(交易对象范围与过滤)
股票池 = 策略的交易候选集合。范围来源可插拔(自定义列表 / 指数 / 行业 / 概念 / 全市场),对象会变化,用前要过滤停牌、涨停与 ST。
一句话
策略先定「在哪些股票里选」再定「选哪些」。范围来源:自定义 list、指数成分 get_index_stocks、行业成分 get_industry_stocks、概念成分 get_concept_stocks、全市场 get_all_securities;落地 set_universe(stocks)。股票池对象随上市/退市变化,且需排除停牌、涨停、ST 等不可交易或高风险标的。
当前理解
- 代码后缀与常见标的(贯穿全教程):
.XSHE深交所、.XSHG上交所。示例:上证指数000001.XSHG、深证综指399106.XSHE、沪深 300 指数000300.XSHG、平安银行股票000001.XSHE。 - 范围来源可插拔(第 3 篇):自定义
stocks = ['000009.XSHE', …];按指数get_index_stocks('000300.XSHG')(沪深 300);按行业get_industry_stocks('I64')(计算机/互联网板块)。三类都set_universe(stocks)落地。 - 3.0 扩展(第 7 篇):
get_industry_stocks()选行业股、get_concept_stocks()选概念股——把 2.0 pick() 里的「上证指数+深证综指并集」换成行业/概念成分即可,选股逻辑不变。 - 全市场怎么表达(第 5 篇):
scu = get_index_stocks('000001.XSHG') + get_index_stocks('399106.XSHE')(上证指数 + 深证综指 ≈ 全 A 股);第 9 篇的get_all_securities(types=['stock'])是平台支持的全部证券注册表(含上市退市日期)。 - 股票池是动态的:全市场随新股上市、退市不断变化,所以轮动策略在每个周期内现算范围,不在 initialize 里定死。
- 过滤思想(第 6 篇,落地见第 9 篇):
- 停牌:无法交易 → 剔除(get_current_data 的 paused)。
- 涨停:买不进 → 剔除(high_limit 与现价关系)。
- ST:风险股 → 剔除(get_extras('is_st'))。
- 「股票池」≠「当期买入名单」:池是候选全集,buylist 是当期按因子排出来的要买名单。
来源
- 使用 JoinQuant 编写一个策略 — get_index_stocks / get_industry_stocks / set_universe
- 简单市值轮动策略 — 全 A 并集、周期内现算范围
- 市值轮动策略 2.0 — 过滤停牌/涨停/ST 的思想与 ST 定义
- 市值轮动策略 3.0 — 行业/概念选股
- 股票数据 — get_all_securities / get_extras 落地
- raw 路径:
原始出处(已归档)05-…06-…07-…09-…
常见混淆
- 指数代码 vs 股票代码撞号:
000001.XSHG是上证指数,000001.XSHE是平安银行股票——后缀不同、标的不同,写错会取到完全无关的数据。 - set_universe 是老函数:API 文档里已标「老函数」,用法是否仍为现行推荐 [需要验证]。
- 全 A 的口径:2015 语境里「上证指数 + 深证综指 ≈ 全 A」不含后来变化的板块结构;北交所时代此口径不完整。
- 行业编号:I64/I65 等是聚宽行业板块代码,不同来源(申万/证监会/聚宽)编号体系不同,别混用。
开放问题
- [需要验证] set_universe 的现行替代写法与是否仍必要。
- [需要验证] 全市场完整范围在现代平台的推荐取法(是否改用 get_all_securities + 过滤)。
- 过滤停牌/涨停的具体函数组合在本教程只有思想没有完整代码 → 后续量化课堂批次应补。
来源
更新 2026-09-06