4. 板块收益率数据构建与清洗
相关性分析对数据质量极其敏感。两个板块如果因为停牌、缺失交易日或分红除权处理不当而产生虚假的同步或异步波动,相关系数就会被系统性扭曲,后续的突变检测和压力测试结论也就失去了可信度。本节的任务很明确:把原始的板块指数点位或ETF行情,加工成一份时间对齐、无缺失、异常已识别、频率统一的收益率数据集,作为整个课程后续所有分析的输入底座。
一、先明确对象:用指数还是用ETF
板块收益率有两条常见的数据来源。第一条是行业/主题指数,例如中证某行业指数,优点是覆盖成分股全、历史长、不受申赎影响;缺点是部分主题指数发布较晚,早期数据缺失。第二条是板块ETF,优点是可直接交易、贴近真实可投资标的;缺点是存在折溢价、跟踪误差,且早期流动性差时价格噪声大。
实务中的取舍原则是:做宏观板块轮动研究优先用指数,做可交易策略回测优先用ETF。若两者混用,必须在文档中标注每个板块的数据源,避免后续把指数收益率和ETF收益率直接比较。本节示例统一采用指数日收盘点位作为原始输入,共选取8个板块,时间区间设为2019-01-01至2024-12-31(示例假设)。
二、收益率计算:对数收益率与对齐基准
相关性分析使用对数收益率更合适,因为它具有时间可加性,且对极端值的处理更稳定。计算公式为:
r_t = ln(P_t / P_{t-1}) = ln(P_t) - ln(P_{t-1})
这里必须先约定参照系:P_t 为第 t 个交易日的收盘点位,r_t 表示从 t-1 日收盘持有到 t 日收盘的收益率。全文及图示均采用这一约定,不做切换。计算时先对价格取自然对数再差分,比直接算简单收益率在数值上更稳健,也便于后续做多期累加。
三、缺失值:三种成因与对应处理
缺失值不是简单地“填掉”就完事,必须先判断成因,否则填补本身会制造伪相关。常见成因有三类:
- 交易日历不一致:不同板块指数可能因编制规则或节假日安排出现交易日差异,表现为某日一个板块有值、另一个没有。
- 停牌或数据源断点:ETF在极端行情下可能停牌,或数据供应商接口在某段区间缺记录。
- 指数发布滞后:新发布指数在起始日之前没有数据,属于结构性缺失,不能填补。
处理策略上,先对齐交易日历,再处理残余缺失。具体做法是:以所有板块交易日的并集为基准日历,对每个板块做前向填充(forward fill)得到对齐价格序列,再计算收益率。前向填充的含义是“当日无新价格则沿用上一有效收盘价”,对应收益率为0,这在停牌场景下是合理的。但对于连续缺失超过5个交易日的情况,前向填充会掩盖真实的价格跳变,此时应标记为无效区间并从样本中剔除,而不是强行填补。结构性缺失(指数发布前)则直接截断起始日期,保证所有板块从同一有效起点开始。
四、异常值识别:区分“真跳变”与“脏数据”
板块收益率的异常值有两类,处理方式完全相反。第一类是真实的市场跳变,例如政策突变导致的单日大涨大跌,这类必须保留,因为它正是相关性突变研究的对象。第二类是数据错误,例如价格录入错误、复权因子错配导致的虚假跳变,这类必须修正或剔除。
识别方法上,采用基于稳健统计的MAD准则比直接用3σ更可靠,因为均值和标准差本身会被异常值污染。对每个板块的收益率序列计算中位数 Med 和绝对中位差 MAD,定义稳健Z分数:
MAD = median(|r_t - Med|)
Z_t = 0.6745 * (r_t - Med) / MAD
|Z_t| > 3.5 视为候选异常
候选异常不能直接删除,而要回到原始价格核对:若前后价格连续、成交量正常,判定为真实跳变,保留;若价格出现无法解释的断层(如单日翻倍后次日回落),判定为脏数据,用相邻有效值修正或置为缺失后按缺失规则处理。示例中8个板块在5年区间内共识别出候选异常17个,经核对保留14个真实跳变、修正3个数据错误。
五、频率对齐与最终产出
若原始数据存在日频与周频混用,需统一到日频作为分析基准,周频数据通过日频聚合得到,而不是反向插值。对齐完成后,检查每个板块的有效样本数、缺失率、异常处理记录,形成标准数据集。下图展示了从原始行情到标准收益率序列的完整处理链路与关键判断节点:
最终产出的数据集应包含:对齐后的日频收益率矩阵(行=交易日,列=板块)、每个板块的缺失率与异常处理记录、以及一份可复现的数据日志。示例中8个板块对齐后有效交易日约1450个,平均缺失率控制在0.8%以内,异常处理记录完整可追溯。只有这份“干净且可解释”的数据集,才能支撑后续相关性矩阵的稳定估计,也才能让板块相关性突变检测的结果具有真实的业务含义,而不是数据噪声的放大。