投资指数基金,最简单也最实用的策略就是便宜的时候买入,昂贵的时候卖出,那怎么判断目前指数基金是否便宜?就会通过估值来进行判断,估值包含两个指标,一个是市盈率,另外一个是市净率,通过计算市盈率或者市净率的历史百分位就可以得到指数基金的估值情况,从而根据具体的估值点位来进行投资。

像宽基指数,沪深300、中证500、上证50、中证100等都用市盈率进行估值,而像中证银行和证券公司就要用到市净率进行估值,因为对于金融业来说,货币反而是产品,通过市盈率进行估值就会失真,所以需要用市净率。

下面通过创业板指的市盈率先来看看到底怎么用市盈率进行估值。

其中蓝线是从2010年以来创业板指的市盈率曲线,红线是当前市盈率的位置,百分数88.63%表示当前市盈率的百分位,也就是说当前市盈率比过去88.63%的时间要高。大家可以结合下面表格中的百分位确定估值区间的高低来进行投资的操作,通过表格可以得到创业板指处于高估区间,可以大份额卖出。

同样像中证银行也是一样的效果,只不过采用的估值指标是市净率。

从上面的图中可以看出中证银行估值百分位是13.49%,处于低估区间,可以采取大份额定投。

下面具体来看看代码怎么实现。

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

view_name = 'g_cyb'

index_name = '创业板指 - '

index_info = pd.read_csv('./importfile/indexSeries/indexValuation/g/' + view_name + '.csv')

# 加载创业板市盈率数据

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]

# 获取指数的市盈率、市净率和ROE数据

val_loc = np.where(index_data_pe < index_data_pe[-1])

val_percentage = len(val_loc[0]) / (len(index_data_pe))

# 计算历史百分位

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)

# 画图的参数设置

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 < index_data_pb[-1])

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()

代码里面需要用到的指数估值数据大家如果需要可以添加小将前行的微信号xjqx_666进行获取,如果大家有什么问题可以留言同样也可以添加微信号,欢迎拍砖^_^

课程参考:基于Python的量化指数基金投资

基于Python的指数基金量化投资-通过市盈率和市净率对指数估值相关推荐

  1. 基于Python的指数基金量化投资——指数数据获取

    做基金的量化,最最重要的是要有数据,所以指数的数据是所有分析的源头. Baostock就提供比较全面的指数数据,具体可以参考<基于Python的指数基金量化投资 - 股票数据源baostock& ...

  2. 基于Python的指数基金量化投资 ——A股所有个股名称和证券代码获取

    前面介绍过怎么获取A股个股的数据<基于Python的指数基金量化投资 - 股票数据源baostock>,里面包含了个股的各种历史数据,包含:股价.市盈率.市净率.成交量.换手率等等. 但是 ...

  3. 基于Python的指数基金量化投资-股票数据源baostock

    基于Python的指数基金量化投资-股票数据源baostock 课程参考:基于Python的量化指数基金投资 微信公众号: 量化用到的数据源来自baostock,可以通过www.baostock.co ...

  4. 基于Python的指数基金量化投资——指数基金偏离度计算

    什么是指数偏离度 它是指数涨跌的快慢和偏离幅度指标. 当指数快速上涨,偏离度数据会迅速的向上偏离,当快速下跌时,偏离度数据会迅速的向下偏离. 而持续的上涨中出现下跌,偏离度就会急转直下,另一种持续的下 ...

  5. 基于Python的指数基金量化投资——指数基金间相关度计算

    每一种指数基金都是由一篮子股票组成的,少的有几十个成分股,多的有几百上千个成分股,而整个A股目前有四千多家上市公司,每种指数基金都从A股这个大篮子里面选取成分股,那就会有个问题,不同的指数基金选择的成 ...

  6. 基于Python的指数基金量化投资——A股全市场成交量计算

    成交量是反映市场情绪和流动性一个很重要的指标,当出现牛市时成交量会急剧放大,当出现熊市时成交量会急剧缩小. 通过成交量可以反映出市场的情绪是处于正常.平淡还是疯狂,可以在一定程度上指导我们的投资操作, ...

  7. 基于Python的指数基金量化投资-为什么量化指数基金投资

    上一次写了基于Python的指数基金量化投资-股票数据源baostock 这次来说一下为什么要量化指数基金投资. 进行指数基金投资我们需要清楚几个关键点:该投资哪些指数品种,为什么投资这些品种.这些品 ...

  8. 基于Python的指数基金量化投资 - 指数投资技巧(三)不定期定额

    指数投资方式中有四种基本的方法,分别是定期定额.定期不定额.不定期定额和不定期不定额,这四种方式投资效果不同,对投资者的要求也不同,定期定额最简单,但收益不算高,不定期不定额最复杂,对投资者的要求最高 ...

  9. 基于Python的指数基金量化投资——指数包含的个股数据获取

    要计算指数的加权值,指数的市盈率.市净率,或者指数的净资产收益率,都需要用到指数所包含的个股信息,前面分享的<指数的净资产收益率计算>和<指数的市盈率和市净率计算>等文中都有提 ...

  10. 基于python的股票程序化交易论文_基于Python工具的股票量化投资策略研究

    2019 年第 07 期 20 世 纪 80 年代, 一 些 投 资 者 开 始 利用 计 算 机 研究金 融 数据 , 并 初显 成 效 . 20 世 纪 末 , 投 资 者 把 计 算 机 技术 ...

最新文章

  1. 定时器0工作方式1,定时1s
  2. android流程化步骤样式,Android RecyclerView 解析之绘制流程篇
  3. Android 设备的CPU类型(通常称为”ABIs”)
  4. 【转载】大规模网站架构实战之体系结构
  5. reids mysql 面试_月薪3k的后端面试点-Mysql和Redis
  6. python 分布式锁_Python分布式锁 Sherlock
  7. Objective-C中的typedef枚举是什么?
  8. linux中LCD之framebuffer设备驱动
  9. PHP实现折半查询算法
  10. Linux 如何限制用户的磁盘使用量 -- quota
  11. 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  12. 微信小程序iphone7设备下跳转h5页面失败,h5页面显示白屏,加载报错,其他页面正常显示
  13. php 生成模糊图片
  14. 地理信息系统专业考研 GIS专业考研 名词解释大全[转]
  15. 信号与系统公式笔记(6)
  16. OpenAI 首个研究成果 生成式模型系列
  17. Android-移动支付 支付宝 微信 银联
  18. 51开发实例 基于51单片机的火灾报警系统
  19. leetCode:33. 搜索旋转排序数组
  20. ubuntu下搜狗输入法的乱码或者中英文切换异常解决办法

热门文章

  1. 为何程序员工资高?原因都在这儿了!
  2. 苹果手机点击input标签页面放大的解决方法
  3. iOS12正式版:支持Siri捷径
  4. 中国裁判文书网爬虫分析
  5. 使用Matplotlib美化和修饰图形
  6. win7锁屏壁纸更改方法 win7怎么设置锁屏壁纸
  7. 肯德尔相关系数计算方法
  8. layui 之可搜索的下拉框select lay-serach
  9. 计算机外文文献PDF,computer network 计算机 网络 外文文献.pdf
  10. 天翎知识管理系统为研究所文档管理组织创新赋能