← 返回模块
1.2.1.3beta 可读 · 未来付费内容校验中内容版本 2026-05-25

公司行动与现金流时间线

1.2.1 · 股票基础 · 金融与量化投资

周一早盘,上海某私募(private fund)研究员把一份回测报告甩给你:「2018-2023 沪深300 成分股的低 PE 组合,五年累计收益是 −12%。」你查源数据,发现 ¥10 万元名义本金五年里被 0.05% 印花税(stamp duty, 印花税)摩擦掉的部分不到 ¥600,T+1 结算(T+1 settlement, T+1 结算)也没有禁止换仓节奏——亏损不在交易成本上。再往下查,问题暴露:回测用的是「不复权」价格序列,所有除息日上的价格跳水都被算成了真实下跌。换成「前复权」序列重算,组合五年累计 +47%。本课讲的就是会让上面那个 −12% 出现的所有公司行动(corporate action)类型、它们各自在账户里如何被机械改写、以及回测代码必须如何对齐才能不撒谎。

现金分红的四个日期(Timeline)

现金分红的完整时间线由四个日期串起来:

日期含义
宣告日 declaration date董事会决议公告日
股权登记日 record date当日收盘持有者为受益人
除息日 ex-dividend date紧接 record date 的下一交易日
派息日 payment date现金到账日

在 A 股语境下,「股权登记日」与「除权除息日」之间没有间隔——除权除息日就是登记日的下一交易日。

为什么除息日开盘价会跳水约一个红利的幅度?无套利论证:除息日开盘买入者,不再享有这次分红的现金权利;如果他不能用更低的价格买进,这笔交易就是亏的。市场反向定价的结果是,除息日开盘价 PexP_{ex} 相对前一日收盘价(含权价)PcumP_{cum} 满足:

Pex=PcumDP_{ex} = P_{cum} - D

其中 DD 是每股现金红利。这个 DD 不是基本面信号,而是账户里钱的物理搬运。

送股、拆股与回购

  • ​派息(cash dividend)​​:以 ¥/股形式发钱。例:「10 派 5 元」即每 10 股发 ¥5 = 每股 ¥0.5。
  • ​送股(stock dividend)​​:以股票形式分配。例:「10 送 3」即每 10 股送 3 股,股本扩大 30%,价格相应除以 1.3,市值不变。
  • ​转增(capitalization from capital reserve)​​:与送股的股本和价格逻辑相同,会计来源不同(资本公积转股本)。
  • ​拆股 / 反向拆股​​:A 股极少出现拆股,但科创板等少数案例存在。机制是股本乘子与价格除子互为倒数。
  • ​股票回购(buyback)​​:上市公司用自有资金从二级市场买入自家股票,可注销减资或转入库存股。CN 公司法 2018 年修订后回购大幅扩张。

EPS 的反应是机械的:分子(净利润)不变,分母(流通股本)按上述比例缩或扩。每股账面价值同向变动。

前复权与后复权:回测代码的核心开关

把上面所有事件叠加到价格时间序列上,回测代码必须把历史价格按一个累计调整因子重算。两个事件类型对应两个乘子:

  • 拆股 / 送股比例 rsr_s(例如 2 送 1 即 rs=1.5r_s = 1.5,2 拆 1 即 rs=2r_s = 2):当日历史价格除以 rsr_s
  • 现金分红 DsD_s 在含权价 Pcum,sP_{cum,s} 上:当日历史价格乘以 (1Ds/Pcum,s)(1 - D_s / P_{cum,s})

某根 K 线对应的累计调整因子是其后所有事件的乘子连乘:

adj_factort=s>t1split_ratioss>t(1DsPcum,s)\text{adj\_factor}_t = \prod_{s > t} \frac{1}{\text{split\_ratio}_s} \cdot \prod_{s > t} \left( 1 - \frac{D_s}{P_{cum,s}} \right)

Wind / 同花顺 / Choice 提供三种价格序列:​​前复权​​(以今为锚,把历史价格按上式连乘下来——回测默认)、​​后复权​​(以历史为锚,今后的价格按反向乘子向前推)、​​不复权​​(原始价格,仅用于事件研究)。把回测代码挂到「不复权」序列上是绝大多数自制策略亏钱的第一原因。

Formula Explorer

P_cum * (1 - D / P_cum)

拖动含权价与分红,观察除息日理论开盘价的对应关系——这是除息日开盘缺口的全部物理。

把上述事件串成一条 5 年时间线

设 2020-01-01 某股票收盘 ¥50。后续事件:

  1. 2020-06-01 派 ¥1(含权价 ¥50)
  2. 2021-06-01 派 ¥1(含权价 ¥48)
  3. 2022-06-01 派 ¥1(含权价 ¥47)
  4. 2022-12-01 2:1 拆股(拆股前价 ¥60,拆后 ¥30)

到 2024-12-31 看 2020-01-01 那根 K 线的前复权价:

50×(11/50)×(11/48)×(11/47)×(1/2)50×0.98×0.979×0.979×0.523.4650 \times (1 - 1/50) \times (1 - 1/48) \times (1 - 1/47) \times (1/2) \approx 50 \times 0.98 \times 0.979 \times 0.979 \times 0.5 \approx 23.46

而不复权价仍是 ¥50。这两条曲线讲的不是同一只股票的同一段历史。

CN 红利税与回购约束

CN 现金分红的 个人所得税按持股期分档:持有期短于 1 月按 20%,1 月到 1 年按 10%,长于 1 年按 0%,由券商在派息日代扣。回购方面,沪深交易所要求公司预先报备回购方案,单日成交额受 ADV 比例限制,禁止在开盘集合竞价与重大事项窗口期内交易。

练习

Exercise

某股票在除息日前一日收盘价 50.00 元,董事会已宣告每股现金红利 1.00 元。两个月后股票以 60.00 元价格做 2:1 拆股。计算 (a) 理论除息日开盘价、(b) 拆股后价格、(c) 从今天回看原 50.00 元收盘对应的前复权价格、(d) 该收盘对应的累计调整因子。

提示
除息日开盘 = 含权价 − 分红;拆股后价格 = 拆前价 / 拆股比例。两个事件是顺序发生的,先除息再拆股。
提示
累计调整因子 = (1 − D/Pcum) × (1/split_ratio)。把这个因子乘到 50.00 上,就是今天回看的前复权价格。

通往下一课

你现在能把现金分红的四个日期排成一条时间线,知道为什么除息日开盘会跳水,能在送股、拆股、回购之间区分账户里的机械影响,并能写出前复权 / 后复权 / 不复权三套价格序列的调整因子公式。下一课把单只股票升格为一篮子,进入指数与 ETF 的世界:沪深300 的自由流通市值加权法、中证500 的中盘对标、华泰柏瑞沪深300 ETF(510300.SH)的申购赎回机制,以及一档 ETF 的实际跟踪误差最终从哪里来。