halo 的技术博客

返回

问题:一个被引用了三十年的数字#

打开任何一本事件驱动策略的书,翻到「特殊situation」那一章,你会看到这句话:

分拆上市的子公司在上市后 1-3 年内显著跑赢市场。

这个结论来自 Cusatis、Miles 和 Woolridge 1993 年的论文,之后被无数篇文献重复验证。彼得·林奇在《One Up on Wall Street》里专门写过分拆股,乔尔·格林布拉特的《You Can Be a Stock Market Genius》整整一章都在讲这个。

数字通常长这样:三年累计超额收益 +10% 到 +20%

看起来是白捡的钱。母公司把一块业务拆出来,指数基金因为持仓规则不能持有子公司股票(不在指数里、市值太小、行业不匹配),被迫在几天内抛掉。价格被砸下去,然后反弹。你只要在那里接着就行。

但这个数字里,有多少是 Alpha?

这不是修辞问题。它可以被精确回答——只要你有一个真值已知的世界。

方法:把真实 Alpha 精确设为零#

下面所有数字来自一个受控模拟,不是历史回测。这么做的原因很简单:在真实数据上,你永远不知道「真实 Alpha」是多少,所以你没法给估计量打分。你只能拿一个估计量去对比另一个估计量,而两个都可能是错的。

模拟里我把真实持续 Alpha 精确设为 0。子公司的收益完全由三因子 + 特质噪声 + 强制抛售的价格压力决定。没有任何持续的超额收益被植入。

然后我问:四种常见的「有没有跑赢」口径,会报出什么数字?

设定:

  • 1500 个分拆事件,母公司市值中位数 59 亿美元,子公司中位数 13.19 亿美元
  • 子公司越小,SMB(规模因子)载荷越高,平均载荷 1.116——这是污染的源头
  • 指数基金持有母公司 22% 的股份,被迫在 5 天内抛售子公司股票
  • 换手率随市值上升(小盘孤儿股相对成交更稀薄),所以抛压的冲击是规模依赖的
  • 压价按 √(资金流/ADV) 建模,半衰期 18 天,平均峰值压价 13.17%

两个让数字可信的工程细节:

共同随机数(common random numbers)。所有随机冲击只抽一次,在所有场景里复用。这样场景之间的差异是精确的参数效应,不是抽样噪声。后面你会看到规模溢价扫描的传导斜率精确等于 1.0000——这只有在共同随机数下才可能。

横截面去均值。特质冲击在每一天做横截面中心化。每个事件的离散度完全不变(N=1500),但跨事件的平均特质项精确为 0。这一步让零 Alpha 的安慰剂读出精确的零,而不是一个运气不好的抽样假象。没有这一步,一次不走运的抽样看起来就像一个「发现」。

结果一:同一批数据,四个答案#

四种口径对比与资金来源分解

同一批 1500 个事件,一年期窗口:

口径一年期超额t 值
原始 CAR+25.17%+20.57
市场调整 CAR+16.96%+14.82
规模匹配 CAR+13.49%+12.25
三因子 Alpha+13.11%+11.91

真实持续 Alpha 是 0

四个数字全部显著为正,t 值最低的也有 11.91。光是换一个基准,结论就摆动 3.85 个百分点,而这三个数字没有一个是 Alpha。

分解告诉你那 +16.96% 到底是谁的钱:

来源贡献
强制抛售反弹+13.16%
规模(SMB)暴露+3.10%
价值(HML)暴露+0.38%
市场 beta ≠ 1+0.37%
残差−0.05%

残差 −0.05%。四个机械来源解释了这个数字的全部。

结果二:规模溢价的传导斜率精确等于 1.0000#

这是全文最硬的一条证据。

对抗式检验:规模溢价扫描与恢复检验

把强制抛售关掉,真实 Alpha 保持 0,然后扫描外生的规模溢价 SMB,看市场调整 CAR 怎么动:

SMB 溢价市场调整 CAR三因子 Alpha
0%/年+0.45%−0.052%
1%/年+1.56%−0.052%
2%/年+2.68%−0.052%
3%/年+3.80%−0.052%
4%/年+4.91%−0.052%
6%/年+7.14%−0.052%

三因子那一列完全不动,锁死在 −0.052%(回到小数点后第六位都不变)。

而市场调整那一列的传导斜率是 1.1159,平均 SMB 载荷是 1.1159,比值 1.0000

这不是「差不多」。这是恒等式:

市场调整 CAR=βˉSMB×SMB 溢价+其他\text{市场调整 CAR} = \bar{\beta}_{SMB} \times \text{SMB 溢价} + \text{其他}

你测出来的那个「分拆超额收益」,逐字就是规模溢价乘以规模载荷。 换个说法:如果那十年小盘股跑赢大盘,分拆研究就会「发现」超额收益;如果小盘股跑输,同一套方法会「发现」分拆股表现不佳。它测的从来不是分拆。

恢复检验从另一个方向确认了这一点。植入已知的非零 Alpha,看三因子估计量能不能捞回来(去掉安慰剂基线后):

植入真值三因子原始读数去基线后误差
+0.00%−0.052%+0.000%
+2.00%+1.948%+2.000%~0
+4.00%+3.948%+4.000%~0
+6.00%+5.948%+6.000%~0

最大绝对误差 5.55e-17——浮点精度级别。估计量本身没问题,问题在基准。

结果三:剩下的 13% 也不是 Alpha#

三因子 CAR 还有 +13.11%,真实 Alpha 却是 0。这不矛盾——它是流动性报酬,不是预测能力

两条证据。

事件时间路径与规模五分位

第一,钱在前 20 天就赚完了。

时点三因子 CAR占全年比例
第 5 日+1.87%14.3%
第 20 日+6.79%51.8%
第 60 日+11.85%90.4%
第 126 日+13.02%99.3%
第 252 日+13.11%100%

一半在 20 天内,九成在 60 天内。这条曲线的形状就是强制抛售压力的衰减形状(半衰期 18 天),不是任何「持续三年的价值发现」。

那些报告「三年超额收益」的研究,测到的是同一笔钱——只是把窗口拉长了,让它看起来像是长期的。

第二,把窗口滚离资金流,它就消失了。

伪事件日检验:同一批股票、同一批数据,但假装分拆发生在另一个随机日期,重算 60 日窗口。

窗口60 日三因子 CAR
真实事件日对齐+11.85%
伪事件日(滚离资金流)+1.91%

塌了 84%。如果那是子公司的某种内在质量(管理层激励改善、业务聚焦),它不该关心你从哪天开始数。它关心——所以它是资金流。

结果四:容量才是真天花板#

你不是在收割 Alpha,你是在给被迫抛售的人提供流动性。这意味着你自己的钱会把这笔收益吃掉

容量曲线与加权方式

关键约束是并发仓位数。假设一年 60 个分拆事件、每个持有 60 天,那么任何时点你手上只有 14 个并发仓——你的 AUM 必须塞进这 14 只孤儿小盘股里。

限制单只不超过 5 日 ADV 的 10%,自身冲击按 √参与率 建模,进出各付一次:

AUM实际投放投放率毛超额自身冲击净超额
$10M$9M85.6%+11.22%3.58%+7.64%
$25M$17M68.1%+10.61%4.39%+6.22%
$50M$26M51.0%+10.41%4.86%+5.55%
$100M$34M34.4%+9.96%5.22%+4.73%
$250M$44M17.5%+9.35%5.51%+3.83%
$1B$50M5.0%+9.32%5.67%+3.65%
$10B$52M0.5%+9.36%5.69%+3.67%

半衰容量约 2.69 亿美元

但真正的信息在「投放率」那一列。到 2.5 亿美元时,你只能投出去 17.5%;到 100 亿,只有 0.5%。净超额看起来稳在 +3.67% 不再恶化,但那是因为你 99.5% 的钱根本没进场——它算的是那 0.5% 的收益率。按全部 AUM 算,100 亿美元规模下这个策略的贡献接近于零。

这是一个只有小资金能做的策略,而且「小」的量级是几千万美元,不是几十亿。

加权方式也在讲同一件事:等权 +13.11%,市值加权 +11.90%,等权是 1.1 倍。差距不大,但方向明确——效应偏向小市值那一端,而小市值恰恰是你放不进钱的地方。

对抗式检验:我怀疑过什么#

(a) 零压力零 Alpha 安慰剂。 同时关掉强制抛售和 Alpha。市场调整 CAR 报 +3.80%——依然像个发现;三因子 −0.05%(t=−0.05),精确归零。这是判定性的:naive 口径在一个什么都没有的世界里也能造出显著结果。

(b) 只开压力。 Alpha 仍为 0,只打开强制抛售,三因子从 −0.05% 跳到 +13.11%,增量 +13.16% 精确等于压力项的真值贡献。收益来源被锁死。

(c) 规模溢价扫描。 传导斜率 1.1159 / 平均载荷 1.1159 = 1.0000(见上文)。

(d) 恢复检验。 最大误差 5.55e-17。估计量无偏。

(e) 幸存者偏差。 剔除表现最差的 8%(模拟「退市所以不在样本里」),三因子从 +13.11% 抬到 +20.06%,凭空多出 6.95 个百分点。这是很多真实数据集的默认状态。

(f) 伪事件日。 +11.85% → +1.91%,塌 84%。

(g) 宇宙稳定性。 12 个独立宇宙,均值 +13.36%,变异系数 0.104。结论不依赖某一次抽样。

(h) 样本量红线。 单事件标准差 42.65%36.7% 的事件收益为负,需要 42 个独立事件才能达到 t=2。

最后一条值得停一下。真实市场一年有多少个像样的分拆?几十个。也就是说,你需要接近一整年的全部分拆事件,才能把这个效应从噪声里分离出来——而那时你还没解决基准问题、幸存者问题和容量问题。任何基于十几个案例的「分拆策略有效」的说法,在统计上不成立。

五分位那张图故意保留了一个不好看的结果:真实压价梯度是单调的(Q1 15.85% → Q5 10.71%,跨度 5.14pp),但实测 CAR 梯度是 −1.05%,非单调。因为每档只有 300 个事件,桶内标准误就有 2.46%——和整个梯度同量级。真值单调,实测测不出来。这不是模型的失败,这是样本量的诚实读数,我把它画进图里而不是抹平。

三段式总结#

A. 实现细节#

  • 信号与执行:事件日为分拆完成日,收益从 T+1 开始累计,无前视
  • 基准构造:三因子基准逐事件匹配该事件自己的 β_mkt / β_smb / β_hml,不是用组合平均载荷
  • 压力建模:峰值压价 = min(0.030 × √(资金流/5日ADV), 18%),指数衰减半衰期 18 交易日;收益贡献取压价路径的逐日差分,不是一次性计入
  • 股价漂移:GBM 漂移项含跳跃违约补偿,保证无套利
  • 容量口径:并发仓位 = 年事件数 × 持有期/252 = 14 个;单只上限 5 日 ADV 的 10%;自身冲击 0.09 × √参与率,进出各一次;200 次抽样取均值
  • 共同随机数:全部场景复用同一批冲击,场景差异为精确参数效应
  • 横截面去均值:特质冲击逐日横截面中心化,保留个体离散度,消除跨事件平均的抽样噪声

B. 已知偏差#

  • 模拟不是历史:这里量化的是「估计量在已知真值下的行为」,不是「真实分拆股赚了多少」。真实世界的压力幅度、衰减速度、事件频率都可能不同,结论的方向(基准选择主导结果、收益前置、容量受限)比具体数值更可搬运。
  • 三因子不是全部:真实数据里还有动量、质量、流动性因子。这里只植入了三个因子,所以三因子基准恰好能完全剥离。现实中你剥不干净,残差里还会剩下别的东西——这意味着真实的「Alpha」比这里更难认定,不是更容易。
  • 单期压力模型:假设所有指数基金在 5 天内抛完,且冲击函数是平方根形式。真实抛售可能拖更久、更分散,或者被做市商提前定价。若市场已经预期到抛压,反弹幅度会小于这里的 13.16%。
  • 忽略融券与借券成本:如果你想对冲市场敞口做纯事件暴露,还要付借券费和保证金成本,净收益会进一步下降。

C. 结果解读#

结论先行:「分拆股跑赢」这个结论在受控世界里可以被完整复现,而那个世界的真实 Alpha 恰好是零。

第一,基准选择不是技术细节,它就是结论本身。 同一批数据四个口径摆动 3.85 个百分点,而规模溢价的传导斜率精确等于平均载荷(1.0000)。这意味着市场调整 CAR 在机械地把规模溢价重新贴上「事件 Alpha」的标签。任何只报市场调整收益的分拆研究,报告的是那段时期小盘股相对大盘的表现,不是分拆本身。

第二,剩下的 13% 是真钱,但它是流动性报酬,不是预测能力。 52% 在 20 天内实现,伪事件日检验让它塌掉 84%。这个区别在实操上是决定性的:流动性报酬要求你在特定时点有钱、有仓位额度、能承受小盘股的成交摩擦;预测能力则可以慢慢建仓。把前者当后者,你会在错误的时间以错误的规模进场。

第三,容量是硬约束,而且比看上去更早触发。 14 个并发仓、2.5 亿美元时投放率只剩 17.5%。净超额曲线在大 AUM 端看起来平稳(+3.67%),这是个陷阱——那是没投出去的钱不产生成本造成的假象。按全部资金计算,规模一上去这个策略就接近失效。

第四,样本量让「验证」变得几乎不可能。 42 个事件才够 t=2,36.7% 的事件亏钱。真实市场一年几十个分拆,意味着你至少要攒一年才有一个勉强显著的读数——而市场环境早就变了。这也解释了为什么这个「效应」在文献里反复出现又反复被质疑:样本量根本不足以定论。

第五,什么情况下这个策略还成立? 三个条件同时满足:资金规模在几千万美元量级、能在分拆后 20 个交易日内完成建仓、且愿意接受 36.7% 的单笔亏损率。缺一个都不行。如果你管着 10 亿美元、或者你的流程需要三个月尽调、或者你的 LP 看不了三分之一的仓位亏钱——这个策略不适合你,无论文献怎么说。

分拆上市事件 Alpha:母子公司拆分后的价格漂移
https://blog.halo26812.eu.org/blog/spinoff-event-alpha
Author halo
Published at 2026年8月5日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨