3. 热力图数据源与指标选择

板块轮动热力图看起来只是“把颜色涂到格子里”,但真正决定它有没有参考价值的,是格子背后那几列数字从哪来、怎么算、代表什么。同一张热力图,用收盘涨跌幅和用主力净流入着色,得到的结论可能完全相反。本节围绕数据源与指标展开:先明确常用行情接口能提供什么,再逐个定义板块指数、涨跌幅、资金流、动量这几类核心指标,最后说明获取方式与口径统一的关键点。

一、数据源:三层结构,各司其职

制作板块热力图的数据通常来自三个层次,彼此不能互相替代。

第一层是板块成分与分类数据。它回答“哪些股票属于这个板块”。常见来源包括交易所与指数公司的行业分类(如申万行业分类、中证行业分类)、行情软件内置的概念板块,以及自己维护的自选板块清单。这一层变动频率低,但必须固定版本——如果今天用申万一级、明天用概念板块,热力图的横向对比就失去意义。

第二层是板块指数行情。它回答“这个板块整体涨了多少”。最规范的做法是直接取板块指数(如申万行业指数、中证行业指数)的日线数据,字段包括开盘、最高、最低、收盘、成交量、成交额。若所用接口不提供现成板块指数,则需要用成分股按市值加权自行合成,这一点后文详述。

第三层是个股与资金明细。它回答“板块内部谁在推动、钱往哪走”。包括个股涨跌幅、成交额、换手率,以及主力资金净流入等字段。资金流数据通常由行情服务商基于逐笔成交按单笔金额分档统计得出,不同厂商的“大单”阈值定义不同,跨源混用会引入系统性偏差。

常用获取方式有三类:其一是行情软件或数据终端的导出功能,适合手工制作观察清单;其二是量化数据接口(如各类开源财经数据包、券商研究接口),适合脚本批量拉取;其三是交易所与指数公司官网公布的指数行情文件,权威但更新节奏固定。选择时优先保证“同一指标、同一来源、同一口径”贯穿整张热力图。

二、核心指标的定义与计算

板块指数。若自行合成,常用市值加权:以基期总市值为基准,报告期指数 = 基期指数 ×(报告期成分股总市值 ÷ 基期成分股总市值)。成分股调整时需同步调整基期市值,否则指数会出现跳变。教学示例:假设某板块基期总市值 5000 亿元、基期指数 1000 点,某日收盘总市值 5250 亿元,则当日指数约为 1050 点。

涨跌幅。日涨跌幅 =(当日收盘 ÷ 前一交易日收盘 − 1)× 100%。这里有两个易错点:一是除权除息日必须使用复权价,否则分红送转会被误读为下跌;二是板块指数的“前收”应取指数自身前收,而不是成分股前收的简单平均。若热力图展示多日区间,应使用区间累计涨跌幅 =(末日收盘 ÷ 区间首日前收 − 1)× 100%,而不是把每日涨跌幅相加。

资金流。常用口径是主力净流入额 = 大单及超大单买入额 − 大单及超大单卖出额。板块层面有两种聚合方式:一是成分股主力净流入额直接求和;二是净流入额除以板块成交额得到“净流入强度”,后者更适合横向比较不同规模的板块。教学示例:A 板块当日主力净流入 8 亿元、成交额 200 亿元,强度 4%;B 板块净流入 3 亿元、成交额 40 亿元,强度 7.5%——绝对额 A 更大,强度 B 更高,热力图若按绝对额着色会掩盖 B 的相对强势。

动量。动量衡量趋势的持续性,常用 N 日收益率或“当前价相对 N 日均线的偏离度”。例如 20 日动量 =(当日收盘 ÷ 20 个交易日前收盘 − 1)× 100%。也可用 R² 或斜率刻画趋势的平滑程度。动量与涨跌幅的区别在于:涨跌幅看“这一段涨了多少”,动量更关注“上涨是否稳定延续”,二者结合能区分“单日脉冲”和“持续走强”。

板块热力图数据链路:从数据源到着色指标 数据源层 板块成分与分类 板块指数日线行情 个股与资金明细 指标计算层 涨跌幅 = 收盘/前收 − 1 资金流强度 = 净流入/成交额 动量 = 收盘/20日前收盘 − 1 热力图着色 红→绿:涨跌幅分档 色深:资金流强度 角标:动量方向 口径统一校验(任一不满足,热力图结论不可横向比较) 复权方式一致 · 板块分类版本固定 · 资金流厂商与阈值一致 · 区间首尾日期对齐 · 停牌股处理规则一致 示例:绝对额 vs 强度 A 板块:净流入 8 亿,成交额 200 亿 → 强度 4% B 板块:净流入 3 亿,成交额 40 亿 → 强度 7.5% 按绝对额着色:A 更热;按强度着色:B 更热 常见口径陷阱 · 未复权价把分红误判为下跌 · 日涨跌幅直接相加代替区间累计 · 混用两家厂商的大单阈值

三、获取方式与落地要点

实际制作时,建议按“先固定分类、再拉行情、后算指标”的顺序推进。以脚本方式为例,典型流程是:读取本地维护的板块成分表(板块名、成分股代码、权重),按交易日循环拉取成分股日线与资金流字段,聚合出板块级收盘指数、成交额、净流入,再计算涨跌幅、强度与动量,最后写入一张宽表供热力图读取。伪代码结构如下:

for 交易日 in 交易日列表:
    成分股行情 = 拉取(成分股代码, 交易日, 字段=[收盘, 前收, 成交额, 主力净流入])
    板块收盘指数 = Σ(成分股收盘 × 权重) / Σ(基期权重) × 基期指数
    板块涨跌幅 = 板块收盘指数 / 板块前收指数 - 1
    板块净流入强度 = Σ(主力净流入) / Σ(成交额)
    板块动量 = 板块收盘指数 / 20日前板块收盘指数 - 1
    写入宽表(交易日, 板块名, 涨跌幅, 净流入强度, 动量)

几个落地细节值得注意。第一,停牌股处理:停牌期间其价格沿用前收,但成交额与资金流为零,若直接参与强度计算会稀释分母,建议在成分权重中临时剔除或按最近有效值填充,并在宽表中标记。第二,缺失值:新股上市初期、数据接口偶发缺字段时,宁可留空并在热力图中显示为灰色,也不要用 0 填充——0 会被误读为“无涨跌、无资金流入”。第三,时间对齐:资金流数据常在收盘后延迟更新,若在盘中生成热力图,应明确标注“资金流为上一交易日数据”,避免把昨日资金与今日涨跌幅混在同一张图里解读。

选择指标时遵循“一图一主指标”原则:主着色只用一个指标(如区间涨跌幅),其余指标以角标、边框或悬浮提示呈现。多个指标同时用颜色编码,会让读者无法判断颜色到底在表达什么。

最后给出一个可直接套用的指标配置示例,作为观察清单的字段基础:板块名称、分类来源与版本、区间起止日、区间涨跌幅(复权)、主力净流入强度、20 日动量、成分股数量、数据更新时间。这八个字段足以支撑一张口径清晰、可复查的热力图,也为后续制作观察清单打下统一的数据底座。