3. 估值因子(上):市盈率(PE)、市净率(PB)的计算逻辑、行业中性化处理、因子有效性初步检验

各位同学,今天我们来聊聊估值因子。说实话,估值因子是我个人在量化实战中最先接触、也最常用的一类因子。为什么?因为它逻辑清晰,数据好拿,而且效果稳定。你想想看,买股票不就是想买便宜货吗?PE、PB这些指标,说白了就是帮我们判断「这玩意儿到底贵不贵」。

3.1 市盈率(PE)的计算逻辑

市盈率,全称Price to Earnings Ratio。公式很简单:

PE = 股价 / 每股收益(EPS)

但这里有个坑——每股收益用哪个?

我刚开始做因子研究时,直接拿最新财报的EPS去算PE。结果回测效果一塌糊涂。后来才发现,我用的EPS是「过去四个季度」的滚动数据,而市场定价用的是「未来预期」的EPS。这就是静态PE和动态PE的区别。

关键点:

  • 静态PE(TTM):用过去12个月的EPS。数据稳定,但滞后。
  • 动态PE(Forward):用未来12个月的预测EPS。前瞻性强,但预测不准。

我个人习惯在因子构建中优先使用TTM PE。原因很简单——预测数据容易有偏差,而历史数据至少是「真实发生」的。

嗯,这里要注意:PE为负值怎么办?比如亏损企业。我的做法是直接剔除或赋一个极大值。你想想看,负PE在逻辑上没法解释「便宜」还是「贵」。

3.2 市净率(PB)的计算逻辑

PB = 股价 / 每股净资产(BVPS)

PB适用于重资产行业,比如银行、地产。为什么?因为这些公司的资产容易估值,净资产相对靠谱。

我曾经在分析科技公司时用过PB,结果发现这些公司的净资产主要是无形资产和商誉,账面价值跟实际价值差得远。所以PB在科技股上基本失效。

实战技巧:

PB小于1不一定就是「破净」机会。你得看看公司的资产质量。比如某地产公司PB=0.8,但它的存货(土地)可能已经贬值了。这时候PB低反而是价值陷阱。

3.3 行业中性化处理

为什么要做行业中性化?我举个例子:

银行股的平均PE是6倍,科技股的平均PE是30倍。如果你直接用PE排序,选出来的全是银行股。这合理吗?不合理。因为不同行业的估值中枢天然不同。

行业中性化的核心思想:在同一行业内比较估值

具体做法分两步:

  1. 计算行业内的相对估值:比如用个股PE减去行业平均PE,再除以行业标准差。
  2. 得到行业中性化后的Z-score:这个值表示「该股票在行业内是贵了还是便宜了」。
# Python伪代码示例
import pandas as pd

def industry_neutralize(df, factor_col='pe_ttm', industry_col='industry'):
    # 计算行业均值和标准差
    industry_stats = df.groupby(industry_col)[factor_col].agg(['mean', 'std']).reset_index()
    df = df.merge(industry_stats, on=industry_col, how='left')
    # 计算Z-score
    df['pe_neutral'] = (df[factor_col] - df['mean']) / df['std']
    return df

注意:

行业分类不能太粗也不能太细。太粗(比如只分金融和非金融)会丢失行业特性;太细(比如申万三级行业)会导致样本量不足,统计结果不稳定。我个人推荐使用申万一级行业分类,28个行业刚刚好。

3.4 因子有效性初步检验

因子构建完了,怎么知道它有没有用?我一般做三个检验:

3.4.1 IC(信息系数)分析

IC就是因子值与未来收益的相关系数。简单说:因子值越高,未来收益是不是也越高?

IC值范围 含义
IC > 0.05 因子有效,正向选股
IC < -0.05 因子有效,反向选股
|IC| < 0.02 因子基本无效

我见过很多新手只看IC均值,不看IC的稳定性。其实IC的IR(信息比率)更重要——IC均值除以IC标准差。IR大于0.5才算靠谱。

3.4.2 分层回测

把股票按因子值分成10组(Decile),看每组未来的收益表现。理想情况是:第1组(最便宜)收益最高,第10组(最贵)收益最低,单调递减。

我曾经做过一个PE因子的分层回测,结果发现第1组和第10组收益差异很大,但中间几组乱成一团。这说明PE因子在极端值上有效,但在中间区域区分度不够。这时候我会考虑做一下极值处理(比如MAD去极值)。

3.4.3 多空组合收益

做多因子值最低的10%股票,做空因子值最高的10%股票。看这个多空组合的累计收益曲线。如果曲线平稳向上,说明因子有稳定的选股能力。

我的经验:

PE和PB因子单独使用时,效果一般。但把它们组合成「综合估值因子」,效果会好很多。比如:

综合估值 = 0.5 * Z(PE_neutral) + 0.5 * Z(PB_neutral)

这样既能捕捉盈利估值,又能捕捉资产估值,互补性很强。

3.5 本章知识体系

下面这张图是我自己画的,把本章的核心逻辑串起来了:

估值因子(上)知识体系 市盈率(PE) 市净率(PB) 行业中性化 静态PE(TTM) 动态PE(Forward) 重资产适用 轻资产慎用 行业内Z-score 行业分类选择 因子有效性检验 IC分析(信息系数) 分层回测(Decile) 多空组合收益

这张图把PE、PB的计算逻辑、行业中性化处理、以及因子有效性检验串在了一起。你可以把它当作一个检查清单——每做一个因子,都按这个流程走一遍。

最后说一句:

估值因子不是万能的。我见过很多人在牛市里用PE选股,结果跑不赢指数。为什么?因为牛市里大家不看估值,看的是「故事」和「情绪」。但拉长到3年以上的周期,估值因子的有效性就会显现出来。所以,别因为短期失效就放弃一个逻辑上正确的因子。


公众号:蓝海资料掘金营,微信deep3321