基本面因子:估值、质量与成长
本课目标:掌握估值、质量、成长三大类基本面因子的构造思路,并理解财报数据特有的 Point-in-Time 陷阱与行业差异处理。
价量因子只需要行情数据,基本面因子则要引入财务报表。数据变”重”之后,因子构造的坑也随之增多——最大的坑不在公式,而在”你以为你当时知道,其实你当时不知道”的数据对齐问题。本文仅为研究方法讨论,不构成投资建议。
估值因子:为便宜付钱
估值因子衡量”每一块钱的基本面,市场标价多少”,代表性指标:
| 因子 | 常见构造 | 备注 |
|---|---|---|
| EP(市盈率倒数) | 净利润 / 总市值 | 用倒数避免 PE 在利润趋近零时爆炸;亏损股 EP 为负仍可排序 |
| BP(市净率倒数) | 净资产 / 总市值 | 对金融、周期行业相对更适用 |
| SP(市销率倒数) | 营业收入 / 总市值 | 适合利润波动大或暂时亏损的公司 |
| 股息率 | 近 12 个月分红 / 总市值 | 隐含分红意愿与现金流质量信息 |
背后的直觉是价值溢价:一种解释是市场对短期坏消息反应过度,把平庸但便宜的公司打得过低,长期存在均值回归;另一种解释是便宜本身就是风险补偿——低估值公司往往经营困境更多,你赚的是承担这种风险的报酬。经验上,A 股的估值因子在不同时期表现分化明显,常出现连续数年跑输成长风格再回归的情况,单独使用体验较差,更多作为多因子组合中的一个维度。
实务上普遍用”倒数形式”(EP 而非 PE),原因有二:一是分母为市值,恒为正,不会出现除零;二是负值有明确含义(亏损),排序上可以自然处理。
质量因子:为好生意付钱
质量因子回答”这家公司赚钱的能力和账面的干净程度”:
- 盈利能力:ROE(净利润/净资产)、毛利率(毛利/营收)。高且稳定的 ROE 是质量因子的核心;
- 盈利质量:应计项(accruals)。利润由现金流和应计项两部分构成,应计项占比高说明利润更多来自会计估计而非真金白银,经验上高应计公司后续业绩兑现往往较差:
# 简化示意:应计项 = 净利润 - 经营性现金流,再除以总资产accruals = (net_profit - operating_cashflow) / total_assetsquality_score = -accruals # 应计越低,质量越高- 财务稳健:资产负债率、利息保障倍数等,衡量下行风险。
构造质量因子时要注意分母的选择和口径统一:ROE 用期初净资产还是期末净资产、净利润是否扣非,不同选择会给出不同的排序。没有唯一正确答案,但同一研究里必须从一而终,并把口径写进因子文档。
质量因子的直觉是:市场对”平稳的好”定价不足——高 ROE 的持续性经常被低估,投资者更愿意为激动人心的故事付钱。质量因子通常换手率低、容量大,与估值因子搭配(“以合理价格买好公司”)是常见做法。
成长因子:为变化率付钱
成长因子看的是基本面的变化速度:营收同比增速、净利润同比增速、ROE 的环比改善等。构造时的注意点:
- 优先用同比(对比去年同期),规避财报数据天然的季节性;
- 低基数会制造夸张的增速(去年利润 100 万、今年 1000 万,增速 900%),需要去极值或结合利润绝对规模过滤;
- 单季度增速比累计增速更敏感,但也更噪声,常见做法是两者都测。
成长因子的直觉与动量类似:业绩加速改善的信息被市场逐步消化,存在”业绩惯性”。经验上,A 股市场对高增速的偏好较强,成长因子与分析师预期修正类因子往往有较高相关性。
成长与估值天然存在张力:高增速的公司通常已经不便宜,纯成长选股容易在景气反转时遭遇”戴维斯双杀”——增速下修与估值收缩同时发生。因此实务上成长因子很少单独使用,更多与估值、质量搭配,或者在构造时直接用”增速相对估值”的复合形式。
Point-in-Time:财报数据最大的坑
财报数据有两个时间:报告期(数据描述哪个季度)和公告日(市场哪天才看到它)。年报报告期是 12 月 31 日,但公告可能拖到次年 4 月底。如果回测时在 1 月 2 日就用上了年报数据,就引入了未来函数,回测结果会系统性虚高。
正确姿势是 Point-in-Time(PIT)对齐:任一交易日只能使用”公告日不晚于当天”的最新一期财报。
# announcements: 每行 = (股票, 报告期, 公告日, 指标值)ann = announcements.sort_values("公告日")# 对每个交易日 t,取公告日 <= t 的最近一条记录pit = pd.merge_asof( trade_days.sort_values("date"), ann, left_on="date", right_on="公告日", by="股票代码")另外两个相关的坑:一是财报重述——公司事后修正历史财报,数据库若只保留修正后的值,回测就用上了当年不存在的数字,尽量使用保留原始披露版本的数据源;二是报告期错配——同一天里,有的公司已披露一季报、有的还停留在年报,截面比较时天然存在新旧掺杂,这是无法完全消除的现实,只能保持全市场统一的 PIT 规则。
行业差异:不要拿银行的 PB 和软件公司比
基本面指标的”正常水平”因行业而异:银行天然高杠杆、低 PB;软件公司轻资产、高毛利;周期行业的 PE 在景气顶点反而最低(利润被打满)。直接在全市场比较原始估值指标,本质上是在做行业押注而非选股。
常见处理是行业内标准化:在每个行业内部把因子转成 z-score 或排名百分位,再合并到全市场截面。这样比较的就是”这只股票在自己行业里贵不贵”,而非行业间的天然差异。是否要做行业中性取决于研究目标——如果你就是想赚行业轮动的钱,那另当别论。这部分会在多因子课里系统展开。
另一个层面的行业差异是指标适用性:EP 对亏损面大的行业区分度差,SP 对金融行业意义不大,应计项因子对银行保险的报表结构基本失效。严谨的做法是在检验阶段就分行业看因子的 RankIC,对明显不适用的行业,要么剔除该行业,要么换用行业专属指标,而不是指望一个公式打遍全市场。
本课小结
- 估值因子用倒数形式(EP/BP/SP)构造,避免除零并自然处理亏损股;
- 质量因子看盈利能力与盈利质量,应计项是识别”纸面利润”的经典视角;
- 成长因子用同比增速规避季节性,警惕低基数制造的伪高增长;
- 财报数据必须按公告日做 Point-in-Time 对齐,否则回测系统性虚高;
- 基本面因子多数需要行业内标准化,否则你测的是行业配置而非选股能力。
动手练习:取 EP 因子,分别用”报告期对齐”(错误做法)和”公告日 PIT 对齐”(正确做法)各跑一遍 RankIC 与分层回测,对比两者差异的大小,直观感受未来函数对财报类因子的影响程度。