Thursday, October 11, 2012

Preparing for Workday (WDAY)’s IPO: Workday vs. Salesforce.com

My esteemed colleague Ryan Leask (LinkedIn Profile) and I have co-authored this three-part blog offering our insights on Workday's IPO.  

This is part 1 in our blog on Workday’s IPO.  Part 2 looks at how Workday compares to SFSF, TLEO, NOW and CRM.  And the third and final part provides an overall summary.

Workday (Ticker: WDAY), a cloud based provider of HCM and other enterprise software, is going to IPO tomorrow.  As in typical Silicon Valley fashion, not that many people are discussing it because it’s not a consumer software company.  But for us in the enterprise software world, this is absolutely one to watch!

We’ve known Workday has been on a tear for a while, so as we looked through their S-1, their growth didn’t come as a big surprise to us.  That’s not to belittle their accomplishments. It was an amazing feat by all accounts, and they achieved it all right through the heart of the Great Recession. Spectacular performance!  However, the thing that caught us a little off-guard was their expenses. We wanted to take a deeper look at their numbers, and compare it to other cloud enterprise companies to see how their figures stacked up.

Of course, our analysis began with comparing Workday to Salesforce.com (Ticker: CRM).  If you invested in CRM on opening day and held it all the way till date, you would be sitting pretty on a 900% ROI over ~9 years.  Not too shabby.  So how does Workday compare?

The figure below highlights a few key metrics. The WDAY figures are for their year ending Jan 31, 2012 from their S-1.  The CRM column represents the data in Salesforce.com’s S-1 document, however, since CRM was only ~5 years old when it IPO’d in 2004, and WDAY is already 7 years old, we added an extra set of figures for CRM at their 7 year mark too (CRM@7), and use this as the comparison point for this blog.
You can see by all accounts, WDAY is significantly trailing CRM@7 years.  WDAY’s revenues are 43% of CRM@7’s revenues (134m vs. 310m), yet Workday’s costs are 73% of CRM@7’s (213m vs. 290m).  That’s a big discrepancy.  Where are these costs coming from?

Well, Workday had 1096 employees to CRM@7’s 1304 (i.e. Workday had 84% of CRM@7’s number of employees to produce 43% of their revenue, yet still incur 73% of their costs).  That means WDAY saw $122k rev per employee vs. CRM@7’s $238k rev per employee, so nearly a 2x favor to CRM@7.

So it’s clear, WDAY is operating with a different model to CRM.  This led us to take two follow-up steps:
  1. Compare WDAY to some other companies, to see if we could find any other similarities. This will be the second part of our blog.
  2. Analyze “why” WDAY’s figures are so different to CRM’s. Yes, there is the HCM vs. CRM difference, but prior to going through the S-1, we would not have expected to see big differences between the companies. 
The rest of this blog post will address our theory on the second question of “why” the two company’s figures are so different.  So here we offer our some of our thoughts on this:
  1.  WDAY is Selling to Large Enterprises
    • Workday has only 326 customers after 7 years.  CRM@7 by contrast had over 20,000 customers around the same time.  So yes CRM@7 had 2.3x WDAY’s revenue, but they also had 63x the customers.
    • WDAY’s Rev/Customers amounted to $412k.  CRM@7’s Rev/Customers was $15k.  Clearly, WDAY is selling much more to larger companies than CRM did.
    • WDAY does a lot more services business as well, but even if you exclude it (34% of rev), it would still give you a figure of $272k/customer… so way higher license rev per customer than CRM.
    • WDAY over the years had made news of big account wins (Flextronics & Chiquita come to mind), so we knew they were successful in LE’s. However, we assumed they were also getting a lot more traction in the SME space too, which appears not to be the case.
    • As per WDAY’s S-1, the figure of 326 customers does exclude SME’s which were bought in from a reseller. But given we didn’t see any explanation of the figures in any more detail, we would assume that the number of SME’s & the revenue they bring in is not material.
    • Selling basically exclusively to large companies also explains why WDAY’s services figures are so high, at 34% of revs.  This is higher than we would have expected/liked to have seen from a SaaS company.
    • WDAY mentions customization as a risk: Workday’s customers often want customization (but they don’t support adding custom fields or functions), and big companies always want customization (in our experience).  However, one point that doesn’t add up about this: what are all the services for if Workday doesn’t allow customization?  It would be very interesting to know what the average implementation project time is for Workday customers – we’re guessing it might be a lot higher than other SaaS products.
    • Another consequence of selling to the big guys is that you will definitely end up with longer sales cycles.  Yes, Sales & Marketing costs are still 52% of Rev’s, but this is in line with other SaaS companies.  Given that they kept this in-line despite the longer sales cycles, this makes the S&M figure seem more impressive.
  2. Investing For the Future
    • Workday did state in their S-1 that they are trying to expand out from HCM now into Finance. This is definitely going to require a serious commitment in R&D.  Clearly its early stages for them, with only 10% of their customer base (roughly 30 customers) having adopted their finance component so far.
    • The R&D costs for WDAY were $62m vs. $23m for CRM at their 7 year mark. That means CRM produced 2.3x WDAY’s Rev, while spending only about 0.37x of the R&D cost.
    • However, we aren’t convinced that just one module (Finance) would be sufficient to account for this R&D.  Our best guess is that there is something else in the works too, and Workday is trying to get to a full ERM/ERP suite sooner rather than later.  We could be wrong of course, and maybe it’s the extra effort of trying to support analytics, mobility, etc that CRM didn’t have to deal with when it was  seven years old… but still, R&D is an extremely high number.  We are going to anticipate a positive surprise in the near future because of the higher R&D expenses.
    • A secondary aspect that we suspect might account for the extra costs is Workday’s focus on international expansion.  Both HCM & Finance are going to require a lot more regional changes than say the CRM (i.e. different country laws, etc) module.  Workday already supports 21 languages vs. we counted that the CRM only supports 16 languages today, so they are clearly taking international markets seriously.
We won’t draw any more conclusions in this blog.  Instead we will put WDAY against other similar SaaS companies, and then summarize our overall perspective in the third and final blog post.

Disclaimer: All numbers are approximate.  We are not offering any investment advice and all the analysis we have performed to support our blogs is preliminary.

Wednesday, October 10, 2012

Besides Facebook's Botched IPO, IPO Market Returns 20% in 2012

Facebook (Ticker: FB) is down ~47% since its IPO in May.  Now, it is not the most botched IPO ever unfortunately as the infamous record belongs to BATS Exchange (Ticker: BATS) which operates an alternate stock exchange to NYSE and NASDAQ.  (Read the Business Insider story here: 8 Unforgettable IPO Disasters)

Also, FB is not the worst performing IPO either.  Groupon (Ticker: GRPN) and Zynga (Ticker: ZNGA, proudly led by Mark Pincus), are down 77% and 74% respectively since their IPO.  In comparison, FB has done ok, it could be worst but a rapid strategy shift by FB including the emphasis on mobile and a decision to allow e-commerce transactions (Facebook Gifts) on Facebook have provided some kind of a floor under its stock.  Here is a chart comparing the three (not-so) darlings of the Web 2.0.



Anyhow, below is a table of the best IPOs for this year.  Guidewire (Ticker: GWRE) and Demandware (Ticker: DWRE) are the two cloud technology companies in the list that have done very well returning 137% and 108% till date.


IPO Top Performers (YTD)
Company
Offer
Date
UnderIndustryDeal
Size (mm)
Offer
Price
First Day
Close
Closing
Price
First Day
Return
Total
Return
Supernus Pharmac
4/30/12CitiHealth Care$50$5.00$5.37$12.777.4 %155.4 %
Nationstar Mortg
3/7/12MerrillFinancial$233$14.00$14.20$33.291.4 %137.8 %
Guidewire Softwa1/24/12JPMTechnology$115$13.00$17.12$30.8431.7 %137.2 %
Annies3/27/12CSConsumer$95$19.00$35.92$44.8789.1 %136.2 %
Demandware
3/14/12GSTechnology$88$16.00$23.59$33.3147.4 %108.2 %


Palo Alto Network (Ticker: PANW) is up 16% since IPO with returns of 48% over its IPO price of $42.  Splunk (Ticker: SPLK) is down about 10% since IPO but still giving returns of 90% over its IPO price of $17.  Both these companies didn't make the cut in the table above.

Here is a list of the worst performing IPOs till date.  If one were to change the time period from YTD to 12-months, Zynga shows up in the list, no surprise there.  Social gaming is a fast changing environment and ZNGA faces crisis in confidence with so many departures.


IPO Worst Performers (YTD)
Company
Offer
Date
UnderIndustryDeal
Size (mm)
Offer
Price
First Day
Close
Closing
Price
First Day
Return
Total
Return
Envivio
4/24/12GSTechnology$70$9.00$8.49$2.15-5.7 %-76.1 %
Audience
5/9/12JPMTechnology$90$17.00$19.10$5.6512.4 %-66.8 %
CafePress
3/28/12JPMTechnology$86$19.00$19.03$8.070.2 %-57.5 %
Ceres
2/21/12GSMaterials$65$13.00$14.80$5.7713.8 %-55.6 %
Renewable
1/18/12UBSEnergy$72$10.00$10.10$5.161.0 %-48.4 %


Take a closer look, FB is barely staying away from this infamous list.  On a similar note, LinkedIn (Ticker: LNKD) is up approximately 80% till date.  What a contrasting tale of the two social network companies!





So far in 2012, IPOs have resulted in 20% returns which is better than the -11% returns IPO market yielded in 2011.  Since there are about 2.5 months more to go before the curtains drop on 2012, the 2012 IPO return might beat the 25% returns the year 2010 produced.











One very encouraging signs for the IPO investors this year has been the 13% average first day pop in IPOs that is line with what IPO market observed before the great recession (~13%).  And to all the naysayers out there who claim that tech-stocks are in a bubble, take a look at the average opening day pop in 1999 (72%) and 2000 (56%) and compare it to 2012, you will hold your peace for few more years at least!






Workday (Ticker: WDAY) is on the deck for this week.  Do you due-diligence before investing.

Happy IPO Investing!
Jitender

Source: Renaissance Capital, Greenwich, CT (www.renaissancecapital.com).

Wednesday, May 23, 2012

If You are a R Developer, Then You Must Try SAP HANA for Free.


This is a guest blog from Alvaro Tejada Galindo, my colleague and fellow R and SAP HANA enthusiast.  I am thankful to Alvaro for coming and posting on "AllThingsBusinessAnalytics".

Are you an R developers? Have ever heard of SAP HANA? Would you like to test SAP HANA for free?

SAP HANA is an In-Memory Database Technology allowing developers to analyze big data in real-time.

Processes that took hours now take seconds due to SAP HANA's power to keep everything on RAM memory.

As announced in SAP Sapphire Now event in Orlando, Florida, SAP HANA is free for developers. You just need to download and install both the SAP HANA Client and the SAP HANA Studio, and create an SAP HANA Server on the Amazon Web Services as described in the following document:
Get your own SAP HANA DB server on Amazon Web Services - http://scn.sap.com/docs/DOC-28294

Why should this interest you? Easy...SAP HANA is an agent of change bringing speed to its limits and it can also be integrated with R as described in the following blog:

Want to know more about SAP HANA? Read everything you need here: http://developers.sap.com

You're convinced but don't want to pay for the Amazon Web Services? No problem. Just leave a comment including your name, company and email. We will reach you and send you an Amazon Gift Card so you can get started. Of course, your feedback would be greatly appreciated. Of course, we only a limited set of gift cards, so be quick or be out.

Author Alvaro Tejada Galindo, mostly known as "Blag" is a Development Expert working for the Technology Innovation and Developer Experience team in SAP Labs.  He can be contacted at a.tejada.galindo@sap.com.

Alvaro's background in his own words: I used to be an ABAP Consultant for 11 years. I worked in implementations on Peru and Canada. I’m also a die hard developer using R, Python, Ruby, PHP, Flex and many more languages. Now, I work for SAP Labs and my main roles are evangelize SAP technologies by writing blogs, articles, helping people on the forums, attending SAP events, besides many other “Developer engagement” activities.
I maintain a blog called “Blag’s bag of rants” at blagrants.blogspot.com

Wednesday, May 2, 2012

Why Delta's Foray into the Crude Refining Business is a BAD Move?

When my mentor/guide and company president Sanjay Poonen threw this open challenge on Twitter:

For all u MBAs, what do u think of Delta buying an oil refinery for $150M (formerly $1B) for top-grade jet fuel. Would Michael Porter frown?

how could I have passed on this challenge PLUS I have been lately descending deep into the technology roots (most of my blogs are technical with lots of code snippets for all intentional purposes - AllThingsR.)  So I decided to spend some time sleuthing and analyzing hard facts before replying to @spoonen, and (may be) counter @gkm1 (George Mathew's) arguments.  This way I get back into analyzing business topics for some time.  (After all, A in MBA stands for analysis right? Masters in Business Analytics?)

The original news on WSJ covering Delta decision to buy a refinery from ConocoPhillips is here.

I spent quite sometime researching so I can educate myself on this deal.  I started with a prior belief that this is a BAD deal.  After all, the crude refining business is a boom and bust business, has razor thin margins and is notoriously competitive.  Here is a quote from Bloomberg supporting my argument: "Refiners in the northeastern U.S. are struggling to turn a profit because of the narrow margin between the cost of imported crude and fuel prices." (Source: Bloomberg)

Moreover, not a single new refinery has sprung up in the US for at least 35 years (Source) because no one wants to invest in this business.  In addition, ConocoPhillips, had idled this refinery for few months now and Sunoco, another refiner in that area, is in the process of shutting down two more refineries in that region. (Source: Bloomberg)  "Sunoco...said its refining businesses has been losing $1 million dollars a day for three years running." (Source)

So why is Delta buying this refinery? Vertical integration, fuel hedging, cost-savings, political, EPS improvements etc?  Actually all of the above.

Delta's planes burned 3.9B gallons of jet fuel last year.  At an avg. 2011 price of $2.86 per gallon, Delta spent $11.8B, which is 40% of its operating expenses. (Source: NYTimes)  If the cost of jet fuel was 40% of your company's operating expense, you will also be thinking about taking such dramatic decisions but may not execute on it if it is outside your realm, but Delta did.

Delta will pay $150M in cash (it has $3B in cash on its balance sheet, so there is no liquidity issue) and will invest another $100M in retooling this refinery.  Also you should note that PA government is chipping in with additional $30M (Thank you tax payers!).  Retooling is required for reason self-evident in this table (Mainly to crank-up the jet-fuel production):


Now, looking at this table why would anyone believe that Delta can earn $300M every year from this. Also remember, Delta is not bringing down its fuel cost from ~$12B by a whole lot, it is merely trying to save few cents on the dollar. A little bit of shift in the numbers above and Delta will be in red trouble.

Delta said that this is a good deal for the investors, really?  Valero had margins of less than 3% in its last quarter and it is a pure play refinery company. Can Delta beat Valero on margins?  I have my serious doubts.  This could be a gain but just for the Delta's management as it attempts to boost EPS in the near-term.

Also, can you believe that Delta can really retool the refinery and produce more jet-fuel than it is possible? The bio-chemistry doesn't support it.  From one barrel of crude, only 19.5 gallons of gasoline and 4.1 gallons of  jet-fuel can be produced.  How is Delta going to produce more jet-fuel per barrel of crude?

Also, FYI, this refinery can only process light sweet crude (with low sulfur) not that heavy Saudi oil that has high sulfur and is gaining more prominence due to global oil issues. (Source: ConocoPhillips)

Net net, this is a bad move, Delta will burn itself and get out in a year or two.  And when they sell, it will be a fire, sale since many other refineries in that area are already struggling to make a profit as I mentioned above. Delta's thinking that future of refineries is brighter is quite puzzling for me.

Happy Analyzing!

Big Data, R and SAP HANA: Analyze 200 Million Data Points and Later Visualize in HTML5 Using D3 - Part III

Mash-up Airlines Performance Data with Historical Weather Data to Pinpoint Weather Related Delays

For this exercise, I combined following four separate blogs that I did on BigData, R and SAP HANA.  Historical airlines and weather data were used for the underlying analysis. The aggregated output of this analysis was outputted in JSON which was visualized in HTML5, D3 and Google Maps.  The previous blogs on this series are:
  1. Big Data, R and HANA: Analyze 200 Million Data Points and Later Visualize in HTML5 Using D3 - Part II
  2. Big Data, R and HANA: Analyze 200 Million Data Points and Later Visualize Using Google Maps
  3. Getting Historical Weather Data in R and SAP HANA 
  4. Tracking SFO Airport's Performance Using R, HANA and D3
In this blog, I wanted to mash-up disparate data sources in R and HANA by combining airlines data with weather data to understand the reasons behind the airport/airlines delay.  Why weather - because weather is one of the commonly cited reasons in the airlines industry for flight delays.  Fortunately, the airlines data breaks up the delay by weather, security, late aircraft etc., so weather related delays can be isolated and then the actual weather data can be mashed-up to validate the airlines' claims.  However, I will not be doing this here, I will just be displaying the mashed-up data.

I have intentionally focused on the three bay-area airports and have used last 4 years of historical data to visualize the airport's performance using a HTML5 calendar built from scratch using D3.js.  One can use all 20 years of data and for all the airports to extend this example.  I had downloaded historical weather data for the same 2005-2008 period for SFO and SJC airports as shown in my previous blog (For some strange reasons, there is no weather data for OAK, huh?).  Here is how the final result will look like in HTML5:



Click here to interact with the live example.  Hover over any cell in the live example and a tool tip with comprehensive analytics will show the break down of the performance delay for the selected cell including weather data and correct icons* - result of a mash-up.  Choose a different airport from the drop-down to change the performance calendar. 
* Weather icons are properties of Weather Underground.

As anticipated, SFO airport had more red on the calendar than SJC and OAK.  SJC definitely is the best performing airport in the bay-area.  Contrary to my expectation, weather didn't cause as much havoc on SFO as one would expect, strange?

Creating a mash-up in R for these two data-sets was super easy and a CSV output was produced to work with HTML5/D3.  Here is the R code and if it not clear from all my previous blogs: I just love data.table package.


###########################################################################################  

# Percent delayed flights from three bay area airports, a break up of the flights delay by various reasons, mash-up with weather data

###########################################################################################  

baa.hp.daily.flights <- baa.hp[,list( TotalFlights=length(DepDelay), CancelledFlights=sum(Cancelled, na.rm=TRUE)), 

                             by=list(Year, Month, DayofMonth, Origin)]
setkey(baa.hp.daily.flights,Year, Month, DayofMonth, Origin)

baa.hp.daily.flights.delayed <- baa.hp[DepDelay>15,
                                     list(DelayedFlights=length(DepDelay), 
                                      WeatherDelayed=length(WeatherDelay[WeatherDelay>0]),
                                      AvgDelayMins=round(sum(DepDelay, na.rm=TRUE)/length(DepDelay), digits=2),
                                      CarrierCaused=round(sum(CarrierDelay, na.rm=TRUE)/sum(DepDelay, na.rm=TRUE), digits=2),
                                      WeatherCaused=round(sum(WeatherDelay, na.rm=TRUE)/sum(DepDelay, na.rm=TRUE), digits=2),
                                      NASCaused=round(sum(NASDelay, na.rm=TRUE)/sum(DepDelay, na.rm=TRUE), digits=2),
                                      SecurityCaused=round(sum(SecurityDelay, na.rm=TRUE)/sum(DepDelay, na.rm=TRUE), digits=2),
                                      LateAircraftCaused=round(sum(LateAircraftDelay, na.rm=TRUE)/sum(DepDelay, na.rm=TRUE), digits=2)), by=list(Year, Month, DayofMonth, Origin)]
setkey(baa.hp.daily.flights.delayed, Year, Month, DayofMonth, Origin)

# Merge two data-tables
baa.hp.daily.flights.summary <- baa.hp.daily.flights.delayed[baa.hp.daily.flights,list(Airport=Origin,
                           TotalFlights, CancelledFlights, DelayedFlights, WeatherDelayed, 
                           PercentDelayedFlights=round(DelayedFlights/(TotalFlights-CancelledFlights), digits=2),
                           AvgDelayMins, CarrierCaused, WeatherCaused, NASCaused, SecurityCaused, LateAircraftCaused)]
setkey(baa.hp.daily.flights.summary, Year, Month, DayofMonth, Airport)

# Merge with weather data
baa.hp.daily.flights.summary.weather <-baa.weather[baa.hp.daily.flights.summary]
baa.hp.daily.flights.summary.weather$Date <- as.Date(paste(baa.hp.daily.flights.summary.weather$Year, 
                                                           baa.hp.daily.flights.summary.weather$Month, 
                                                           baa.hp.daily.flights.summary.weather$DayofMonth, 
                                                           sep="-"),"%Y-%m-%d")
# remove few columns
baa.hp.daily.flights.summary.weather <- baa.hp.daily.flights.summary.weather[, 
            which(!(colnames(baa.hp.daily.flights.summary.weather) %in% c("Year", "Month", "DayofMonth", "Origin"))), with=FALSE]

#Write the output in both JSON and CSV file formats
objs <- baa.hp.daily.flights.summary.weather[, getRowWiseJson(.SD), by=list(Airport)]
# You have now (Airportcode, JSONString), Once again, you need to attach them together.
row.json <- apply(objs, 1, function(x) paste('{\"AirportCode\":"', x[1], '","Data\":', x[2], '}', sep=""))
json.st <- paste('[', paste(row.json, collapse=', '), ']')
writeLines(json.st, "baa-2005-2008.summary.json")                 
write.csv(baa.hp.daily.flights.summary.weather, "baa-2005-2008.summary.csv", row.names=FALSE)


Happy Coding!