前面介绍过针对每一个单独的指数,可以通过市盈率和市净率的计算获得指数的估值百分位,从而进行相应的投资(《基于Python的指数基金量化投资 - 通过市盈率和市净率对指数估值》)。
这里介绍一个可以把所有指数估值信息进行汇总的方式:指数估值榜,这样可以直观的看出所有指数的估值点位,从整体上来进行选择,而不是一个指数一个指数的筛选,更加高效和便捷。
图中标示出了大部分目前的主流指数,纵坐标的单位是0%到100%,然后通过不同的背景颜色对估值高低进行区分,从上到下分为7个颜色区间,从红色过度绿色分别对应严重高估、高估、正常偏高、正常、正常偏低、低估和严重低估,这个区间是按照前面介绍的估值区间划分的(《基于Python的指数基金量化投资 - 通过市盈率和市净率对指数估值》),如下所示。
分别计算出每个指数的估值百分位,然后放到对应的区间,就能获得估值榜的数据。
例如沪深300算出来的估值百分位是75%,然后就把它放在60%-80%正常偏高这个区间内找到75%的位置画一个白点进行标识,而中证500算出来的估值百分位是23%,则在20%-40%正常偏低区间内找到23%的位置画一个白点进行标识,依次找出所有指数的估值点位后画出即可。
下面是具体的代码实现过程。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
index_name_csv = ['g_hs300.csv', # 沪深300 - 0
'g_zz500.csv', # 中证500 - 1
'g_zz100.csv', # 中证100 - 2
'g_shz50.csv', # 上证50 - 3
'g_hsyy300.csv', # 沪深医药300 - 4
'g_zzyh.csv', # 中证银行 -5
'g_zzxf.csv', # 中证消费 -6
'g_zzbj.csv'