2. 板块定义与数据准备
板块动量排名能否反映真实的市场结构,第一步并不取决于动量公式,而取决于“板块”本身定义得是否清晰、数据是否干净。同一个交易日,用申万一级行业口径算出的强势板块,与用概念题材口径算出的结果可能完全不同。因此本节的核心任务是:先确定板块分类标准,再把成分股、行情、基本面三类数据对齐到统一的时间轴与代码体系上,最终产出一张可直接进入动量计算的宽表数据集。
一、板块分类标准:先定口径,再谈强弱
常见的板块口径有三类。行业板块依据上市公司主营业务归类,稳定性强、成分变动少,适合观察中期产业轮动;概念板块依据主题、技术路线或事件驱动聚合,成分股重叠度高、调整频繁,适合捕捉短期资金聚焦;地域板块按注册地或经营区域划分,多用于区域政策与主题联动分析。三者并非互斥,一只股票可以同时属于“电子”行业、“算力”概念和“广东”地域。
实操中建议明确三条规则:其一,选定唯一主口径作为排名基准,例如以申万二级行业为主、概念板块为辅做交叉验证,避免多口径混排导致排名不可比;其二,固定成分股快照时点,行业分类通常按季度更新,概念板块可能按月甚至按周调整,必须记录每个调仓日的成分名单,防止用今天的成分回算历史收益造成“前视偏差”;其三,明确板块内权重方式,等权、自由流通市值加权与成交额加权会显著改变板块动量的数值与排序,需在数据集字段中固化。
二、三类数据的获取与清洗
成分股数据是连接个股与板块的桥梁,至少需要“板块代码、板块名称、股票代码、纳入日期、剔除日期”五个字段。清洗重点是处理停牌、退市、ST以及成分股重复归属问题:同一股票在同一板块内只保留一条有效记录;对区间内被剔除的股票,其收益只计入剔除日之前,不能整段回填。
行情数据包括日频的开高低收、成交量、成交额、复权因子与换手率。清洗要点有三:一是统一复权方式,动量计算应使用后复权价格,避免除权除息造成的假跌;二是对齐交易日历,个股停牌日不参与当日收益计算,板块收益按当日实际有交易的成分股重新归一化权重;三是剔除异常值,对单日涨跌幅超过合理阈值且无公告支撑的记录做标记而非直接删除,保留可追溯性。
基本面数据如营收增速、净利润、ROE、估值分位等,主要用于解释动量成因或做强度过滤。其清洗难点在报告期对齐:一季报、中报、年报的披露时间不同,必须按“公告日”而非“报告期”落到交易日上,否则会引入未来信息。对于缺失值,建议保留空值并附加“数据可用标记”,而不是用均值填充掩盖问题。
三、数据集构建:对齐、聚合与校验
三类数据清洗完成后,按“股票代码 + 交易日”做左连接形成个股日频宽表,再通过成分股映射表聚合到板块层。聚合时需注意:板块当日收益应为成分股收益的加权平均,权重取前一交易日的自由流通市值,且仅纳入当日有交易的成分股并重新归一化;板块成交额取成分股成交额之和;板块基本面指标取成分股中位数而非均值,以降低极端值干扰。
构建完成后必须做三项校验:一是覆盖率校验,检查每个板块每日有效成分股数量是否低于阈值(如少于 5 只则标记为低置信);二是收益一致性校验,用板块加权收益与板块指数官方收益对比,偏差持续超过 0.1% 需排查复权或权重问题;三是时间连续性校验,确认无重复主键、无未来日期、无成分股在纳入日前出现收益记录。
上图的顺序不可颠倒:先有清洗规则,再做主键对齐,最后才聚合到板块层。若先聚合再清洗,个股层面的停牌、复权错误会被加权平均掩盖,后续很难定位。
四、可直接使用的数据集字段清单
下面给出一份可参考的板块日频宽表字段设计,字段粒度与命名可根据实际数据库调整,但语义应保持一致。
| 字段名 | 含义 | 示例值 | 说明 |
|---|---|---|---|
| trade_date | 交易日 | 2023-06-30 | 与交易所日历一致 |
| sector_code | 板块代码 | SW801080 | 主口径唯一标识 |
| sector_name | 板块名称 | 电子 | 申万一级行业 |
| stock_num | 有效成分股数 | 312 | 当日有交易且未剔除 |
| sector_ret | 板块日收益 | 0.0182 | 前一日自由流通市值加权 |
| sector_amount | 板块成交额 | 8.6e10 | 成分股求和 |
| roe_median | ROE 中位数 | 0.093 | 按公告日对齐 |
| data_flag | 数据可用标记 | 1 | 0 表示低置信或缺失 |
完成上述步骤后,数据集已具备进入动量计算的条件:每个交易日、每个板块都有一致的收益序列、成交活跃度与基本面标记。后续的动量排名与强度变化分析,都应基于这份口径统一、可追溯、可复现的数据集展开,而不是临时从不同来源拼接数据。