1. 课程导入
在量化投研、行情回测与因子计算中,价格序列的“连续性”是一切统计推断的前提。然而真实市场里,股票价格会被分红、送股、配股、拆股、合股、增发等公司行动不断打断。若直接使用未复权价格计算收益率、均线或动量因子,就会在除权除息日出现虚假的跳空,导致回测结果严重失真。本课程的核心,就是教会你如何识别公司行动、构建复权因子,并把历史价格还原成可比较、可回测、可复现的连续序列。
一、什么是公司行动与复权因子
公司行动(Corporate Action)是指上市公司股本、股东权益或现金流发生变化的事件。它通常由上市公司公告,并由交易所确定除权除息日、股权登记日和派息日。常见的公司行动可以分为两类:
- 现金类:现金分红、特别股息,直接影响股东现金收益,但不改变总股本。
- 股本类:送股、转增、拆股、合股、配股、增发,改变总股本或每股对应的净资产,从而改变理论价格。
复权因子(Adjustment Factor)是一个乘数,用于把除权除息日之后(或之前)的价格调整到同一价格基准上。它的本质是“剔除公司行动造成的非市场性价格跳变”,让不同日期、不同事件前后的价格具备可比性。复权因子通常由除权除息参考价与前一交易日收盘价推导而来,其数值会随每一次公司行动累积更新。
前复权价 = 原始价 × 前复权因子
后复权价 = 原始价 × 后复权因子
复权因子 = 除权除息参考价 ÷ 除权除息前收盘价(再按方向累积)
二、核心原理:为什么必须做复权
假设某股票在除权日前收盘价为 20 元,实施“每 10 股送 10 股”,则除权参考价约为 10 元。若直接使用原始价格,系统会认为该股票一天之内下跌了 50%,这显然是虚假信号。复权因子此时约为 0.5,用它调整后,价格序列重新连续,收益率计算才具有经济含义。
复权因子的推导依赖三个关键量:
- 除权除息前收盘价:事件发生前最后一个交易日的收盘价。
- 每股现金分红与送转比例:决定理论价格下调幅度。
- 配股价与配股比例:配股会引入新增资金,需按加权方式计算参考价。
不同数据源对复权因子的累积方式、精度处理和除权日归属可能存在差异,这也是实战中必须做“历史还原”的原因:只有把因子还原到统一口径,才能保证跨市场、跨数据源、跨时间段的回测结果一致。
三、方法流程:从原始行情到复权序列
一个可落地的复权因子还原流程通常包含以下步骤:
- 数据准备:获取原始日行情(开高低收、成交量)与公司行动明细表,字段至少包括除权除息日、现金分红、送股比例、转增比例、配股比例、配股价。
- 计算除权参考价:按交易所公式计算事件日的理论参考价。
- 生成单次因子:用参考价除以前收盘价,得到该次事件的单次复权因子。
- 累积因子:按时间顺序把单次因子连乘,得到每个交易日的累积复权因子。
- 价格还原:用累积因子乘以原始价格,得到前复权或后复权序列。
- 质量校验:检查除权日收益率是否异常、因子是否出现零值或负值、跨数据源是否一致。
下面是一个简化的因子累积伪代码,便于理解计算逻辑:
factor = 1.0
for each trading_day in ascending_order:
if trading_day has corporate_action:
ref_price = (prev_close - cash_dividend + rights_price * rights_ratio) / (1 + bonus_ratio + rights_ratio)
single_factor = ref_price / prev_close
factor = factor * single_factor
cumulative_factor[trading_day] = factor
adjusted_close = raw_close * cumulative_factor
四、案例与场景:一次送转引发的回测偏差
某量化策略使用 20 日均线突破作为买入信号。某股票在 6 月 10 日实施“每 10 股转增 10 股”,原始价格从 30 元变为 15 元。若未复权,系统在 6 月 11 日检测到价格“跌破均线”,触发卖出,但实际市场并未发生下跌。复权后,价格序列保持连续,均线信号不再误触发。
| 场景 | 未复权处理 | 复权处理后 |
|---|---|---|
| 除权日收益率 | 出现 -50% 虚假暴跌 | 收益率接近真实市场波动 |
| 均线信号 | 误触发卖出 | 信号连续稳定 |
| 动量因子 | 排名严重失真 | 因子可比性恢复 |
| 回测收益 | 偏差可达数十个百分点 | 结果可复现、可解释 |
五、常见误区与复盘要点
误区二:直接使用数据商提供的复权价,却不核对因子口径。不同数据源在除权日归属、精度舍入、配股处理上存在差异。
误区三:忽略因子累积方向。前复权与后复权因子互为倒数关系,混用会导致价格序列整体偏移。
误区四:只处理日频,忽略分钟频。高频回测中,除权日当天的分钟价格同样需要按因子还原。
复盘时建议重点检查三件事:第一,除权除息日的收益率是否落在合理区间;第二,累积因子是否单调、是否出现零值或负值;第三,同一标的在不同数据源下的复权序列是否在可接受误差内一致。只有通过这三项校验,复权因子才真正具备实战可用性。
本课程后续将围绕公司行动识别、因子推导、历史还原、跨源校验和工程化实现逐步展开。掌握本章的定义与框架后,你已经具备理解后续所有实战内容的基础。