量化入门系列:沪深300、中证500、中证1000的估值百分位
本系列通过一些实例介绍量化的入门知识,适合零基础的初学者。本篇计算三个宽基指数:沪深300、中证500、中证1000的估值百分位,并将其与价格百分位比较。
本文的程序运行前要先导入数据源和pandas库:
import akshare as ak # 导入数据源
import pandas as pd # 导入pandas库
pandas的数据分析功能非常强大,在量化分析中会经常用到,要熟悉掌握。
从上一篇《量化入门系列:四行代码实现A股的估值温度计》可以总结出,此类量化分析通常分为三个步骤:
第一步打开冰箱,不是,第一步是获取数据;
第二步是处理数据;
第三步是输出结果。
我们先来计算沪深300的估值百分位,估值百分位是指当前估值在历史上的百分位数。然后我们将估值和价格进行对比。在集思录上是将估值百分位数和指数的价格曲线直接对比,像这样:
橘色线是PE估值百分位,蓝色线是中证全指的价格曲线。本文为了更直观的体现对比差异,不直接采用指数的价格曲线,而是用指数的价格百分位,价格百分位是指当前价格在历史上的百分位。
hs300_pe_df = ak.stock_a_pe(market="000300.XSHG").iloc[-1708:] # 获取沪深300的PE和收盘价数据
hs300_pe_pct = hs300_pe_df[['middlePETTM','close']].rank(ascending=True, pct=True)*100 # 计算PE和收盘价的历史百分位
hs300_pe_pct.plot(figsize=(16,8),grid=True,title='沪深300估值和价格百分位') # 画图
第一行代码是通过AKShare的数据接口ak.stock_a_pe()接口获取沪深300的PE和收盘价的数据,在计算历史百分位时需要一个时间窗口(即用哪个时段的数据),这个时间窗口太长或太短都不好,A股历史上牛熊周期大概是7年,因此这里取过去7年的数据(7年*244个交易日=1708个交易日),代码中 .iloc[-1708:] 就是取最近1708个数据。取出来的数据是个DataFrame格式的表格,存放在变量hs300_pe_df中,可以用 print 语句来看下这个表格的内容:
print (hs300_pe_df)
其中日期部分是这个DataFrame的索引(index),这个DataFrame有5列(columns),分别为:成分股静态市盈率的均值、成分股TTM市盈率的均值、成分股静态市盈率的中位数、成分股TTM市盈率的中位数、收盘价。
第二行代码用于计算成分股TTM市盈率的中位数和收盘价的历史百分位,用到表格hs300_pe_df的其中两列(‘middlePETTM’ 和 ‘close’),用rank()函数来计算百分位,计算结果也是个DataFrame表格,存放在变量hs300_pe_pct中,我们可以查看下内容:
print (hs300_pe_pct)
上面表格的索引(index)为日期,表格有两列:PE的历史百分位和收盘价的历史百分位。
第三行代码是将表格hs300_pe_pct用折线图显示出来:
蓝线是PE百分位,橘线是价格百分位,可以看到两者的相关性比较高,毕竟PE的分子就是价格。但两者也有背离的时候,目前PE估值百分位在40%左右,价格百分位在90%左右,说明盈利的增长高于价格的增长。需要注意的是盈利是一个季度披露一次,有滞后性。
同样的方法可以画出中证500的PE的历史百分位和收盘价的历史百分位:
zz500_pe_df = ak.stock_a_pe(market="000905.XSHG").iloc[-1708:] # 获取中证500的PE和收盘价数据
zz500_pe_pct = zz500_pe_df[['middlePETTM','close']].rank(ascending=True, pct=True)*100 # 计算PE和收盘价的历史百分位
zz500_pe_pct.plot(figsize=(16,8),grid=True,title='中证500估值和价格百分位') # 画图
中证1000的PE的历史百分位和收盘价的历史百分位:
zz1000_pe_df = ak.stock_a_pe(market="000852.XSHG").iloc[-1708:] # 获取中证1000的PE和收盘价数据
zz1000_pe_pct = zz1000_pe_df[['middlePETTM','close']].rank(ascending=True, pct=True)*100 # 计算PE和收盘价的历史百分位
zz1000_pe_pct.plot(figsize=(16,8),grid=True,title='中证1000估值和价格百分位') # 画图
可以看到自2021年以来,沪深300、中证500、中证1000的估值百分位和价格百分位都出现了背离,其中以中证500最为显著,价格不断抬高,但估值水平不断下降,呈现出明显的喇叭状。
我们用柱状图来对比一下:
comparison_df = pd.DataFrame()
comparison_df['hs300'] = hs300_pe_pct.iloc[-1] # 沪深300最近一日的估值百分位和价格百分位
comparison_df['zz500'] = zz500_pe_pct.iloc[-1] # 中证500最近一日的估值百分位和价格百分位
comparison_df['zz1000'] = zz1000_pe_pct.iloc[-1] # 中证1000最近一日的估值百分位和价格百分位
comparison_df.T.plot.bar(figsize=(10,5)) # 画图
comparison_df是一个DataFrame表格,用来存储三个指数最近一日的估值百分位和价格百分位,用print查看内容:
print (comparison_df)
comparison_df.T.plot.bar()是将表格comparison_df用柱状图画出来:
上图可以直观的对比估值百分位的位置和价格百分位的位置。
本篇介绍了三个宽基指数估值百分位的实现,下一篇继续介绍行业指数、主题指数、风格指数的估值百分位。想知道医药跌了快半年了,估值够便宜了吗?下篇给你答案。
本文涉及的数据接口的说明文档:
https://www.akshare.xyz/data/stock/stock.html?highlight=stock_a_pe#a-4
量化投资系列的文章目录:
1. 量化入门系列:用Anaconda和AKShare搭建免费的Python量化环境
2. 量化入门系列:四行代码实现A股的估值温度计
量化入门系列:沪深300、中证500、中证1000的估值百分位相关推荐
- A股常见的宽基指数:沪深300,中证500,和创业板指数
沪深300指数:是国内最具代表性的指数 指数简介: 沪深300指数是由中证指数公司开发的,从上海证券交易所和深圳证券交易所挑选的规模最大,流动性最好的 300 只股票组成 其实指数的命名规则还是挺有意 ...
- python分析数据走势图_左大营 | python数据分析篇系列1——探索沪深300指数(附代码)(中)...
探索沪深300指数(HS300)--基于Python(中) [承接上文] 写在前面:本文只做分析,提供观点,不构成投资建议 如需转载请微信联系:eosO_oke 佛系更新,关注不迷路 沪深300指数是 ...
- 多图解读三大股票指数 沪深300、中证500、中证1000有何细节差异
指数分类的标准有很多,比如说按市场分.按投资标的分.按指数代表性分.从代表性来分类的话,一般可以分为有三类:综合指数.宽基指数.窄基指数. 综合指数是指成分股包含所有上市的股票,以反映全市场的状况,最 ...
- 使用tushare检验沪深300收益率和中证500收益率相关性
使用tushare检验沪深300收益率和中证50收益率相关性 tushare 安装tushare 初始化tushare 获取沪深300和中证500数据 检验相关性 合并数据 计算相关系数 画图 tus ...
- tushare获得沪深300和中证500的股票
tushare获得沪深300和中证500的股票 import tushare as tsresult = ts.get_zz500s() result.to_csv("zz500.csv&q ...
- python获取股指_用Python读取csv文件中的沪深300指数历史交易数据
保存路径:D:\python\用Python读取csv文件中的沪深300指数历史交易数据 程序名称:readcsvhs300.py: 数据名称:沪深300指数历史交易数据.csv: 开发环境:Win7 ...
- Python爬虫入门:爬虫抓取沪深300指数列表
使用Python3爬取沪深300指数列表 1. 思路分析 用chrome打开维基百科沪深300的页面,网址为:https://en.wikipedia.org/wiki/CSI_300_Index . ...
- Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析
米筐科技(RiceQuant)策略研究报告:Barra 结构化风险模型实现(1)--沪深300指数的风格因子暴露度分析 江嘉键 1 年前1 概述 Barra 结构化风险模型是全球知名的投资组合表现和风 ...
- fxmarket:9月25日黄金、沪深300、恒指策略分析
一.市场综述 国内股指昨天冲高回落震荡整理,创业板走势类似,截止收盘,上证综指涨0.28%,上证50期指收涨0.22%,中证500期指下跌0.24%,沪深300期指微跌0.01%:北上资金方面,沪股通 ...
最新文章
- unity编辑器扩展_01(在工具栏中创建一个按钮)
- java-IO-基本输出输入流
- python 解析 配置文件
- mysql中间件研究(Atlas,cobar,TDDL)
- 一行代码不用写,就可以训练、测试、使用模型,这个 star 量 1.5k 的项目帮你做到...
- java 执行机制_Java类的执行机制
- python实现词云图
- 我如何获得了梦想中的亚马逊工作机会?
- jsp面试问题_JSP面试问答
- View的滚动原理简单解析(二)
- sonar报java.io.StreamCorruptedException: invalid internal transport message format, got (48,54,54,50)
- chrome浏览器历史版本
- Windows字体修改工具:一键更换系统字体 noMeiryoUI 2.41.0 中文绿色版
- cmd命令查询电脑序列号_查看电脑序列号_查看电脑序列号命令
- URLConnection 传入参数
- 【C/C++服务器开发】什么是服务器?服务器分类及构建一个简单的服务器系统
- 分享前端网站模板,HTML5的响应式设计模板
- GPRS模块(sim900a)联网(PC)测试失败篇
- 5G标准化进程提速 射频器件市场空间将打开
- STM32 - 通迅的基本概念