投資指數(shù)基金梳侨,最簡(jiǎn)單也最實(shí)用的策略就是便宜的時(shí)候買入尺上,昂貴的時(shí)候賣出材蛛,那怎么判斷目前指數(shù)基金是否便宜?就會(huì)通過(guò)估值來(lái)進(jìn)行判斷怎抛,估值包含兩個(gè)指標(biāo)卑吭,一個(gè)是市盈率,另外一個(gè)是市凈率马绝,通過(guò)計(jì)算市盈率或者市凈率的歷史百分位就可以得到指數(shù)基金的估值情況豆赏,從而根據(jù)具體的估值點(diǎn)位來(lái)進(jìn)行投資。
像寬基指數(shù),滬深300掷邦、中證500白胀、上證50、中證100等都用市盈率進(jìn)行估值耙饰,而像中證銀行和證券公司就要用到市凈率進(jìn)行估值纹笼,因?yàn)閷?duì)于金融業(yè)來(lái)說(shuō),貨幣反而是產(chǎn)品苟跪,通過(guò)市盈率進(jìn)行估值就會(huì)失真,所以需要用市凈率蔓涧。
下面通過(guò)創(chuàng)業(yè)板指的市盈率先來(lái)看看到底怎么用市盈率進(jìn)行估值件已。
其中藍(lán)線是從2010年以來(lái)創(chuàng)業(yè)板指的市盈率曲線,紅線是當(dāng)前市盈率的位置元暴,百分?jǐn)?shù)88.63%表示當(dāng)前市盈率的百分位篷扩,也就是說(shuō)當(dāng)前市盈率比過(guò)去88.63%的時(shí)間要高。大家可以結(jié)合下面表格中的百分位確定估值區(qū)間的高低來(lái)進(jìn)行投資的操作茉盏,通過(guò)表格可以得到創(chuàng)業(yè)板指處于高估區(qū)間鉴未,可以大份額賣出。
同樣像中證銀行也是一樣的效果鸠姨,只不過(guò)采用的估值指標(biāo)是市凈率铜秆。
從上面的圖中可以看出中證銀行估值百分位是13.49%,處于低估區(qū)間讶迁,可以采取大份額定投连茧。
下面具體來(lái)看看代碼怎么實(shí)現(xiàn)。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
view_name = 'g_cyb'
index_name = '創(chuàng)業(yè)板指- '
index_info = pd.read_csv('./importfile/indexSeries/indexValuation/g/'+ view_name + '.csv')
# 加載創(chuàng)業(yè)板市盈率數(shù)據(jù)
index_data_pe =index_info['pe'].values[1:len(index_info['pe']):1]
index_data_pb =index_info['pb'].values[1:len(index_info['pb']):1]
index_data_roe = index_info['roe'].values[1:len(index_info['roe']):1]
# 獲取指數(shù)的市盈率巍糯、市凈率和ROE數(shù)據(jù)
val_loc = np.where(index_data_pe
val_percentage = len(val_loc[0]) /(len(index_data_pe))
# 計(jì)算歷史百分位
size_title = 28
size_label = 23
size_text = 35
size_line = 3
size_rotation = 20
plt_gap = 11
plt.rcParams["axes.grid"] = True
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False
plt.rcParams["grid.linestyle"] =(3, 5)
# 畫圖的參數(shù)設(shè)置
fig = plt.figure(1)
ax1 = fig.add_subplot(1,1,1)
ax1.plot(index_data_pe,label='',color='cornflowerblue',linewidth='2',linestyle='-')
plt.plot([len(index_data_pe),0],[index_data_pe[-1],index_data_pe[-1]],color='tomato',linewidth=size_line)
font = {'size': size_text, 'color':'tomato', 'weight': 'bold'}
plt.text(len(index_data_pe),index_data_pe[-1],str("{:.2f}".format(100*val_percentage)+'%'),fontdict=font)
index_ticks =index_info['date'].values[1:len(index_info['date']):1]
index_x =range(len(index_ticks),0,-round(len(index_ticks)/plt_gap))
index_xticks_tmp = index_ticks.tolist()
index_xticks =index_xticks_tmp[len(index_xticks_tmp):0:-round(len(index_ticks)/plt_gap)]
ax1.set_xticks(index_x)
ax1.set_xticklabels(index_xticks,rotation=size_rotation)
plt.tick_params(labelsize=size_label)
plt.title(index_name + '市盈率', size=size_title)
val_loc = np.where(index_data_pb
val_percentage = len(val_loc[0]) /(len(index_data_pb))
plt.rcParams["axes.grid"] = True
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False
plt.rcParams["grid.linestyle"] =(3, 5)
fig = plt.figure(2)
ax1 = fig.add_subplot(1,1,1)
ax1.plot(index_data_pb,label='',color='cornflowerblue',linewidth='2',linestyle='-')
plt.plot([len(index_data_pb),0],[index_data_pb[-1],index_data_pb[-1]],color='tomato',linewidth=size_line)
font = {'size': size_text, 'color':'tomato', 'weight': 'black'}
plt.text(len(index_data_pb),index_data_pb[-1],str("{:.2f}".format(100*val_percentage)+'%'),fontdict=font)
index_ticks =index_info['date'].values[1:len(index_info['date']):1]
index_x =range(len(index_ticks),0,-round(len(index_ticks)/plt_gap))
index_xticks_tmp = index_ticks.tolist()
index_xticks =index_xticks_tmp[len(index_xticks_tmp):0:-round(len(index_ticks)/plt_gap)]
ax1.set_xticks(index_x)
ax1.set_xticklabels(index_xticks,rotation=size_rotation)
plt.tick_params(labelsize=size_label)
plt.title(index_name + '市凈率', size=size_title)
plt.show()
如需代碼里面用到的指數(shù)估值數(shù)據(jù)或者有疑問(wèn)啸驯,大家可以留言,歡迎拍磚^_^
課程參考:網(wǎng)易云課堂? 基于Python的量化指數(shù)基金投資