前面介绍了指数的市盈率和市净率的计算过程以及怎么通过市盈率和市净率获得估值信息,从而进行相应的投资投资。

这次就来和大家聊聊全市场的市盈率和市净率计算,有了指数的估值数据,为什么还要看全市场的估值信息呢?先看看下面这张图。

从整体来看,全市场估值和沪深300、上证红利、中证消费和中证医药的趋势基本是同步的,但在某些局部区域也会有细微的差别,像2018年4月左右,全市场估值较低,但中证消费的估值较高,2021年3月左右,全市场估值较低,但中证医药和中证消费的估值却非常高。

所以全市场估值会起到一个参考的作用,可以结合全市场估值和指数的估值来进行绝对估值和相对估值,也就是通过指数本身的估值来判断指数的便宜程度,同时通过全市场估值来判断指数的相对位置。

可以结合下面的表格进行投资。

所以全市场的估值计算就变得非常重要,下面就来看看怎么计算全市场的市盈率和市净率。

大A股目前有4千多家上市公司,如果把全市场看作一个指数的话,通过前面文章《基于Python的指数基金量化投资 - 指数的市盈率和市净率计算》介绍的计算方法是可以算出全市场对应的估值的,但这样的话要计算的数据就非常多,速度会很慢。这里就改变一下计算方法。

我们发现全市场有4千多家上市公司,数据空间相对来说是足够大的,所以这里就采用取中位数的方式来代替全市场的估值数据,这样计算的话速度快,同时结果具有代表性。下面先简单介绍下怎么进行中位数计算。

这样计算的话就简单很多,按照三个步骤就能获得全市场市盈率:

  1. 首先获取所有个股的市盈率数据;
  2. 其次对市盈率数据进行排序;
  3. 最后取出中间位置上的数据就是全市场市盈率;

下面来看看具体的代码实现:

import pandas as pd

import numpy as np

stock_name_code = pd.read_csv('./importfile/code2name.csv')

# 所有个股名称和证券号

cnt = 0

array_pe_history_tmp = np.zeros([stock_name_code.shape[0], 1])

for i in range(stock_name_code.shape[0]):

stock_name = stock_name_code.loc[i]['code']

stock_file_name = stock_name + '.csv'

stock_info = pd.read_csv('C:/Program Files (x86)/Python/prjs/exportfile/stockDataAll/' + stock_file_name)

array_pe_history_tmp[cnt] = stock_info['peTTM'].values[-1]

cnt = cnt + 1

# 加载所有个股的市盈率

sorted_tmp_pe = np.array(sorted(array_pe_history_tmp[0:cnt - 1]))

# 对所有个股市盈率进行排序

global_pe = sorted_tmp_pe[round(len(sorted_tmp_pe)/2)]

# 取出中间位置的市盈率作为全市场市盈率估值

print("全市场 pe = " + str(global_pe))

同样采用和市盈率一样的计算方式可以获得全市场市净率,只是把个股的市盈率数据换成市净率即可。

import pandas as pd

import numpy as np

stock_name_code = pd.read_csv('./importfile/code2name.csv')

# 所有个股名称和证券号

cnt = 0

array_pb_history_tmp = np.zeros([stock_name_code.shape[0], 1])

for i in range(stock_name_code.shape[0]):

stock_name = stock_name_code.loc[i]['code']

stock_file_name = stock_name + '.csv'

stock_info = pd.read_csv('C:/Program Files (x86)/Python/prjs/exportfile/stockDataAll/' + stock_file_name)

array_pb_history_tmp[cnt] = stock_info['pbMRQ'].values[-1]

cnt = cnt + 1

# 加载所有个股的市盈率

sorted_tmp_pb = np.array(sorted(array_pb_history_tmp[0:cnt - 1]))

# 对所有个股市盈率进行排序

global_pb = sorted_tmp_pb[round(len(sorted_tmp_pb)/2)]

# 取出中间位置的市盈率作为全市场市盈率估值

print("全市场 pb = " + str(global_pb))

代码中使用到的个股数据大家可以参看《基于Python的指数基金量化投资 - 股票数据源baostock》,另外code2name.csv文件大家可以留言获取,也可以添加小将前行微信xjqx_666获取,有什么问题大家随时沟通,欢迎拍砖^_^

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

基于Python的指数基金量化投资-全市场的市盈率和市净率计算相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. java 自定义函数_jxTMS--java与python的协作
  2. 008 python接口 unittest
  3. 简述css布局技术的特点,div+css布局技术漫谈
  4. 迷宫问题 POJ - 3984
  5. 输入语句 readline 1006 c#
  6. C语言连接PostgreSQL数据库
  7. 进程虚拟地址空间之数据分区存放【转】
  8. Android学习系列(一)初识安卓
  9. 简单python脚本实例-对Python实现简单的API接口实例讲解
  10. SSDP:DDoS***的“新宠”
  11. CheckBox组件
  12. 铲除浏览器右键菜单中的QQ相关项目(转)
  13. [Android] 微信apk.1安装器,200k可隐藏 解决微信传apk自动改名apk.1f无法安装问题
  14. 芬兰Vaisala温湿度变送器HMT330
  15. DBMS_SQL的使用
  16. GitHub上README.md排版样式教程
  17. gitlab中文网的使用_GitLab使用流程及手册
  18. PHP对接企业微信审批回调
  19. 用exclusion切断maven jar包的依赖传递
  20. java中感叹号啥意思_感叹号暗示什么意思

热门文章

  1. 计算机表格 求差,Excel表格中求差函数公式怎么用
  2. python编辑dbf文件_Python修改DBF文件指定列
  3. Spring学习之浅析refresh()执行逻辑
  4. HDS VSP/VM高端存储更换硬盘
  5. ftp服务器上传文件太慢,ftp服务器上传文件速度多少
  6. 堪萨斯大学计算机硕士,堪萨斯大学计算机专业设置及申请条件汇总 你get到了吗?...
  7. 渥太华大学计算机科学,加拿大渥太华大学计算机科学排名第四
  8. mysql存储过程成绩等级_MySQL使用存储过程创建百万级别测试数据
  9. android 手机录屏功能,安卓手机录屏各种机型该如何操作
  10. PicGo简介及其下载 安装 配置 使用 卸载