社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

公司估值越低越好吗?买市盈率低的股票究竟是赚是赔?python量化给你答案【附代码】| 邢不行

邢不行 • 2 年前 • 193 次点击  

这是邢不行第 86 期量化小讲堂的分享

作者 | 邢不行




只要你接触过股票市场一段时间,肯定会在行情软件最显眼的地方看过市盈率这个指标。



各种财经大V、各类财经新闻也时有提及。


很多投资大师更是偏爱用市盈率来选股。比如西格尔在《投资者的未来》中推崇的低市盈率策略,施洛斯提倡的捡烟蒂式投资(低估值策略)等等。


市盈率这个指标为何能够备受各路大师的推崇? 


下面我们就会给大家详细讲解什么是市盈率,并用07年至今的全部相关A股数据来验证,买低估值股,最终到底是赚是赔。



01

市盈率简介


1

市盈率指标

首先我们来简单介绍一下什么是市盈率。


市盈率简称PE,是最常用的对股票进行估值的指标。


这个指标便于计算,用股票总市值除以最近四个季度的净利润即可。



比如在2021年12月1日,茅台市值2.43万亿, 它最近四个季度(20年Q4—21年Q3)的净利润总和是504亿。


市值除以净利润,就能得到茅台的市盈率是48倍。



了解了什么是市盈率,我们再来看为何大师们会偏好低市盈率的股票。


2

低市盈率理论

上学的时候,老师也说公司的市盈率越低越好。因为理论上讲,公司的市盈率越低,你买下它花的钱相对越少。也就是它的估值越便宜,未来股价上涨的概率越大。



市盈率高的公司则相反。比如某公司市盈率是100,净利润是1亿,我们就需要用100亿才能买下它。


如果这家公司之后每年净利润仍是1亿,那么我们要100年才能回本,这个投资回报率显然很低。



当然以上仅仅是从理论出发,是那些可能从未投资实战过的大学老师教我们的,实际又会如何呢?


买入低市盈率的公司,真的大概率会上涨吗?


下面我们让一切用数据说话



02

数据获取


1

数据获取

我们首先需要获取每个股票每天的市盈率数据,你可以去新浪财经、东方财富这类网站上抓取,上面的数据较为全面。


但数据纰漏较大,还需要你有一定的爬虫技术。



为此,我提前给大家准备好了所需的数据,它里面包含了每个股票每天的总市值和净利润,两列相除就可以得到相应的市盈率。



如果你需要这个数据的话,可以加我微信xbx719,都是可以免费发给你的。


2

数据处理


需要注意的是,市盈率计算公式在实际应用中会遇到一些问题,特别是当净利润为0时,公式无法成立。


为此,我们使用它的倒数来规避,即1/市盈率,又叫EP



数据到手后,我们先不买低市盈率的股票,而去买入老师口中需要远离的,也就是高估值、高市盈率、未来低回报的股票。


我们来看看买入之后效果如何?



03

高估值策略


1

策略构建



我们构建如下量化策略:


在每个月的最后一个交易日,我们计算所有股票的EP,选择EP最小(即市盈率最大)的10只股票,在次月的第一个交易日开盘时均仓买入


之后无论涨跌如何都持有不动,等到这个月的最后一个交易日收盘时再把股票卖光。


之后继续选择此时EP最小的股票并买入,如此循环往复。



比如在2009年的12月29日,我选出了当天EP最小的10只股票。


那我就在2010年1月的第一个交易日去均仓买入它们,并一直持有到1月31日再卖光。


此时再选出最新的10只股票去买入,每月重复上述操作即可。



2

策略结果


这个策略的收益我并不推荐手工计算。


我们用Python编程及相应的股票数据来得到结果。


如果你对数据和代码感兴趣的话,可以加我微信xbx719,都是可以免费发给你的。



代码运行结果如图所示:


黄色曲线是代表大盘的沪深300指数,它从2010年至今基本没涨,你可以永远相信A股。


蓝色曲线是我们策略的结果,甚至连沪深300指数都没有跑赢,属实拉垮。



如果仔细观察这张图,我们甚至还可以得到几个有趣的结论:




04

低估值策略


既然高市盈率的股票不能买,那我们买入那些低市盈率的股票会如何?


1

策略构建

我们仍旧执行之前的策略,只不过这次选择EP最大(即市盈率最低)的10只股票,其他条件完全不变。



2

策略结果


我们还是用Python编程及相应的数据来计算。


如果你对数据和代码感兴趣的话,可以加我微信xbx719,都是可以免费发给你的。



代码运行之后,最终结果如图所示:



图中蓝色曲线是我们的策略净值,黄色曲线是沪深300指数。


低市盈率策略的收益确实比沪深300指数好了一点,但并不显著,年化收益只有6.66%,且最大回撤高达57%。


当然,我估计这已经跑赢在座的大多数了,毕竟大部分人炒股都是亏损的。


但这样的策略在量化投资中是不合格的,尤其是最近几年它的表现十分差劲。



那为什么买低市盈率股票的实践结果和理论有那么大的偏差呢?



05

行业中性策略


1

行业影响

我们看这个策略每个月选出来的10只股票,发现它们都偏向于银行、地产、基建等行业。


这类行业的市盈率都比较低,所以这些行业的股票就很容易被我们选中。因此我们的策略选择是偏颇的。



比如银行业的平均市盈率是8,工行的市盈率低于行业平均,只有7。


假设互联网行业的平均市盈率是20,其中某只股票的市盈率是10。


这只股票和工行的市盈率哪个更低呢?



绝对值看,工行的市盈率确实更低。


但从相对值来说,这家互联网公司它的市盈率是更低的。


因此我们尝试对之前的策略进行调整。


2

行业中性化

我们把所有股票根据申万一级行业进行分类。


在每个行业中选择EP最大(即市盈率最低)的3只股票。如果有10个行业就会选出30只股票。


其他条件完全不变。


这一步操作在我们专业术语中就是所谓的行业中性化,用来去除行业对市盈率指标的影响。



当然在实际操作当中会用到更专业的数学方法,这里就不多加赘述了。


3

策略结果

我们仍使用Python编程以及相应的数据来得到结果。


如果你对这个数据和代码感兴趣的话,可以加我的微信xbx719,都是可以免费发给你的。



代码运行后,最终结果仍是令人失望:



与之前的结果相比有所改善,最大回撤有所减少,但年化收益基本一致。



06

市盈率应用


研究到这里,基本可以宣告通过低市盈率选股的策略长期来看是失败的。这其实也基本上算是业内公认的知识。


但这并不能说明市盈率指标没有用。它单独用的时候是无效的,但和其他财务指标结合起来使用时往往会有奇效


因为我们可以任意组合众多财务指标,此时市盈率指标就会对整个模型起到巨大的辅助作用。



我建议一些刚入市场的同学,甚至那些在股市混了很久的同学,尽量少花时间在技术指标上,反而可以花更多的时间在财务数据上


因为相比于技术指标,你通过研究财务数据得到好策略的性价比更高



如果大家对其他财务指标感兴趣的话可以多多点赞,之后我们就会多讲一些基于财务指标的选股策略。



归根到底一句话,我们用数据说话。



07

后记


文章的最后,和大家分享一点量化投资的心得


很多人问我小白如何开始学习量化投资,有什么可以书单推荐


我的建议是千万不要直接找本书来看。


你找本编程书看,那跟着敲完“Hello World”就结束了;你找本数学书看,那看到第七页的公式就睡着了。



更好的学习方式是做实际的项目,在实践中学习量化策略。


研报就是很好的量化实践项目。


一篇研报就是一个策略,作者都是年薪百万的高学历券商分析师,你要做的就是读懂策略研报,并用代码实现。



在此期间什么不会学什么,哪里不会点哪里,抱着解决问题的心态去学习,事半功倍。


熟读唐诗三百首,不会作诗也会吟。



那么哪里可以获取研报呢?


你可以加我的微信xbx719 ,我这里有分门别类几万份研报,还会实时更新


我会区分难度,精选之后发给你。



加我微信xbx719后,也可以交流量化投资相关问题,我比较忙,回复的比较慢,但是看到的都会回复。


聊的开心,聊得有缘,很多量化的数据、资料都是可以送给你的。


也可以翻翻我朋友圈的内容,很多量化干货。一些不会公开发的内容,都会在朋友圈说。



联系作者


往期文章推荐


收藏 | 最最最最简单、最最最最详细的Python和Pandas安装教程

常见量化投资误区合集,量化交易新手脱坑指南 | 邢不行

基金反买,别墅靠海?每年买倒数前十的基金能赚这么多?Python量化分析告诉你答案 附代码【邢不行】

A股永远3000点?量化指数增强策略,轻松多涨10倍!附代码【邢不行】

用Python量化定义MACD,找出A股全部12万次顶底背离,胜率究竟有多少?附代码【邢不行】

邢不行 | 妙用北向资金找出大盘买点、卖点,跟着操作6年4倍【附代码】

期权骚操作:逃顶比特币,还能额外赚【比特币逃顶系列1】

邢不行 | Python量化 + 数字货币 + 轮动 = 4年1000倍【附代码】

BTC涨这么多,还能买吗?要卖吗?| 量化定投策略告诉你答案【附代码】


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132376
 
193 次点击