2. 融资余额数据清洗与板块匹配
上一节我们明确了“板块融资余额变化”与“行情涨跌”之间需要对照观察,但真正动手之前,必须先解决一个更基础的问题:数据从哪里来、长什么样、能不能直接用。融资余额数据看似只是“某板块某日一个数字”,实际上它同时涉及交易所披露口径、个股与板块的归属关系、交易日历对齐三个层面。本节围绕“把原始数据整理成可用的板块融资余额面板”这一目标,讲清数据结构、常见脏数据形态,以及清洗与匹配的具体做法。
一、先看清数据结构:三个维度与两种频率
融资余额数据本质是一张“时间 × 标的 × 指标”的三维表。以沪深交易所披露的融资融券明细为例,常见字段包括:交易日期、证券代码、证券简称、融资余额(元)、融资买入额(元)、融资偿还额(元)、融券余额等。其中融资余额是存量指标,表示截至当日收盘尚未偿还的融资总额;融资买入额与偿还额是流量指标,二者之差近似对应余额的日变化(还需考虑除权、标的调整等因素)。理解存量与流量的区别,是后续计算“余额变化率”和“净买入”的前提。
频率方面,交易所按交易日披露,非交易日无数据。这意味着原始序列天然存在周末与节假日缺口,不能简单按自然日填充。板块层面则没有官方“板块融资余额”直接披露,必须由个股数据按成分股聚合得到——这正是“板块匹配”要解决的问题。
二、常见问题:原始数据不能直接聚合
把个股数据加总成板块数据之前,以下几类问题几乎必然出现,需要逐一处理:
- 停牌与缺失:个股停牌当日无融资数据,若直接跳过,会导致板块成分股数量在时间上不一致,聚合结果出现“假下降”。
- 标的调入调出:融资融券标的名单会定期调整,某只股票可能中途被调入或调出,造成余额序列出现跳变,而非真实资金变化。
- 代码与简称变更:股票更名、代码迁移(如北交所、重组)会导致同一标的在不同日期以不同标识出现,直接按简称匹配会漏算。
- 单位与精度不一致:不同来源可能以“元”“万元”“亿元”混用,或保留小数位不同,聚合前必须统一。
- 重复记录与异常值:同一日期同一代码出现多条记录,或余额为负、突增数十倍,多为数据拼接或单位错误。
三、清洗与匹配的完整链路
下面这张图把本节的核心处理链路画出来:从原始明细出发,经过标准化、去重与异常处理、成分股映射、交易日对齐,最终形成“日期 × 板块”的融资余额面板。图中同时标出了每一步的关键判断点。
四、关键操作细节
1. 标准化。把融资余额统一换算为“元”,日期统一为 YYYY-MM-DD,证券代码统一为 6 位字符串(避免前导零丢失)。这一步看似琐碎,却是后续所有匹配的基础。
2. 去重与异常。以“日期 + 代码”为唯一键,重复记录保留更新时间最新的一条。对余额为负、或单日变化超过合理阈值(例如超过 50%)的记录打标记而非直接删除,留待人工复核——因为标的调入调出也会造成大幅跳变,不能一律当错误。
3. 成分股映射。准备一张“个股代码—板块代码—生效日期”的映射表。同一只股票可能同时属于多个板块(如行业板块与概念板块),聚合时要按板块分别处理。对于中途调入调出的标的,映射表需带生效区间,避免用当前成分回算历史。
4. 交易日对齐。以交易日历为基准左连接,停牌日保留记录并标记 is_suspended=1,融资余额可沿用前值但必须保留填充标记。这样聚合时既能保持时间轴连续,又不会把填充值误当真实变化。
5. 聚合。按“日期 + 板块”对融资余额求和,同时输出当日有效成分股数量。若某板块某日有效成分数明显低于常态,说明数据覆盖不全,该日聚合值应谨慎使用。
五、一个可参考的面板字段设计
清洗完成后,建议面板至少包含以下字段,便于后续做变化率与行情对照:
| 字段 | 含义 | 示例 |
|---|---|---|
| trade_date | 交易日 | 2024-03-15 |
| sector_code | 板块代码 | BK0475 |
| fin_balance | 板块融资余额(元) | 12860000000 |
| valid_count | 当日有效成分股数 | 86 |
| chg_rate | 余额日变化率 | 0.0123 |
| is_filled | 是否含填充值 | 0 |
其中 chg_rate 建议用“当日余额 / 前一交易日余额 − 1”计算,且仅在前一交易日有效成分数达标时才计算,否则置空。这样得到的面板,才具备与行情序列做对照分析的可信度。
完成本节后,你应当得到一张时间连续、成分可追溯、缺失有标记的板块融资余额面板。它是后续计算余额变化、与指数涨跌做对照的基础;如果这一步的口径不统一,后面所有对照结论都会失真。