**Systematic Investor » R**, and kindly contributed to R-bloggers)

The Barron’s article Still Too Pricey by Andrew Bary looks at the share price of the Facebook and based on the P/E ration valuation metrics concludes that even at the current prices, stock is overvalued. I want to show how to do this type of fundamental analysis using the Systematic Investor Toolbox.

First let’s load historical prices and earnings per share (EPS) for Facebook and a few stocks in the technology sector: LinkedIn, Groupon, Apple, and Google.

############################################################################### # Load Systematic Investor Toolbox (SIT) # http://systematicinvestor.wordpress.com/systematic-investor-toolbox/ ############################################################################### setInternet2(TRUE) con = gzcon(url('http://www.systematicportfolio.com/sit.gz', 'rb')) source(con) close(con) #***************************************************************** # Load historical fundamental and pricing data #****************************************************************** tickers = spl('FB,LNKD,GRPN,AAPL,GOOG') tickers.temp = spl('NASDAQ:FB,NYSE:LNKD,NASDAQ:GRPN,NASDAQ:AAPL,NASDAQ:GOOG') # get fundamental data data.fund <- new.env() for(i in 1:len(tickers)) { cat(tickers[i],'\n') data.fund[[tickers[i]]] = fund.data(tickers.temp[i], 80) } # get pricing data data <- new.env() getSymbols(tickers, src = 'yahoo', from = '1970-01-01', env = data, auto.assign = T) for(i in ls(data)) data[[i]] = adjustOHLC(data[[i]], use.Adjusted=T)

Next, let’s combine fundamental and pricing data and create P/E ratio for all stocks.

#***************************************************************** # Combine fundamental and pricing data #****************************************************************** for(i in tickers) { fund = data.fund[[i]] fund.date = date.fund.data(fund) # Earnings per Share EPS = 4 * get.fund.data('Diluted EPS from Total Operations', fund, fund.date) if(nrow(EPS) > 3) EPS = rbind(EPS[1:3], get.fund.data('Diluted EPS from Total Operations', fund, fund.date, is.12m.rolling=T)[-c(1:3)]) # merge data[[i]] = merge(data[[i]], EPS) } bt.prep(data, align='keep.all', dates='1995::') #***************************************************************** # Create PE #****************************************************************** prices = data$prices prices = bt.apply.matrix(prices, function(x) ifna.prev(x)) EPS = bt.apply(data, function(x) ifna.prev(x[, 'EPS'])) PE = ifna(prices / EPS, NA) PE[ abs(EPS) < 0.001 ] = NA

Please note that for very small EPS, the P/E ratio will be very big; therefore, I set P/E to NA in such cases.

The hard part is done, not let’ plot P/E ratios for all companies.

#***************************************************************** # Create Report #****************************************************************** plota.matplot(PE) plota.matplot(PE, type='b',pch=20, dates='2012::') plota.matplot(EPS) plota.matplot(prices)

P/E ratios for all companies in 2012:

Earnings per share (EPS) for all companies:

From these charts I would say it is too early to decide if Facebook is overvalued based on historical P/E ratio basis only, because we only have 3 financial statements, not enough to make an informed conclusion. You might use project one year (FY1) and two year (FY2) earnings estimates to make a better decision.

What is interesting in these charts is how LinkedIn is managing to sustain its astronomical P/E ratio?

I have previously shown examples of how to get and use fundamental data. Here are links for your reference:

To view the complete source code for this example, please have a look at the fundamental.fb.test() function in fundamental.test.r at github.

**leave a comment**for the author, please follow the link and comment on their blog:

**Systematic Investor » R**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...