• Docs >
  • 指数、行业与主题:给股票分组的三种方式
Shortcuts

指数、行业与主题:给股票分组的三种方式#

研究里经常要回答”这只股票和哪些股票是一类”。指数、行业、主题(A 股常说的”概念”)都在回答这个问题, 但它们由不同的人、按不同的规则、为不同的目的划分。混用它们,会得到看似合理却经不起推敲的结论:拿今天的 主题名单回测三年前,拿指数成分当行业,或者把一只股票同时算进两个”互斥”的行业。

先看三者的区别:

指数

行业

主题(概念)

谁来划分

指数公司:中证、国证、标普道琼斯……

分类体系:申万、GICS……

数据商或市场叙事:同花顺……

按什么划分

公开的选样规则:市值、流动性、财务指标

主营业务,通常看收入构成

业务关联、政策、技术或事件

一只股票可以属于

任意多个指数,也可以一个都不属于

同一体系的同一层级里恰好一个

任意多个主题

权重

有,按编制方法计算

没有,只有名单

没有,只有名单

多久变一次

定期调样,如沪深 300 每半年

很少;体系偶尔改版,公司转型时重新归类

随时新设、调入调出

典型用途

业绩基准、股票池、对冲

行业中性、行业轮动、风险模型

热点与事件研究

libfinance 代码

000300.XSHG、SPX.US

480000.SW、45.GICS

300008.THS

三者在 libfinance 里用同一组形状的函数查询——证券属于哪些、某个对象包含哪些、成分权重是多少——并且都按 as_of 回答”那一天的事实”,见 4 行业和概念信息。

指数:一篮子股票加一套计算规则#

指数不只是一份名单,它由三部分组成:

  • 选样规则:哪些股票进来。沪深 300 选沪深两市规模大、流动性好的 300 只股票;中证 500 选排在沪深 300 之后的 500 只;标普 500 由委员会按市值、流动性、盈利等条件挑选。

  • 加权方式:每只股票占多少。最常见的是自由流通市值加权;道琼斯工业平均按股价加权;也有等权、红利加权、 对单只成分设上限的修正市值加权。

  • 基日与基点:从哪天、从多少点开始算。点位只在同一个指数内部可比——沪深 300 的 4000 点和上证指数的 3000 点 之间没有高低之分。

按选样规则,指数大致分为宽基(沪深 300、中证 1000、标普 500,代表一个市场或一个市值段)、行业(中证 银行)、风格与策略(红利、价值、低波)和主题(中证新能源)。另外两点值得注意:

  • 价格指数与全收益指数。常见的指数点位是价格指数,成分股分红后点位不会补回,长期看会低估真实收益。 拿价格指数做基准,相当于让基准少算了分红。

  • 发布日之前的点位是回算的。一个 2014 年发布、基日 2004 年的指数,2004–2014 年的点位是编制者事后按规则推算 的,当时并没有人能投资它。

常见用途:业绩基准(”跑赢沪深 300”);股票池(”在中证 800 里选股”);对冲(用股指期货对冲组合的市场 暴露)。

陷阱:成分是变化的。用今天的沪深 300 成分回测 2018 年,选进来的全是”后来变大的公司”——这是典型的幸存者 偏差。历史股票池要用 get_index_constituents(..., as_of=...)。

行业:一棵互斥、全覆盖的分类树#

行业分类按公司的主营业务(通常看收入构成)把股票分进一棵树。两条性质让它和指数、主题完全不同:

  • 互斥:在同一个分类体系的同一层级,一只股票只属于一个行业。

  • 全覆盖:每只股票都有行业。

因此同一层级的行业正好把整个市场切成互不重叠的几块,这是”行业中性”的前提:可以对每个行业单独做事,而不会 重复计算。

体系

市场

说明

申万 SW

A 股

申万宏源研究编制,A 股研究最常用。三级结构;2021 年改版,一级行业从 28 个调整为 31 个

GICS

全球

MSCI 与标普道琼斯联合制定,四级结构,11 个一级行业(Sector),机构投资最常用

ICB

全球

富时罗素的行业分类基准,四级结构

NAICS

北美

北美产业分类体系,政府统计口径,按生产活动划分,2 到 6 位代码

SIC

美国

美国标准产业分类,较老,SEC 登记文件仍在使用

常见用途:

  • 行业中性化。一个选股因子如果偏好银行股,它的收益可能大半来自银行板块的涨跌,而不是选股能力。对行业 哑变量回归取残差,或在每个行业内部分别排序,可以去掉这部分。

  • 风险模型。Barra CNE5 的 31 个行业因子就是申万一级行业的哑变量,见 7 因子。

  • 行业轮动与比较。估值高低要在同一行业里比较才有意义:银行的市盈率和软件公司的市盈率不是一回事。

陷阱:分类会变。公司转型会被重新归类,分类体系本身也会改版——申万 2021 年改版前后的行业节点数是 400 与 608, 改版前的”采掘”在改版后拆成了”煤炭”与”石油石化”。拿今天的行业归属回测过去,相当于用后来才知道的业务结构给 当年的公司分类。用 get_instrument_industry(..., as_of=...) 取当时的归属;跨改版的长区间研究,要先决定用哪一版、 如何映射。

主题(概念):围绕叙事的股票集合#

主题把与某个故事相关的股票放在一起:新能源汽车、大飞机、京津冀一体化、算力……它不追求互斥,也不追求全覆盖:

  • 多对多:一只股票可以同时属于几十个主题;一个大主题可以有上千只成分(新能源汽车约 1000 只)。

  • 由叙事驱动:政策出台、技术突破、事件发生时,数据商会新设主题、调入调出成分,主观判断的成分很大。

  • 没有权重:只有名单。libfinance 给出的是由名单推出的等权(derived_equal_weight),不是供应商权重。

常见用途:追踪市场热点和资金轮动;事件研究(政策发布后相关股票的反应);解释短期的联动——为什么几只 看起来不相关的股票同一天涨停。

陷阱:主题是三者里未来信息最严重的。很多主题是在行情发生之后才设立的,成分也常在事后补入; 用今天的主题名单回测过去,等于提前知道了哪些股票后来会被市场归为一类。libfinance 中的主题数据只从最近开始 (更早的 as_of 会报 CoverageError),它适合研究当下,不适合做长历史回测。

怎么选#

你要做的事

用

注意

衡量策略好坏、选业绩基准

指数

留意价格指数不含分红

限定一个历史股票池

指数成分

传 as_of,否则有幸存者偏差

去掉因子里的行业暴露、控制组合风险

行业

同一体系、同一层级;传 as_of

研究热点、事件、短期联动

主题

历史短,不要拿来做长回测

代码表#