总说估值高估低估?教你用PE/PB历史分位点算算到底贵不贵

用户头像sh_****065rs2
2025-12-19 发布

总说估值高估低估?教你用PE/PB历史分位点算算到底贵不贵

一、PE/PB分位点是什么?

PE分位点指当前市盈率在历史数据中的位置,例如PE分位30%表示比过去70%时间便宜。PB分位点同理,适用于重资产行业。分位点越低,估值可能越有吸引力。

二、如何计算分位点?

  1. 获取历史数据‌:通过baostock获取指数或个股的PE/PB历史值,代码见最下方。
  2. 确定时间范围‌:通常选择3-5年或10年数据,时间越长越稳定。
  3. 排序计算‌:将历史数据按从小到大排序,当前值对应的百分位即分位点。

· 例:沪深300当前PE为13.32倍,近20年分位68%,表示比过去32%时间更贵。

三、分位点使用技巧

· ‌低估区间‌:分位点<30%时,可考虑分批买入。

· ‌高估区间‌:分位点>70%时,需警惕回调风险。

· ‌行业差异‌:科技股PE分位常高于消费股,需结合行业特性判断。

四、注意事项

· ‌避免单一指标‌:需结合ROE、现金流等综合评估。

· ‌警惕数据陷阱‌:周期股或亏损企业不适用PE/PB分位点。

· ‌动态调整‌:定期更新数据,避免“刻舟求剑”。

通过Baostock获取PE/PB值代码:

import baostock as bs

import pandas as pd

登陆系统

lg = bs.login()

显示登陆返回信息

print('login respond error_code:'+lg.error_code)

print('login respond error_msg:'+lg.error_msg)

获取沪深A股估值指标(日频)数据

peTTM 动态市盈率

psTTM 市销率

pcfNcfTTM 市现率

pbMRQ 市净率

rs = bs.query_history_k_data_plus("sh.600000",

"date,code,close,peTTM,pbMRQ,psTTM,pcfNcfTTM",

start_date='2024-01-01', end_date='2024-12-31',

frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)

print('query_history_k_data_plus respond error_msg:'+rs.error_msg)

打印结果集

result_list = []

while (rs.error_code == '0') & rs.next():

获取一条记录,将记录合并在一起

result_list.append(rs.get_row_data())
result = pd.DataFrame(result_list, columns=rs.fields)

结果集输出到csv文件

result.to_csv("D:\\history_A_stock_valuation_indicator_data.csv", encoding="gbk", index=False)

print(result)

登出系统

bs.logout()

评论