欢迎关注我的公众号【小散逆袭大本营】

学到目前这个程度,我们已经可以画出个股的PE和PB曲线图了。但是我们知道,对于个股来说,PE或者PB的参考价值很有限,不同类型企业,其PE的市场认可程度是不同。我们几乎不可能通过仅仅判断个股的PE和PB来做出一个像样的量化交易策略。

不过对于指数而言,特别是宽基指数(沪深300之类的),其历史PE和PB值的参考价值就非常大了。我在《小散逆袭手把手教你做量化定投》这本书中已经做了示范,指数的PB可以说是一把不错的衡量该指数估值高低的尺子。

那么我们下面就在聚宽中,用python来做出一个指数的PE走势图吧。

小目标三:

计算出上证50指数过去10年每天的PE数值,并画出走势图。

拿到问题后,首先需要思考解决问题的思路。有一点可以明确,聚宽中并没有提供指数的PE数据获取函数,我们只能自己计算。那么先从简单的情况入手,怎么计算出一天的上证50指数PE数值呢?

我们先得知道,指数的PE数值是怎么计算的。严格来说,应该参照中证网的计算规则进行计算,但是分类靠档的计算很复杂,所以目前比较通用的近似计算公式就是PE = 成份股市值之和÷成份股净利润之和。比如我要计算9月10日上证50的PE,就得知道当天上证50指数的成份股有哪些,然后计算出这些成份股的总市值之和,再算出成份股的净利润之和,二者一除就是当天的指数PE了。

获取某个指数成份股,聚宽已经提供了函数,如下

这个函数的使用很简单,大家自己练习一下就清楚了。

成份股有了,下面就需要得到每个成份股的总市值和净利润了。这里有个问题需要说明一下。市盈率有两种,一种叫静态市盈率,一种叫滚动市盈率。静态市盈率=当前股价÷上一财年的每股收益。滚动市盈率=当前股价÷过去四个季度每股收益。显然,滚动收益率更能有效的反应股票当前的PE水平。所以,一般情况下,我们都默认市盈率为滚动市盈率(PE(TTM))。

在聚宽的财务函数中没有直接能获取过去四个季度净利润的函数,但是可以获取个股的PE(TTM)和总市值,那么通过这两个数据可以计算出过去四个季度的净利润。

这样,计算指数某天的PE数值具体实现如下

为了后面计算方便,我把这个功能定义为一个函数,指数代码和日期都是参数。(这里我要感谢一位群友(ID:I20181129),他给了我一段代码,我稍加修改就成了上面这个代码。他的这个代码比我之前自己弄的效率高出很多很多,大大缩减了计算时间。)我试验了一下上证50指数9月10日的PE数值,计算出的结果和雪球网公布的是一样的。

好了,今天就写到这里。

pe估值 python_Python编程学习笔记(7)相关推荐

  1. pe估值 python_Python编程学习笔记(8)

    书接上回,上节我们定义了一个获取某个指数某日的PE数值的函数.下面要做的就是得到这个函数的时间序列,然后计算出这个时间序列中每天的PE数值,最后就可以用图形进行展示了. 这个方法和前文中的方法一样,我 ...

  2. 多线程编程学习笔记——async和await(三)

    接上文 多线程编程学习笔记--async和await(一) 接上文 多线程编程学习笔记--async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多 ...

  3. 多线程编程学习笔记——任务并行库(二)

    接上文 多线程编程学习笔记--任务并行库(一) 三.   组合任务 本示例是学习如何设置相互依赖的任务.我们学习如何创建一个任务的子任务,这个子任务必须在父任务执行结束之后,再执行. 1,示例代码如下 ...

  4. 多线程编程学习笔记——任务并行库(三)

    接上文 多线程编程学习笔记--任务并行库(一) 接上文 多线程编程学习笔记--任务并行库(二) 六.   实现取消选项 本示例学习如何实现基于Task的异步操作进行取消流程,以及在任务真正运行前如何知 ...

  5. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  6. Cocoa编程学习笔记一

    Cocoa编程学习笔记一 一.Cocoa的起源 Mac OS X的窗口服务器与UNIX中的X窗口服务器具有相同的功能:从用户那里接受事件,并将时间转发给应用程序,将应用程序发过来的数据显示在屏幕上.N ...

  7. 多线程编程学习笔记——使用并发集合(三)

    接上文 多线程编程学习笔记--使用并发集合(一) 接上文 多线程编程学习笔记--使用并发集合(二) 四.   使用ConcurrentBag创建一个可扩展的爬虫 本示例在多个独立的即可生产任务又可消费 ...

  8. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  9. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

最新文章

  1. 传统多视图立体算法:PatchMatchStereo详解
  2. mac mysql 5.7.9安装教程_mac系统OS X10.10版本安装最新5.7.9mysql的方法_MySQL
  3. [Gamma阶段]展示博客
  4. 微服务技术栈:常见注册中心组件,对比分析
  5. lua本学习笔记功能
  6. 中南大学计算机网络期末试卷,中南大学计算机网络期末复习试卷1
  7. ADS2022学习笔记(二)
  8. c语言求余运算作用,C语言中的整数除法和求余运算
  9. Laravel文档梳理3、CSRF保护
  10. 模糊提取器(Fuzzy Extractor)
  11. 这年头Windows电脑还需要杀毒软件吗?
  12. 1005打印任务取消不了 hp_Windows10+HP M176N奇怪的发送打印命令不执行任务就消失的问题...
  13. SWUSTOJ82编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。
  14. 维和步兵营~傻逼的戈瑞-冷酷的林皓南~装逼的海蓝
  15. 服务器到底是个什么东东?跟电脑有啥区别?
  16. excel添加自定义名称
  17. 异或、异或和 的性质及应用总结
  18. Python自动化测试学习3
  19. 求大神帮忙看一下这张水卡校验码是什么分析一下算法谢谢!!!!
  20. VUE+element-ui微信充值支付

热门文章

  1. 计算机网络作业6,计算机网络作业 6
  2. mysql的contains_mysql中json_contains、json_extract等json查询方法的使用
  3. vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器
  4. c语言error ld returned,[Error] ld returned 1的错误
  5. Win11没有操作中心怎么办 Win11没有操作中心的解决方法
  6. IE浏览器怎么清理缓存
  7. vue数组修改不触发视图更新、vue向响应式对象添加或删除属性
  8. ps去水印教程_ps去水印教程,详细解析五种去水印的方法
  9. 判断String为空 StringUtils工具 isNotEmpty与isNotBlank区别
  10. redis的四大特性和原理