系列通过一些实例介绍量化的入门知识,适合零基础的初学者。本篇介绍如何实现估值温度计。
估值温度计用来反映估值所处的位置,比如大家熟悉的集思录估值温度计长这样子的:
上图是A股全市场的PE估值温度计,有时候我们想知道某个指数的估值温度、某个板块的估值温度、某个股票的估值温度,这时就需要自己算一下,计算的工具很多,EXCEL、Python或其他的数据处理工具都行,这里推荐Python,简单易用,比如只要四行代码就能实现A股的估值温度计:
import akshare as ak # 导入数据源
entire_marke_pe_df = ak.stock_a_ttm_lyr() # 获取A股全市场的PE数据
pe_ttm_middle_pct = entire_marke_pe_df[['date','middlePETTM']].set_index('date').rank(ascending=True, pct=True)*100 # 计算PE值的历史百分位
pe_ttm_middle_pct.plot(figsize=(16,8),grid=True,title='A股PE估值温度计') # 画图
结果如下:
跟上图有些不同是因为选取的时间段不一样。
第一行代码是导入数据源。计算估值温度需要用到PE数据,这里用的是AKShare这个数据源。AKShare是一个免费的数据源,提供了大量的数据接口,用来做些一般的研究基本够了。有关AKShare的文档可以看
https://www.akshare.xyz/index.html
第二行代码是获取A股全市场的PE数据,通过数据接口ak.stock_a_ttm_lyr()返回一个DataFrame类型的数据存储在变量entire_marke_pe_df中。DataFrame类型是个表格,把这个DataFrame导出到Excel中是这样的:
第三行代码是计算PE估值的历史百分位并保存到变量pe_ttm_middle_pct中。这里我们用到了上面这个entire_marke_pe_df表格的两列数据:‘date’ 和 ‘middlePETTM’。'date’是日期;'middlePETTM’是全市场用TTM计算的PE值的中位数。接下来是计算估值温度,所谓估值温度计,实际上就是估值的历史百分位,历史百分位100表示估值水平为历史最高,历史百分位0表示估值水平为历史最低。这里用rank()函数就可以把历史百分位计算好了。
第四行代码是用plot()函数画图。
是不是超简单。刚才做的是PE的温度计,PB温度计又怎么做呢?把代码稍改一下就行:
entire_marke_pb_df = ak.stock_a_all_pb() # 获取A股全市场的PB数据
pb_middle_pct = entire_marke_pb_df[['date','middlePB']].set_index('date').rank(ascending=True, pct=True)*100 # 计算PB的历史百分位
pb_middle_pct.plot(figsize=(16,8),grid=True,title='A股PB估值温度计') # 画图
数据源导入一次就行,所以这回只需三行代码,主要改动是把获取PE数据换成获取PB数据。结果如下:
本篇简单介绍了用Python实现全市场的估值温度计。下篇继续介绍如何计算各指数、各行业的估值温度:沪深300和中证500哪个更便宜?食品饮料行业的估值到底高不高?这都是几行代码的事,量化并没有这么难,用Python,So Easy。