回购公告 Alpha:公司回购事件后的漂移
股票回购公告是被研究最充分的公司事件之一:Ikenberry 等人 1995 年就记录了公告后长达四年的正漂移。但『回购』不是一个同质事件——低估驱动的价值型回购、护盘表态的信号型回购、对冲股权激励稀释的 EPS 管理型回购,信息含量天差地别。本文用 6000 个回购公告的受控模拟拆解:公告日平均 CAR +2.4%,但 12 个月漂移完全分化——价值型 +10.7%,信号型 +0.4%,EPS 型 +1.1%;BM × 回购规模双排序里,高 BM + 大规模格子 +6.6% 而低 BM + 小规模只有 +0.5%;执行率是事后最强分层——实际完成率 >75% 的公告 12 个月 +7.0%,<25% 的只有 +0.8%。『说了不买』的回购没有 alpha。附完整 Python 与四类实施陷阱(中阶)。
公司宣布回购自家股票,股价平均涨 2%-3%——这是全球市场重复验证过几百次的公告效应。更有意思的是后面的部分:Ikenberry、Lakonishok 和 Vermaelen 在 1995 年的经典论文里发现,公开市场回购公告后的超额收益持续了四年,累计约 12%,其中价值股(高账面市值比)达到 45%。一个完全公开的事件,漂移持续四年——这是对有效市场假说最尖锐的挑战之一,也是事件驱动策略里被翻检最多的富矿。
结论先放这:回购公告的 alpha 是真的,但它高度集中在特定子集里,无差别买入全部回购公告只能拿到平庸的收益。6000 个回购公告的受控模拟给出清晰的分层:公告日平均 CAR +2.4%,人人有份;但 12 个月漂移完全分化——低估驱动的价值型回购 +10.7%,管理层护盘表态的信号型回购只有 +0.4%,对冲股权激励稀释的 EPS 管理型回购 +1.1%。可观测特征的双排序同样锋利:高 BM + 大规模回购的格子 12 个月 +6.6%,低 BM + 小规模只有 +0.5%。而事后看最强的分层变量是执行率——实际完成率超过 75% 的公告后 12 个月 +7.0%,低于 25% 的只有 +0.8%:“说了不买”的回购公告没有 alpha。组合层面,无差别策略月均超额 0.31%,过滤后 0.79%——回购事件池里,过滤器贡献了大部分收益。
回购为什么携带信息——以及为什么经常不携带#
回购公告理论上是三重利好的叠加:信号(管理层认为股价低于内在价值,用真金白银投票)、现金流承诺(减少管理层挥霍自由现金流的代理问题)、每股指标改善(股本减少,EPS 机械上升)。但这三重逻辑在真实世界里被三类完全不同的回购动机稀释了。
价值型回购:股价被错杀,管理层基于信息优势判断低估,宣布回购且真实执行。这是 Ikenberry 论文机制的本体——管理层是全市场唯一合法的内幕信息持有者,他们的大额真金白银操作是最高等级的信号。这类回购的特征:公告前股价大幅下跌、公司账面市值比高、回购规模占市值比例大、历史上说到做到。
信号型回购:股价下跌引发管理层护盘表态,公告本身是目的,执行是次要的。A 股 2018 年、2022 年、2024 年的几轮”回购潮”里大量此类——公告金额上限写得漂亮,实际完成率不足三成。这类公告在发布日有正反应(市场短暂相信),但没有后续漂移,因为没有真实的资金流和信息内容支撑。
EPS 管理型回购:美股特色。公司常年滚动回购以对冲股权激励发行的稀释,回购决策与估值判断完全无关——苹果、微软每季度雷打不动的回购属于此类。它是资本结构管理的例行公事,公告不携带增量信息,自然也没有事件 alpha(但长期持续回购对每股价值的复利贡献是另一回事,那是持有逻辑不是事件逻辑)。
事件研究的第一课在这里具体化了:“回购公告”不是一个事件,是三个信息含量完全不同的事件共用一个名字。把它们混在一起统计,得到的平均效应是被稀释后的残影。
实验设计:6000 个公告的三类混合#
模拟设定:6000 个回购公告,三类动机占比 30% / 40% / 30%(价值/信号/EPS)。可观测特征包括 BM 分位(价值程度)、回购规模占市值比、公告前 6 个月收益;关键的部分可观测特征是执行率(公告后 12 个月实际完成金额比例)——它在公告时点不可见,但历史执行率可见。收益结构:公告日 CAR 三类都有(市场无法即时区分动机),12 个月漂移只有价值型显著为正。
import numpy as np
r = np.random.default_rng(42)
n = 6000
kind = r.choice([0, 1, 2], n, p=[0.30, 0.40, 0.30]) # 价值 / 信号 / EPS
bm = np.clip(r.beta(2, 2, n) + (kind == 0) * 0.18, 0, 1) # 价值型 BM 更高
size_pct = np.clip(r.gamma(2, 1.5, n), 0.2, 15) / 100 # 回购规模/市值
completion = np.clip(r.beta(3, 2, n) - (kind == 1) * 0.35,
0.05, 1) # 信号型执行率低
prior_ret = r.normal(-0.08, 0.15, n) - (kind == 0) * 0.06 # 公告前 6 月收益
# 公告日 CAR:三类都为正(市场即时无法区分动机)
car0 = (0.02 + 0.010 * (kind == 0) + 0.008 * (size_pct > 0.05)
+ r.normal(0, 0.02, n))
# 12 个月漂移:只有价值型显著,且被 BM、规模×执行共同放大
drift12 = ((kind == 0) * 0.09 + (kind == 1) * 0.005 + (kind == 2) * 0.00
+ 0.06 * (bm - 0.5)
+ 0.5 * size_pct * (completion > 0.5)
+ r.normal(0, 0.18, n))python注意 0.5 * size_pct * (completion > 0.5) 这一项:回购规模只有在真实执行的条件下才贡献漂移——公告 10 亿但只买了 5000 万的回购,规模数字是装饰品。
发现一:三类回购的 CAR 路径完全不同#

事件时间上的累计超额收益(公告前 6 个月到公告后 12 个月):三类回购都以下跌走进公告日(回购天然是跌出来的事件),公告日都有 +2% 上下的跳升——公告日反应无法区分真假回购,因为市场在 T 日只看到公告文本,看不到动机。分化从 T+1 个月开始:价值型一路爬升,12 个月累计漂移 +10.7%;信号型横盘(+0.4%);EPS 型微涨(+1.1%)。
这张图是全文的核心:回购 alpha 的时间结构是”跳升人人有份,漂移只属于真回购”。做公告日套利(公告前埋伏或公告日抢入)赚的是 2% 的跳升,拥挤且需要执行速度;做漂移(公告后从容建仓,持有 6-12 个月)赚的是 10% 的分化,不拥挤但需要把真回购从假回购里滤出来。后者才是散户和中小资金有比较优势的战场。
发现二:BM × 规模双排序——收益集中在”价值 + 大手笔”#

公告时点可观测的两个最强特征做双排序:高 BM + 大规模的格子 12 个月漂移 +6.6%,低 BM + 小规模只有 +0.5%,相差一个数量级。对角线上的两个格子(高 BM 小规模 +5.7%,低 BM 大规模 +2.2%)显示 BM 的贡献大于规模——这与 Ikenberry 的原始发现一致:回购漂移本质上是价值效应在事件维度上的浓缩。低估的公司宣布回购,是”便宜”和”管理层确认便宜”的双重信号;成长股的小额回购则大概率是股权激励对冲,没有估值信息。
对 A 股的映射要做一层修正:A 股回购历史短、EPS 管理型占比低,但信号型(护盘表态)占比显著更高——所以 A 股的关键过滤器不是 BM 而是执行的可信度:注销式回购 > 库存股回购 > 用于股权激励的回购,公告里写明”用于注销”的回购信息含量最高,因为它不可逆地减少股本,没有后手。
发现三:执行率是事后最强的分层变量#

按实际执行率分四组:完成率 <25% 的公告 12 个月漂移 +0.8%,25-50% 组 +2.7%,50-75% 组 +5.4%,>75% 组 +7.0%——严格单调。“说了不买”的回购公告没有 alpha,这在模拟里是构造的,但真实数据里同样成立(多篇 A 股实证给出一致结论:完成率与公告后长期收益显著正相关)。
问题在于执行率是事后变量——公告时你不知道这家公司会不会真买。可用的事前代理有三个:历史执行率(上次说到做到的公司这次大概率也是,公司层面的执行文化高度持续)、回购方案的结构细节(写明价格上限、资金来源为自有资金、用途为注销的方案执行率系统性更高;“不超过 X 亿元”且用途含糊的方案执行率低)、公告后的成交回报(A 股要求回购进展月度披露,首月就开始买的公司最终完成率远高于首月零成交的)。第三个代理最实用:把入场时点从公告日推迟到首次实际成交披露日,牺牲 2% 的公告跳升,换取对”真回购”的确认——考虑到漂移部分有 7-10%,这个交换是划算的。
组合层面:过滤器贡献了大部分收益#

组合模拟:无差别买入全部回购公告并持有 12 个月,月均超额 0.31%;只买”价值型特征”(高 BM + 大规模,或综合判定为低估驱动)的过滤组合,月均超额 0.79%——2.5 倍的差距。十年净值曲线上,无差别组合在扣除交易成本后接近平庸,过滤组合则有肉眼可见的斜率差异。
# 组合对比
naive_m = drift12.mean() / 12 # 全部公告
filt = (kind == 0) | ((bm > 0.5) & (size_pct > 0.05))
smart_m = drift12[filt].mean() / 12 # 过滤后
# naive 月均 0.31% vs smart 月均 0.79%python注意 filt 里混入了 kind == 0(真实动机)是模拟的上帝视角,实盘只能用 BM、规模、历史执行率、方案结构这些代理——过滤效果会打折,但方向不变:回购事件池的 alpha 密度不均匀,策略的核心工作是过滤而非覆盖。
实施陷阱#
陷阱一:公告的重复计数。 一家公司的一轮回购会产生一串公告:董事会预案、股东大会通过、首次执行、月度进展、完成公告。事件研究只能取一个锚点(通常是首次预案公告),把进展公告也当独立事件会严重高估样本量并引入自相关。
陷阱二:公告前下跌的均值回归混淆。 回购公司在公告前平均跌了 8%+,公告后的正漂移里有一部分是任何超跌股票都有的均值回归,不是回购的信息贡献。严格的做法是用”特征匹配对照组”(同行业、同 BM、同前期跌幅但未宣布回购的公司)做差分——Ikenberry 的 45% 价值股超额正是相对匹配组合的。
陷阱三:内幕交易窗口的制度差异。 美股回购受 10b-18 安全港规则约束(价格、数量、时间限制),A 股要求回购期间的窗口期限制。这些规则影响公司实际买入的时点分布,进而影响漂移的时间结构——用美股参数校准的持有期直接搬到 A 股会错位。
陷阱四:把持续回购者当事件。 苹果每季度都回购,它的”回购公告”没有意外成分,不该进事件池。正确的做法是按意外程度过滤:首次回购、隔了多年重启回购、规模远超历史的回购才是事件;例行滚动回购是公司特征,属于质量因子的范畴(buyback yield),用持有逻辑而非事件逻辑处理。
局限与延伸#
本文的三类动机划分在模拟里是离散且已知的,真实世界的动机是连续、混合且不可直接观测的——一笔回购可以同时有低估判断和护盘意图。执行率与漂移的因果方向也需要小心:可能不是”执行导致漂移”,而是”股价持续低迷让公司买得更多”——两者在数据上难以完全分离,尽管对策略而言(跟随真实执行的回购)两种因果都指向同一个操作。
延伸方向:把回购与增持(大股东/高管)做联合信号——两者同时出现的样本信息含量显著更高;检验回购 alpha 的 regime 依赖(熊市末期的回购潮 vs 牛市中的零星回购);以及一个开放问题——随着 A 股注销式回购的制度鼓励和普及,信号型回购的占比下降后,无差别策略的基线收益是否会系统性上移。
回购公告是管理层用公司的钱写下的一句话。这句话有时是”我们真的被低估了”,有时只是”请大家不要恐慌”。事件驱动交易者的全部工作,就是在公告发布的那一刻之后、市场完全反应之前,分辨出这句话是哪一种——而执行数据,是管理层无法伪造的笔迹。