news 2026/11/2 12:46:03

A股三因子模型改造:剔除壳股与EP价值因子实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A股三因子模型改造:剔除壳股与EP价值因子实践

简介:《中国版的 Fama-French 三因子模型1》是一份面向金融、量化和资产定价方向毕业设计及研究者的专题资料,聚焦 A 股市场特有的壳价值污染问题,以及 Liu et al. (2018) 对经典三因子模型的本地化改进。资源为单个 PDF 文件,压缩包约 1.35MB,内容集中、便于检索,适合论文选题、因子构建与实证复现参考,已有 1133 人学习。资料围绕剔除市值最小 30% 的股票、比较 EP、BM、AM、CP 等价值指标,并用 Fama-MacBeth 回归确定以 EP 构建价值因子展开;同时说明 MKT、SMB 与 VMG 因子的组合方式,并将中国版三因子与 Fama-French 三因子进行解释力对比,涉及 GRS 检验等资产定价方法。读者可据此理解 A 股因子模型的设定逻辑、实证流程与结果解读,尤其适合需要复现中国版三因子构造步骤、理解因子暴露与因子收益关系,并完成毕业设计实证章节的读者。

1. 中国版三因子先删 30% 的股票:为什么减法是第一步

中国版 Fama-French 三因子模型最反直觉的一步,不是增加因子,而是删除股票。做 factor regression 的人往往认为,A 股因子效果不佳是因为噪声大、散户多;更具体的原因其实出在市值排序的末端:市值最小的那 30% 股票被壳价值撑住了价格,它们的收益率与盈利、净资产之间的关系已经断裂,在截面回归中会把规模因子和价值因子的系数带偏。先去掉这一部分,剩余 70% 的股票才能让模型按照资产定价的逻辑工作。这种做减法也是做毕业设计时最容易踩坑的地方——复现一遍就能看出,同一个模型换一个股票池,结果会差多少。

2. 壳价值污染:小市值股票如何把截面定价带偏

要搞懂中国版三因子的第一个改动,得先明白“壳”到底是不是一种资产。它不是抽象概念:有明确价格、有季节性变化,还会随 IPO 通道的松紧起落。理解了它的定价机制,才能明白为什么小市值股票不能像美股那样直接进入样本池。

2.1 壳价值的来源与经济学含义

A 股 IPO 通道常年排队,直接上市耗时以年计,一些企业转而收购已上市的存量公司来取得上市身份,这就是借壳。上市身份因此有了市场价格,即壳价值。它的核心特征是与公司自身业务脱钩:市值越小、业务越差,壳价值在总市值中的占比越高,价格就越由借壳预期而非现金流决定。一家主业几乎停摆、年收入只有几千万的空壳公司,市值仍可能维持在几十亿量级——这部分市值不是业务估出来的,而是“上市身份”的期权价值。

关键在于,它不稳定,而且会整体起落。IPO 审核节奏的松紧、借壳政策口径的调整、发行制度改革的推进,都会改变壳价值的重心。这种由制度驱动的波动,恰恰是 asset pricing 模型最不擅长的部分。模型假设收益率差异能被市场、规模、价值等系统性因子解释,但壳价值带来的收益差异来自制度变化,不属于这三者中的任何一个。

于是这些股票在截面回归里表现为一个别扭的样态:期望收益与盈利、净资产关系极弱,但方差和偏度都很大;排序时它们被分到市值最小端点,贡献了大量与价值溢价无关的尾部收益。这就是壳价值污染的字面含义——模型假设并没有错,问题在于样本里混进了不服从模型定价逻辑的观测。

2.2 污染如何在因子组合里被放大

污染对截面回归的破坏是双重的。第一层在价格层面:最小市值股票的市盈率、市净率长期偏离同类基本面公司,排序时它们会被错误地归入“极低估值”端点。第二层在收益层面:这些股票的月度收益驱动来自借壳公告、监管口径、停复牌事件,而不是盈利变化。结果就是 HML 或 VMG 组合两端混进了大量与价值定价无关的股票,算出来的组合收益是事件溢价,而非价值溢价。

具体到 2×3 分组的计算里,这种污染会被放大。Small 组因为包含大量壳股,平均收益被借壳事件拉高,波动也巨大;Value 组如果混入了基本面很差、但价格因壳预期被推高的小市值股,其价值属性就被反向扭曲——本来应该是“便宜的好公司”,结果变成了“被壳预期撑着的差公司”。一个典型后果是 SMB 因子表现不稳定,小市值溢价有时显著、有时消失,很大程度上是壳价值强度在时间上变化造成的。同样的污染也让价值因子的 t 统计量偏低,因为在部分子样本里,价值组和小市值壳股高度重叠。

更隐蔽的一层是 size 与 value 的相关性被推高。壳价值本身既与小市值相关,又与“低估值”相关,相当于给两个因子同时注入了一个共同的、与基本面无关的变异源。如果不剔除,做 Fama-MacBeth 回归时两个因子的 factor loading 会相互干扰,回归系数的符号和显著性都会变得不稳定。很多研究在 A 股复现三因子时发现 HML 的符号会翻,一部分原因就在这里。

2.3 30% 阈值:为什么不是 10% 或 50%

阈值选择是工程与统计的折中。10% 剔除不干净,借壳预期会外溢到市值排名 15% 到 25% 的股票;50% 样本损失太大,会把真实的规模效应和大量中小盘股砍掉,反而稀释掉因子本应捕捉的信号。实证里 30% 在样本外检验下最稳定,因此成为通行做法。这个数字没有理论上的“正确值”,更像一个经验边界——把污染压到模型能工作的程度,同时保留足够的截面样本来估计因子。

工程实现上还有几处需要注意。剔除不是一次性的:每一期(通常是月度)都要按当期总市值重新排序,切掉后 30% 再进入后续计算,这样壳价值强度随时间的变化才能被自动响应。更严格的做法会叠加 ST、次新股、停牌、退市整理期等过滤,避免极端样本进入排序。剔除之后每家公司的权重还要重新归一,否则等权组合的分散度会随剩余股票数量漂移。

一个常见的误解是“剔除后就变成小盘模型了”。恰恰相反,剩余 70% 的市值分布更接近真实可投资域,中证 500、中证 800 的成分股大部分都落在里面,对做指数增强策略的人反而更有实操意义。另一层要清醒认识的是:剔除只是压低了污染,没有消除。借壳预期可能外溢到排名 30% 到 40% 的股票,只是强度弱一些,剩余池里仍要警惕个别大市值公司的事件驱动波动。

3. 价值指标换血:Fama-MacBeth 回归怎么挑出 EP

剔除只是第一步。真正决定中国版三因子和美股三因子分道扬镳的,是价值指标的替换:用 EP 换掉 BM。这个选择不是拍脑袋,而是通过 Fama-MacBeth 回归把四个候选指标放在同一张桌子上比较出来的。

3.1 Fama-MacBeth 两步法在截面定价里的作用

Fama-MacBeth 回归是 asset pricing 里最常用的两步估计法,也是理解后续指标比较的钥匙。第一步在每一个横截面上,用股票收益对因子暴露做回归,得到该期的因子收益估计;第二步把每一期的因子收益序列在时间维度上求均值和 t 统计量,判断该因子是否显著不为零。

这种两步法的好处在于绕开了 pooled OLS 里对残差相关结构的强假设。横截面回归在每期独立进行,时间维度上只对因子收益序列做推断,不需要假定不同股票残差之间如何相关。血泪经验是:很多人把第一步的右侧放错了——Fama-MacBeth 第一步的右侧应该是 factor loading(β 或特征值本身),而不是因子收益。在中国版三因子的实证里,研究团队直接把 EP 这类特征值当作 loading 放进截面回归,这种 characteristics-based 的做法在因子研究里被广泛采用。

3.2 四个候选指标的同台对比

研究团队选了四个价值指标做同台对比:EP(盈利/价格)、BM(净资产/市值)、AM(总资产/市值)和 CP(现金流/价格)。处理上有几处细节值得说清楚:BM 和 AM 取对数得到 logBM、logAM,原因是市净率的量纲跨度极大,极端值会把排序拉偏,取对数后分布更接近对称;EP 和 CP 做非负截断——正值保留原值,负值统一置零,并加一个 dummy variable 区分,避免亏损公司在排序时被错误地分到“最价值”端点。

指标定义处理方式实证结论
EP盈利 / 价格非负截断 + dummy显著,其余变量加入后不再显著
BM净资产 / 市值取对数单独显著,被 EP 吸收后不显著
AM总资产 / 市值取对数不显著
CP现金流 / 价格非负截断 + dummy弱显著,被 EP 吸收

回归结果的关键一行在第 8 列:当回归右侧的 regressors 里加入 EP 之后,其他价值变量都不再显著。这个结论意味着,在中国 A 股的价值维度上,EP 是信息含量最高的代理变量,BM 等其他指标的价值信息基本被它覆盖。于是价值因子改用 EP 来排序,这是中国版三因子相对美股版的第二个改动。

3.3 EP 胜出的经济学解释

EP 显著性强于 BM,背后有会计和市场结构上的原因。BM 依赖净资产的账面值,而 A 股上市公司的账面净资产受增发、配股、资产重组、会计政策变更影响较大,同一家公司的 BM 在不同年份之间可比性差;EP 直接进入利润表,与股价的比值更贴近“为每一元盈利支付多少钱”这个朴素直觉,对会计口径调整的敏感度低。另外,A 股长期存在大量绩差小盘股被壳预期托底的现象,BM 在这些股票上反映的“低估”其实不是真低估,EP 因为分母是盈利,亏损公司会被截断到零,反而过滤掉了一部分这类污染。

从因子构造角度,EP 还带来一个施工上的便利:排序稳健。BM 在净资产接近零或为负的公司上会爆出极端值,即便取对数仍会污染分组;EP 在盈利为负时截断到零,分组边界更稳定。这就是为什么最终价值因子用 EP 排序,而不是沿用美股的 BM。

4. 2×3 分组与因子构造:从排序到 VMG 的计算细节

指标定下来之后,剩下的就是施工步骤:怎么把股票分成 2×3 六个组合,怎么从组合收益里算出 SMB 和 VMG,以及怎么用 GRS 检验判断两个模型的解释力高下。这一段是一篇实证论文里最容易被跳过、但复现时最容易翻车的部分。

4.1 分组与组合收益的计算流程

标准流程是:先按剔除后的股票池,每个月末按总市值中位数把股票分成 Small 和 Big 两组,再按 EP 的 30% 和 70% 分位数分成 Growth、Middle、Value 三组,交叉得到六个组合。每个组合按等权(或市值加权)计算下个月的收益。这一步看着简单,实现时却有几个细节决定结果:分位数的计算要在当期截面上做,不是用全样本分位数;EP 为负的股票统一落在 Growth 组的极端端;每个组合至少要有一定数量的股票,否则收益会被单只股票主导。

下面是一段可复现的骨架代码,把“剔除最小 30%”到“输出三因子”的流程串起来:

import numpy as np import pandas as pd def build_cn_three_factors(df, drop_pct=0.30): """ df: 月度面板,至少包含列 date, code, mktcap, ep, ret drop_pct: 每期剔除的市值最小比例 返回: 每个月的 MKT / SMB / VMG 因子收益 """ records = [] for dt, g in df.groupby("date"): # 1) 剔除市值最小的 30%,得到工作股票池 g = g.sort_values("mktcap").reset_index(drop=True) k = int(np.floor(len(g) * drop_pct)) pool = g.iloc[k:].copy() if len(pool) < 30: # 样本太薄就跳过,避免极端月份 continue # 2) 2x3 分组:市值中位数 x EP 的 30/70 分位 size_cut = pool["mktcap"].median() ep_lo, ep_hi = pool["ep"].quantile([0.3, 0.7]) pool["size_grp"] = np.where(pool["mktcap"] > size_cut, "B", "S") pool["ep_grp"] = np.where( pool["ep"] <= ep_lo, "G", np.where(pool["ep"] >= ep_hi, "V", "M") ) # 3) 六个组合的等权月收益 r = pool.groupby(["size_grp", "ep_grp"])["ret"].mean() # 4) 三个因子的组合定义 smb = r[["S"]].mean() - r[["B"]].mean() vmg = r[["V"]].mean() - r[["G"]].mean() mkt = pool["ret"].mean() # 这里用股票池等权,实际可用市值加权 records.append({"date": dt, "MKT": mkt, "SMB": smb, "VMG": vmg}) return pd.DataFrame(records)

这段代码做了四件事:按当期总市值排序、切掉尾部 30%、做 2×3 交叉分组、从六个组合收益里提取三个因子。参数drop_pct是壳价值剔除的比例,中国实证里一般取 0.30;size_cut用中位数而非均值,避免右偏的市值分布把分界点拉偏;EP 分组用 30/70 分位而不是等距切分,是为了在 Growth 和 Value 两端各保留约 30% 的股票,Middle 组居中。第 1 步末尾那段样本数检查看起来多余,但有经验的实现者都会加,因为某些早期月份的可用样本可能只有几十只,不设阈值会让因子收益被单只股票主导。真实实现里 MKT 通常还要减去一年期定存利率,这里为了代码紧凑先省略成原始收益,进入回归之前再做超额化处理。

4.2 SMB 与 VMG 的符号定义

中国版三因子的 SMB 和 VMG 与美股版的 SMB、HML 在构造思路上一一对应,区别只在价值指标。SMB 是小市值组合相对大市值组合的平均收益差;VMG 是价值组相对成长组的平均收益差。符号约定必须统一:SMB 为正代表小盘跑赢大盘,VMG 为正代表价值股跑赢成长股。看似是废话,但复现论文时最常见的 bug 就是符号搞反,导致后面 GRS 检验的结论完全颠倒。

需要注意 VMG 和 HML 的差别不只是名字。由于价值组用 EP 排序,VMG 里混入的“成长股”很多是亏损公司(EP 被截断到零),VMG 多头的股票是盈利能力强的公司,空头是盈利弱甚至亏损的公司。这意味着 VMG 除了价值溢价,还隐含了一部分 profitability 信息。研究里能看到 VMG 的收益均值和 t 统计量比美股版 HML 更稳,一部分原因就是这个隐含的盈利筛子。如果在别的市场抄这套构造,要清楚它的经济含义已经不是纯粹的价值溢价。

4.3 GRS 检验:怎么判断两个模型谁解释力更强

因子建好之后,要回答一个绕不开的问题:中国版三因子和 Fama-French 三因子,谁对 A 股的截面收益解释得更好?这里用到的工具是 GRS 检验。

GRS 检验的原假设是:给定一组资产(或组合),用某个因子模型回归后,所有资产的定价误差(即截距 α)联合为零。统计量服从 F 分布,p 值越小越倾向于拒绝原假设,说明模型解释不了。比较两个模型时采用“交叉检验”的玩法:先用中国版三因子的 SMB 和 VMG 去解释 Fama-French 版因子的定价误差,再反过来用后者的 FFSMB 和 FFHML 解释中国版因子的定价误差。

结果是不对称的:用 SMB 和 VMG 解释 FFSMB 和 FFHML 时,p 值在 0.41 这个量级,无法拒绝“定价误差联合为零”,说明考虑了 SMB 和 VMG 后,美式因子的定价误差可以认为为零;反过来,用 FFSMB 和 FFHML 解释 SMB 和 VMG 时,p 值掉到 10 的负 13 次方量级,强烈拒绝。这个不对称就是“中国版更贴近 A 股”的统计证据。GRS 检验的关键在于它检验的是联合显著性,而不是逐个组合看 t 值,因此比逐项比较更克制,也更难被单项异常值糊弄过去。

5. 中国版三因子落地中的五个坑:数据、分组与检验

从原理走到可复现的实现,中间隔着一堆会让人反复翻车的小细节。下面五条是复现这类模型时最常遇到的现象,按“现象 → 原因 → 解决”整理。

5.1 数据层面的坑

坑 1:剔除 30% 后早期样本股票池骤减。现象是回测期前几年的股票池不足 100 只,分组后某些组合甚至只有个位数股票。原因是早期 A 股上市公司数量本来就少,再砍掉 30% 后有效样本极薄。解决方式是在每个截面设最小样本阈值(例如少于 50 只就跳过该月),或者在报告里明确标注样本稀疏的区间,避免把噪声当信号。

坑 2:EP 为负的股票被错误地分到“极便宜”端点。现象是价值组合里混进大量亏损公司,VMG 的收益反而被拉高或变得极不稳定。原因是直接用 EPS/Price 排序时,负值在数值上排在最前面,被当成了最便宜的股票。解决方式是先做非负截断——负 EP 统一置零或归到 Growth 端点,再加一个 dummy 标记,让回归里能控制住亏损公司的影响。

坑 3:市值口径不统一,剔除名单随时间漂移。现象是同一只股票在不同月份反复进出样本池。原因是用了总市值、流通市值、自由流通市值混着算,或者没有用当月月末的市值。统一口径,规定按月末总市值排序,并在参数文档里写清楚,是避免这类漂移最直接的办法。

5.2 因子计算与检验的坑

坑 4:MKT 用原始收益还是超额收益,没跟收益率口径对齐。现象是三个因子的量级对不上,回归出来的截距符号反直觉。原因是 MKT 定义成股票池收益减一年期定存,但被解释变量的收益率又是原始月收益,两边的基准不一致。统一做法是把个股收益、组合收益、因子收益全部先减去同频的无风险利率,再用超额收益做回归,保证分子分母用同一把尺子。

坑 5:GRS 检验 p 值异常,却没有回头看因子相关性。现象是交叉检验里 p 值大起大落,结论不稳健。原因是三个因子之间存在较强的相关性,尤其 SMB 和 VMG 在 A 股样本里相关性被壳价值推高,联合检验对相关结构很敏感。解决办法是先把因子相关矩阵打出来,相关高于 0.6 的因子对要单独看;同时用不同的子样本期做稳健性,单看全样本的 p 值容易得出过于乐观的结论。

6. 走上四因子:换手率 PMO 与剔除 30% 的代价

三因子能解释 size、value、profitability、volatility 四类异象,但解释不了 reversal 和 turnover。这两类异象在 A 股尤其顽固:反转几乎在任何时间窗口排序下都能观察到;换手率高的股票往往被散户和舆情驱动的交易者过度关注,价格被推高后未来收益走低,而做空受限意味着这种非理性没法被套利抹平。研究团队因此在三因子之外加入换手率因子 PMO(Pessimistic Minus Optimistic),核心逻辑是低换手率组合跑赢高换手率组合,得到四因子模型。加入 PMO 之后,那十个显著性异象基本都能被解释掉。

代价是要算清楚剔除 30% 到底损失了什么。一方面,剩余 70% 股票池里仍然有污染,只是密度降低,事件驱动的收益残余会让因子的方差被低估;另一方面,对做沪深 300、中证 500 指数增强的团队,这个池子的边界反而更友好,因为真实可投资域本来就排除了尾部壳股。这里存在一个隐含的设计取舍:模型精度和工作域之间的权衡。

还有一个常被忽略的点:PMO 和三因子不完全正交。换手率高的股票往往也是小市值、近期涨幅大的股票,PMO 里天然混入了规模效应和反转信息。如果把四因子当作真理,容易把 PMO 的收益误读为“换手率溢价”,实际上一部分是小盘和反转在起作用。查看因子相关矩阵、做正交化处理,或者在报告中把 PMO 解释为“换手率代理的综合信号”,比单纯叫它换手率因子更诚实。

从那以后我每次跑因子检验,都会先查看股票池最末端的市值分布和 EP 截断情况,再决定是否开跑;跳过这一步,结果再好也不敢直接用。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 12:44:47

改进麻雀算法优化微电网调度:混沌映射与Lévy飞行策略

1. 项目背景与核心价值冷热电联供型微电网作为分布式能源系统的重要形式&#xff0c;其优化调度直接关系到能源利用效率和运行经济性。传统调度方法在处理多能耦合、多时间尺度、多目标优化问题时往往面临计算复杂度高、收敛速度慢的挑战。这正是我们引入改进麻雀搜索算法(RSSA…

作者头像 李华
网站建设 2026/11/2 12:43:41

Momenta自动驾驶核心竞争力与商业落地解析

1. Momenta的核心竞争力解析作为自动驾驶领域的头部企业&#xff0c;Momenta的算法实力早已得到行业公认。但真正让这家公司在激烈竞争中脱颖而出的&#xff0c;是其构建的独特商业与技术体系。从实际业务接触来看&#xff0c;他们至少在三个维度建立了难以复制的优势。1.1 数据…

作者头像 李华
网站建设 2026/11/2 12:43:20

星座图在数字通信中的关键作用与实战分析

1. 星座图&#xff1a;数字通信的"心电图"在数字通信系统中&#xff0c;星座图&#xff08;Constellation Diagram&#xff09;就像医生的心电图一样&#xff0c;能直观反映信号的健康状态。我第一次接触这个概念是在调试QPSK调制器时&#xff0c;当时误码率居高不下…

作者头像 李华
网站建设 2026/11/2 12:40:28

动态住宅IP在跨境电商防关联中的应用与实践

1. 动态住宅IP的本质解析动态住宅IP&#xff08;Dynamic Residential IP&#xff09;指的是由互联网服务提供商&#xff08;ISP&#xff09;分配给普通家庭用户的、会定期变化的IP地址。与静态IP不同&#xff0c;这类IP会按照ISP设定的时间间隔&#xff08;通常几小时到几天不等…

作者头像 李华
网站建设 2026/11/2 12:37:22

Vue 3 onMounted 获取不到 props 值?根因与解法全解析

1. 这个"拿不到值"的问题&#xff0c;到底卡在哪一层 onMounted 里打印 props 拿到 undefined &#xff0c;或者拿到的是初始值而不是父组件后来传进来的新值——这个场景在 Vue 3 项目里出现的频率远比想象中高。我第一次遇到的时候&#xff0c;第一反应是&quo…

作者头像 李华
网站建设 2026/11/2 12:37:22

Codeforces竞赛解析:Div1+Div2题目难度与参赛策略

1. Codeforces 1085 Div12竞赛解析 Codeforces 1085是一场结合Div1和Div2选手的联合竞赛&#xff0c;这类比赛的特点是题目难度跨度较大&#xff0c;能够同时满足不同水平选手的需求。作为Codeforces平台上常见的比赛形式之一&#xff0c;Div1Div2联合竞赛通常包含8-10道题目&a…

作者头像 李华