您的位置:首页 > 其它

R:基于每股权益的量化分析 —— PEG估值法

2016-12-01 00:00 127 查看

PEG指标概念

PEG指标即市盈率相对盈利增长比率(EPS增长率),是由上市公司的市盈率除以盈利增长速度得到的数值。该指标既可以通过市盈率考察公司目前的财务状况,又通过盈利增长速度考察未来一段时期内公司的增长预期,因此是一个比较完美的选股参考指标。

PEG指标的计算方法

PEG的中文名称为市盈率相对盈利增长比率,该指标的计算公式为:

PEG=市盈率÷盈利增长比率

PEG指标的应用

用PEG指标选股的好处就是将市盈率和公司业绩成长性对比起来看,其中的关键是要对公司的业绩作出准确的预期。

所谓PEG,是用公司的市盈率(PE)除以公司未来3或5年的每股收益复合增长率。比如一只股票当前的市盈率为20倍,其未来5年的预期每股收益复合增长率为20%,那么这只股票的PEG就是1。

当PEG等于1时,表明市场赋予这只股票的估值可以充分反映其未来业绩的成长性。

当PEG大于1时,则这只股票的价值就可能被高估,或市场认为这家公司的业绩成长性会高于市场的预期。通常,那些成长型股票的PEG都会高于1,甚至在2以上,投资者愿意给予其高估值,表明这家公司未来很有可能会保持业绩的快速增长,这样的股票就容易有超出想象的市盈率估值。

当PEG小于1时,要么是市场低估了这只股票的价值,要么是市场认为其业绩成长性可能比预期的要差。通常价值型股票的PEG都会低于1,以反映低业绩增长的预期。

投资者需要注意的是,像其他财务指标一样,PEG也不能单独使用,必须要和其他指标结合起来,这里最关键的还是对公司业绩的预期。

PEG适用条件

PEG侧重于公司的成长性,即适用于寻找高增长公司中被低估的股票。应该配合市净率、公司市值、净资产收益率等指标使用。把PEG估值法和市净率结合起来就基本可以确定一只股票是高估还是低估。一只股票看起来PEG小于或等于1,但如果市净率高达10倍以上,仍然极有可能被高估了。如果一只股票市盈率和市净率都很低,并且PEG小于1,那么基本上可以确定是低估了。投资者不能仅看公司自身的PEG来确认它是高估还是低估,如果某公司股票的PEG为12,而其他成长性类似的同行业公司股票的PEG都在15以上,则该公司的PEG虽然已经高于1,但价值仍可能被低估。

PEG计算

> library(openxlsx)

> options(digits=3)     #设置当前环境的小数点位数

> stockEPS<-read.xlsx("C:/Users/steph/Desktop/stock/stockEPS.xlsx",colNames=T)    #导入股票前三季度的每股权益数据

> Q3EPS<-as.numeric(stockEPS$Q3EPS)

> Q2EPS<-as.numeric(stockEPS$Q2EPS)

> Q1EPS<-as.numeric(stockEPS$Q1EPS)

> EPS<-data.frame(code=stockEPS$code,Q3EPS,Q2EPS,Q1EPS)

> stockInfo<-read.xlsx("C:/Users/steph/Desktop/stock/stockInfo.xlsx",colNames=T)    #导入股票代码、名称、现价信息

> price<-as.numeric(stockInfo$price)

> Info<-data.frame(code=stockInfo$code,name=stockInfo$name,price)

> stockdata<-merge(Info,EPS,by.Info=code,by.EPS=code)    #合并数据框

> newdata<-subset(stockdata,price>0&stockdata$Q3EPS>0&stockdata$Q1EPS>0)    #筛选现价和每股权益大于0的记录

> PE<-newdata$price/(newdata$Q3EPS/3*4)    #将每股权益年化和计算股票的市盈率

> seasonrate<-(newdata$Q3EPS/newdata$Q1EPS)^(1/2)-1    #计算季度的EPS增长率

> EPSrate<-(1+seasonrate)^4-1    #季度的EPS增长率进行年化计算

> PEG<-PE/EPSrate    #计算PEG

> res<-ifelse( PEG>0& PEG<1,T,F)

> mydata<-data.frame(code=newdata$code,name=newdata$name,PE,EPSrate,PEG,res)

> finaldata<-subset(mydata,res==T)    #筛选符合条件的股票

> length(finaldata[,1])    #计算符合条件股票的个数

(End)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息