3、关键财务指标(上):市盈率(PE)、市净率(PB)、净资产收益率(ROE)
各位同学,咱们今天聊点硬核的。
做量化投资,说白了就是跟数字打交道。但数字那么多,哪些才是真正能帮你赚钱的?我个人习惯,先看三个最基础的指标:PE、PB、ROE。这三个家伙,就像财务分析里的“三剑客”,搞懂了它们,你再看财报,就不再是看天书了。
核心观点:PE看“贵不贵”,PB看“实不实”,ROE看“赚不赚”。三者结合,才能判断一家公司的真实价值。
3.1 市盈率(PE)—— 市场愿意为你的利润付多少钱?
市盈率,英文叫Price-to-Earnings Ratio,简称PE。公式很简单:PE = 股价 / 每股收益。
你想想看,这代表什么?代表你买这家公司股票,需要多少年才能“回本”。比如PE是10倍,意味着如果公司每年赚的钱不变,你投进去的钱,10年能赚回来。当然,这只是理想情况。
我遇到过的情况:有一次我分析一家科技公司,PE高达80倍。很多人一看就觉得“太贵了”。但我仔细看了它的营收增速,连续三年超过50%。这种高增长公司,市场愿意给高PE,其实是在“预支”它未来的利润。所以,PE不能孤立地看。
3.1.1 PE的三种常见类型
| 类型 | 计算方式 | 适用场景 |
|---|---|---|
| 静态PE | 股价 / 上一年度每股收益 | 看历史,比较稳定 |
| 滚动PE(TTM) | 股价 / 最近四个季度每股收益之和 | 我最常用,时效性更强 |
| 动态PE | 股价 / 预测未来每股收益 | 依赖预测,容易有偏差 |
我的小技巧:做量化回测时,我一般用滚动PE(TTM)。因为它既包含了最新业绩,又避免了单季度波动带来的噪音。你可以用Python的yfinance库直接拉取TTM数据。
3.1.2 用Python计算PE
嗯,这里要注意,别手动算。写个脚本,几秒钟搞定。
import yfinance as yf
# 以贵州茅台为例
ticker = yf.Ticker("600519.SS")
info = ticker.info
# 获取股价和每股收益(TTM)
price = info['currentPrice']
eps = info['trailingEps']
pe_ttm = price / eps
print(f"当前股价: {price}")
print(f"TTM每股收益: {eps}")
print(f"滚动市盈率: {pe_ttm:.2f}")
避坑指南:我曾经踩过一个坑——直接用静态PE做策略。结果遇到一家公司,上一年度利润暴增(卖资产),静态PE低得离谱。我以为是低估,结果买入后业绩变脸,股价大跌。后来我学乖了,一定要看扣非后的PE,或者用TTM。
3.2 市净率(PB)—— 公司破产清算,你能拿回多少?
市净率,Price-to-Book Ratio,简称PB。公式:PB = 股价 / 每股净资产。
说白了,就是市场给这家公司的“净资产”打了多少折。PB小于1,意味着市场认为这家公司的资产不值账面那么多钱。PB大于1,说明市场愿意溢价购买它的资产。
我个人习惯:对于银行、保险这类重资产公司,PB是核心指标。因为它们的资产(比如贷款、债券)相对容易估值。但对于互联网公司,PB基本没用——它们的核心资产是人和代码,不在资产负债表上。
3.2.1 PB的实战应用
- PB < 1:可能是“破净股”,市场极度悲观。但要注意,也可能是资产质量差(比如大量坏账)。
- PB = 1~3:正常范围,具体看行业。
- PB > 5:轻资产公司(如软件、医药)常见,不代表高估。
关键点:PB和ROE要一起看。一家公司PB很高,但ROE也很高,那可能是合理的。如果PB高、ROE低,那就要小心了。
3.3 净资产收益率(ROE)—— 公司赚钱的效率到底怎么样?
净资产收益率,Return on Equity,简称ROE。公式:ROE = 净利润 / 净资产。
这是我最看重的指标,没有之一。它衡量的是:股东投进去1块钱,公司一年能赚回多少钱。ROE越高,说明公司赚钱效率越高。
我记得:巴菲特说过,如果只能选一个指标,他会选ROE。他买的很多公司,长期ROE都在15%以上。我自己做策略时,也会把ROE > 15%作为选股的第一道门槛。
3.3.1 杜邦分析法——拆解ROE
ROE高,不一定就是好公司。为什么?因为可以通过加杠杆(借钱)来推高ROE。所以,我习惯用杜邦分析法把ROE拆开看:
ROE = 净利率 × 资产周转率 × 权益乘数
- 净利率:卖东西赚不赚钱?
- 资产周转率:资产利用效率高不高?
- 权益乘数:杠杆加了多少?
举个例子:两家公司ROE都是20%。A公司靠高净利率(20%),B公司靠高杠杆(权益乘数5倍)。你选哪个?我肯定选A。因为高杠杆意味着高风险,一旦市场不好,可能血本无归。
我的经验:用Python做ROE拆解,可以快速识别“伪优质”公司。代码很简单,拉取利润表和资产负债表数据,一算便知。
3.4 三者的关系——一张图看懂
这三个指标不是孤立的。它们共同构成了一个分析框架。我画了一张图,帮你理清逻辑:
3.5 实战案例——用三个指标筛选股票
光说不练假把式。咱们用Python写一个简单的筛选器,从A股中挑出“三好学生”:
import akshare as ak
import pandas as pd
# 获取A股所有股票的基本面数据
# 这里用akshare库,需要先安装:pip install akshare
df = ak.stock_a_lg_indicator()
# 筛选条件
condition = (
(df['pe'] > 0) & (df['pe'] < 20) & # PE在0-20之间
(df['pb'] > 0) & (df['pb'] < 3) & # PB在0-3之间
(df['roe'] > 15) # ROE大于15%
)
result = df[condition].sort_values('roe', ascending=False)
print(result[['股票代码', '股票简称', 'pe', 'pb', 'roe']].head(10))
注意:这个筛选只是第一步。我曾经用这个策略跑回测,发现有些公司虽然指标好看,但股价就是不涨。为什么?因为市场风格不在它那边。所以,指标是基础,但还要结合行业趋势、资金流向等因素。
3.6 总结一下
好了,今天的内容就这些。PE、PB、ROE,这三个指标是财务分析的基石。你想想看,如果你连这三个都不懂,怎么敢把钱投进去?
我个人习惯,每次看一家新公司,先拉出这三个数据。如果PE太高、PB太低、ROE又不行,那基本就不用看了。如果三个指标都漂亮,再深入研究它的商业模式和护城河。
记住:指标是死的,人是活的。别迷信任何一个单一指标,要学会交叉验证。
课后作业:找一家你熟悉的上市公司,用Python拉取它的PE(TTM)、PB、ROE数据,然后分析一下:这三个指标是否匹配?有没有异常?把你的分析过程记录下来。