3、核心估值指标计算(上):市盈率(PE)、市净率(PB)、市销率(PS)的计算与解读、TTM与静态指标的区别、行业特性对指标的影响
各位同学,欢迎来到第三章。
前面我们聊了价值投资的基本逻辑,也搭好了数据获取的架子。今天,咱们要真正上手干活了——计算核心估值指标。
说白了,估值就是给公司“称重”。你手里拿着一家公司,到底值多少钱?市盈率、市净率、市销率,就是三把最常用的秤。我做了这么多年量化,这三把秤几乎天天用。但很多人用错了,或者只知其一不知其二。今天咱们就把它们彻底讲透。
3.1 市盈率(PE):市场愿意为每1元利润付多少钱?
市盈率,英文叫Price-to-Earnings Ratio,简称PE。公式很简单:
PE = 股价 / 每股收益(EPS)
或者用总市值除以净利润:
PE = 总市值 / 净利润
举个例子。假设某公司股价100元,每股收益5元,那么PE就是20倍。意思是,你花100元买这股,相当于为它每年赚的5元利润支付了20倍的溢价。
PE的本质是什么? 是回本年限。如果公司每年利润不变,20倍PE意味着你需要20年才能回本。当然,现实中利润会变,所以PE更像一个情绪指标——市场对这家公司未来有多乐观。
关键点: PE越低,通常说明估值越便宜。但要注意,低PE也可能是陷阱。我在项目中遇到过一家传统制造业公司,PE只有5倍,看着便宜得离谱。结果一查,它的利润主要来自变卖资产,主业早就亏损了。这种低PE就是“价值陷阱”。
3.1.1 静态PE vs TTM PE
这里有个坑,很多人踩过。PE分为静态PE和TTM PE,两者差别很大。
| 类型 | 数据来源 | 特点 |
|---|---|---|
| 静态PE | 最近一期年报的净利润 | 数据滞后,可能过时 |
| TTM PE | 最近四个季度的滚动净利润 | 实时性更强,更准确 |
静态PE用的是上一份年报的数据。比如现在是2024年10月,静态PE用的还是2023年年报的利润。这中间隔了快一年,公司可能已经变样了。
TTM PE(Trailing Twelve Months)用的是最近四个季度的数据。比如2024年10月,就用2024年Q3、Q2、Q1加上2023年Q4的利润。这样更贴近当前情况。
我个人习惯,做量化模型时只用TTM PE。静态PE太滞后了,容易误导决策。你想想看,一家公司今年利润翻倍了,但静态PE还显示去年的高估值,这不是坑人吗?
避坑指南: 我曾经用静态PE筛选股票,结果选出一堆看似便宜的标的。后来换成TTM PE,才发现其中好几家利润已经大幅下滑,静态PE的“便宜”是假象。从此以后,我的模型里只认TTM。
3.1.2 行业特性对PE的影响
不同行业的PE天差地别。你不能拿银行股10倍PE去对比科技股50倍PE,然后说银行便宜。这没有意义。
- 周期性行业(如钢铁、煤炭):利润波动大,PE在周期高点很低,在周期低点很高。用PE估值要小心,最好结合PB一起看。
- 成长性行业(如科技、医药):市场愿意给高PE,因为预期未来利润会快速增长。30-50倍PE很常见。
- 稳定行业(如消费、公用事业):PE相对稳定,一般在15-25倍之间。
嗯,这里要注意:跨行业比较PE,就像拿苹果和橘子比重量。我一般会在同一行业内做横向对比,或者用行业平均PE作为基准。
3.2 市净率(PB):公司净资产值多少钱?
市净率,Price-to-Book Ratio,简称PB。公式:
PB = 股价 / 每股净资产
或者:
PB = 总市值 / 净资产
PB衡量的是,市场愿意为公司的净资产支付多少溢价。如果PB=1,说明股价等于净资产;PB<1,说明市场认为公司资产不值账面价;PB>1,说明市场看好公司未来的盈利能力。
PB最适合什么行业? 金融、地产、制造业等重资产行业。因为这些公司的资产容易估值,利润波动也相对稳定。
举个例子。银行股经常破净,PB小于1。这并不意味着银行要倒闭,而是市场对银行资产质量有疑虑——比如坏账率可能被低估。我在做银行股量化模型时,PB是核心指标之一,但我会结合不良贷款率一起看。
警告: PB不适用于轻资产公司,比如互联网、软件公司。它们的核心资产是人才、技术、品牌,这些在账面上几乎没体现。你用PB去估值,会发现PB高得离谱,但这不代表公司贵了。
3.2.1 PB与PE的配合使用
我经常把PB和PE放在一起看,形成“PB-PE矩阵”。
- 低PB + 低PE:典型的价值股,可能被低估。但也要警惕价值陷阱。
- 低PB + 高PE:公司可能处于周期低谷,利润差但资产厚。适合逆向投资。
- 高PB + 低PE:公司盈利能力很强,市场愿意给资产溢价。可能是优质成长股。
- 高PB + 高PE:市场极度乐观,风险较高。
说白了,PB看的是“底子”,PE看的是“面子”。两者结合,才能看清全貌。
3.3 市销率(PS):营收规模的价值
市销率,Price-to-Sales Ratio,简称PS。公式:
PS = 总市值 / 营业收入
PS衡量的是,市场愿意为每1元营收支付多少钱。它最大的优点是:营收很难造假。利润可以调节,但营收相对真实。
PS最适合什么场景? 亏损公司。当公司净利润为负时,PE是负数,没法用。但PS仍然有效。很多成长型公司早期亏损,但营收增长很快,PS就是很好的估值工具。
我记得有一次分析一家SaaS公司,它连续三年亏损,PE是负的。但PS只有3倍,而同行业平均是8倍。这说明市场可能低估了它的营收价值。后来这家公司扭亏为盈,股价翻了三倍。
关键点: PS的缺点是忽略了利润率。两家公司营收相同,但一家利润率20%,另一家只有5%,PS一样但价值完全不同。所以PS最好和毛利率、净利率一起看。
3.3.1 PS的行业适用性
- 零售、电商:营收规模大,利润率低,PS常用。
- 软件、SaaS:高毛利率,PS可以反映用户价值。
- 传统制造业:营收稳定,但PS不如PE、PB常用。
3.4 知识体系总览
为了让你更直观地理解这三个指标的关系,我画了一张图。你可以看到,PE、PB、PS分别从利润、资产、营收三个维度给公司估值。它们各有侧重,也各有局限。
3.5 代码实战:计算PE、PB、PS
光说不练假把式。咱们用Python把这三个指标算出来。假设你已经有了上一章的数据获取代码,这里直接计算。
import pandas as pd
import numpy as np
# 假设df是包含股票数据的DataFrame
# 字段:price(股价), eps_ttm(TTM每股收益), bvps(每股净资产), sps(每股营收)
def calculate_valuation_metrics(df):
"""
计算核心估值指标
"""
# 市盈率 TTM
df['PE_TTM'] = df['price'] / df['eps_ttm']
# 市净率
df['PB'] = df['price'] / df['bvps']
# 市销率
df['PS'] = df['price'] / df['sps']
# 处理异常值(比如净利润为负导致PE为负)
df['PE_TTM'] = df['PE_TTM'].replace([np.inf, -np.inf], np.nan)
return df
# 使用示例
# result = calculate_valuation_metrics(my_data)
# print(result[['stock_code', 'PE_TTM', 'PB', 'PS']].head())
个人经验: 计算PE时,一定要处理净利润为负的情况。我早期写代码时没注意,结果PE出现了负值,排序时全乱了。后来加了个判断,负利润的PE直接设为NaN,不参与排名。
3.6 三个指标的综合应用
在实际量化模型中,我不会只用单一指标。我习惯构建一个“估值综合得分”:
- 计算每个指标在行业内的百分位排名
- 给PE、PB、PS分配权重(比如0.4、0.3、0.3)
- 加权求和得到综合得分
举个例子。某消费股PE在行业内排前20%(低估值),PB排前30%,PS排前40%。综合得分 = 0.4*20 + 0.3*30 + 0.3*40 = 29分。分数越低,说明越便宜。
嗯,这里要注意:权重不是固定的。不同行业,权重应该不同。比如银行股,PB的权重可以高一些;科技股,PS的权重可以高一些。我一般会通过回测来优化权重。
核心思想: 估值指标不是孤立的数字,而是需要放在行业背景、公司生命周期中去理解。低PE不一定便宜,高PE不一定贵。关键是你得知道为什么。
好了,这一章的内容就到这里。PE、PB、PS这三个指标,你掌握了计算方法和使用场景,也知道了TTM和静态的区别,以及行业特性的影响。下一章,我们会继续深入,聊聊更进阶的估值指标。