因子投资-13-盈利投资与质量因子

QUANT RESEARCH NOTE LESSON 13

价值问“价格相对基本面是否低”,质量问“基本面本身是否好”。盈利能力强、投资克制、财务安全的公司可能有更高平均收益,但一家公司再好,买得过贵也可能是差投资。因子必须把公司质量与估值价格分开。

类型核心课程
模块经典因子
阅读约 8 分钟
材料10 节 · 1 段代码

本节解决什么问题

价值问“价格相对基本面是否低”,质量问“基本面本身是否好”。盈利能力强、投资克制、财务安全的公司可能有更高平均收益,但一家公司再好,买得过贵也可能是差投资。因子必须把公司质量与估值价格分开。

前置知识与学习目标

需要第 08 讲财报时点和第 11 讲估值。学完后你应该能:

  • 定义 ROE、毛利率、营业利润率;
  • 计算资产增长和投资率;
  • 解释 F-Score 与 QMJ 的多维结构;
  • 区分盈利、投资、质量和估值;
  • 处理财报公告、负分母、金融行业和一次性项目。

直觉与手算

公司 A 净利润 10 亿元、期初期末平均权益 100 亿元,ROE=10%;公司 B 净利润同为 10 亿元,但平均权益 50 亿元,ROE=20%。B 的股东资本盈利效率更高,但若权益很低来自高负债或回购,风险也可能更高。

公司总资产从 100 亿增到 120 亿,资产增长率 20%。在投资 q 理论中,给定预期盈利,高投资可能意味着资本成本较低、预期收益较低;在行为解释中,也可能是管理层过度扩张。

若 B 市值是 A 的 4 倍,“更高质量”不自动推导“更高未来收益”。股票回报取决于买入价格相对未来现金流,而不仅是公司好坏。

定义与公式

因子接口

定义与公式 7 行 × 7 列
name direction formula rebalance lag economic_story failure_modes
ROE 高 净利润/平均权益 季/年 公告后 盈利能力或投资模型 负权益、高杠杆
毛利率 高 (营业收入-营业成本)/收入 季/年 公告后 产品力与竞争优势 行业不可比、会计分类
营业利润率 高 营业利润/营业收入 季/年 公告后 主营经营效率 一次性项目、周期峰值
资产增长 低常为高预期收益 总资产增长率 年/季 公告后 投资 q 与过度扩张 并购、金融公司
投资率 低常为高预期收益 资本支出/资产或资产变化 年/季 公告后 边际投资与资本成本 折旧、口径不一
F-Score 高 9 个财务改善指标之和 年 公告后 基本面健康 行业、阈值与数据缺失
QMJ 高 盈利+成长+安全+派息 月/年 财报公告后 高质量被低估或安全需求 定义复杂、估值昂贵

盈利能力

平均分母比期末分母更接近期间资本占用。负权益、接近零收入和会计重分类会产生极端比率,应先设经济有效域。

投资

投资率还可用资本开支/期初资产、存货增长或净经营资产增长。不同定义捕捉不同决策,不能都叫 INV 而不列公式。

F-Score

Piotroski F-Score 常把 9 个二元信号相加,覆盖:

  • 盈利:正 ROA、正经营现金流、ROA 改善、现金流高于利润;
  • 杠杆/流动性/融资:杠杆下降、流动比率改善、没有新增股权融资;
  • 经营效率:毛利率改善、资产周转率改善。

分数范围 0–9。它是规则系统,不是连续概率;银行等金融公司会计结构不同,直接套用常规工业指标可能失真。

QMJ

QMJ 把盈利能力、盈利成长、安全性和股东分配等指标标准化后合成质量分数,再做多高质量、空低质量组合。每个子指标的方向、去极值、标准化和权重都会影响结果,必须保存组件贡献。

质量与估值的二维问题

可以把股票放在“质量高低×价格贵便宜”四格。高质量且便宜与高质量但极贵不是同一预测;加入估值控制也会改变质量因子的经济问题。

Python 最小实验

PYTHON 可复现实验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
import pandas as pd

frame = pd.DataFrame({
"asset": ["A", "B", "C"],
"net_income": [10.0, 10.0, -2.0],
"equity_begin": [90.0, 45.0, 30.0],
"equity_end": [110.0, 55.0, 28.0],
"revenue": [100.0, 80.0, 60.0],
"cogs": [60.0, 40.0, 55.0],
"assets_begin": [100.0, 100.0, 100.0],
"assets_end": [105.0, 120.0, 90.0],
})
average_equity = (frame["equity_begin"] + frame["equity_end"]) / 2
frame["roe"] = frame["net_income"] / average_equity
frame["gross_margin"] = (frame["revenue"] - frame["cogs"]) / frame["revenue"]
frame["asset_growth"] = frame["assets_end"] / frame["assets_begin"] - 1

assert np.isclose(frame.loc[0, "roe"], 0.10)
assert np.isclose(frame.loc[1, "asset_growth"], 0.20)
print(frame[["asset", "roe", "gross_margin", "asset_growth"]])

这只是原始指标。合成质量分数前应在每个点时横截面内处理有效域、极端值、行业和标准化,不能用全样本参数。

A 股实现注意事项

  1. 累计财报。 中报和三季报利润常为年初至报告期累计,计算单季或 TTM 时要与上一期相减并处理修订。
  2. 公告时点。 所有分子、分母和同比基期都要在决策时已公告;不能只检查当前期。
  3. 金融行业。 银行、保险、券商的收入、杠杆、流动性和资本开支含义不同,通常需要行业专用定义。
  4. 负分母。 负权益、负收入或接近零分母会让 ROE、利润率失去常规排序含义。应单列状态而非截成漂亮数。
  5. 一次性损益。 资产处置、补贴和公允价值变动可能抬高利润;扣非、经营利润和现金流提供替代口径。
  6. 并购与重组。 资产增长可能来自合并范围变化,不是有机投资;需要公司事件标记。
  7. 研发与无形资产。 会计费用化使研发密集公司利润和资产偏低;行业比较和资本化替代口径很重要。
  8. 股权融资。 增发、配股和可转债转股影响 F-Score、每股指标和未来供给,应按公告与实施时点处理。

常见错误与边界

  • 用期末权益而非平均权益却与其他 ROE 定义混比。
  • 负权益公司得到巨大正 ROE 后排到高质量组。
  • 财报累计值直接当单季流量。
  • 只用当期公告日,却让同比上一期修订值穿越。
  • 把资产增长低自动解释为高效,忽略公司衰退和投资机会缺失。
  • 合成 QMJ 后不保留子组件,无法解释收益来源。
  • 看到好公司就忽略估值,混淆公司质量与股票回报。

质量指标高度依赖会计规则和行业结构。跨国、跨时期比较时,统一公式不等于统一经济含义。应优先选择能从现金流与经营机制解释、且点时可复现的组件。

原书与论文

原书第 3 章(PDF 文件页 97–157)讨论盈利、投资和质量类因子,第 5、6 章提供实践和中国证据。

Fama 与 French(2015)把盈利与投资加入五因子模型:DOI 10.1016/j.jfineco.2014.10.010。Hou、Xue 与 Zhang(2015)从投资模型构造 q-factor:DOI 10.1093/rfs/hhu068。Asness、Frazzini 与 Pedersen(2019)系统定义 QMJ:DOI 10.1007/s11142-018-9470-2。

练习

  1. 对同一公司分别用期末权益和平均权益算 ROE,解释资本大幅变化时差异。
  2. 将累计三季报转换为单季和 TTM 利润,列出每个输入的公告日。
  3. 实现 9 项 F-Score,并对缺失项分别采用缺失、零分和剔除,比较样本选择。
  4. 构造质量×价值 3×3 组合,判断质量收益是否只来自昂贵或便宜组。
  5. 对银行与制造业分别写一套盈利和投资定义,说明不能共用的字段。

小结与下一步

盈利、投资和质量是多个会计对象的集合。公式必须同时给出分子、分母、流量区间、公告时点和有效域。F-Score 与 QMJ 提供多维框架,但合成分数不能掩盖组件。好公司只有在价格和风险合适时才可能是好股票。

下一讲处理市场价格和交易数据中的风险、波动与流动性因子。


因子投资-13-盈利投资与质量因子
https://www.polarishaw.top/2026/07/17/因子投资-13-盈利投资与质量因子/
作者
Polaris
发布于
2026年7月17日
许可协议