Blog > Economics of Software

Economics of Software

A look into why software companies are so profitable - and by extension, so valuable - with a little DCF

2,835 words, ~ 14 min read

business

perspective

WeWork had an insanely high valuation at $47 billion. It sold office space, using a Space as a Service model (not to be confused with Software as a Service, an entirely different business model with the same acronym). If it had a tech valuation, this would be justified (spoiler: it wasn't, and it ended up filing for bankruptcy). But why?

Software is very profitable.

This also explains why software salaries are so high. If software profits are so high, and each incremental worker brings in a lot of profit, it's very doable to pay them a lot more.

There are some case studies at the end applying some of these concepts to a variety of different companies. I take a look at SEC filings, but not that thoroughly - I may follow up with posts just looking at those.

Table of Contents

Econ 101

Fixed Costs

This is the first kind of cost - those that are fixed with respect to the number of units produced.

Variable Costs

This is the second kind of cost - those that are variable with respect to the number of units produced (i.e. not fixed). The exact scale is irrelevant (linear, quadratic, cubic, exponential, etc.) for this post. Many economics classes will assume linearity, however.

Revenue

This is the price a unit of an item is sold for. Sometimes this is called sales.

Profitability

This is revenuecostsrevenue - costs, a measure of remaining money pocketed by the firm.

Companies exist to make profits. The more, the better.

Economies of Scale

As business scales, the fixed cost is shared between all the units producted, becoming less of a cost per unit. The variable cost, however, strictly remains.

The fixed cost can also change. Consider producing just one car - it takes a lot of time and effort to put together all the parts. A factory, however, with the assembly line makes it much easier to produce a lot more cars. Technically, fixed cost is going up, but it makes more sense since it reduces cost per car.

Assuming revenue stays the same, the effect of scaling is that variable cost determines the ultimate profitability of the item.

Most industries can trace prices and profitability back to this. Consider farming. The amount of time, effort, and resources it takes one person to do something as simple as grow enough wheat to make one singular loaf of bread is astronomical; go to any grocery store and you can buy it for just a few dollars. Producing bread in massively high quantities lowers the price on it significantly.

For other industries, such as the one WeWork was in, this doesn't apply. There's only so low that rent can go, independent of how much real estate space is being owned. Even if WeWork owned a lot of real estate, the costs can't drop with scale that signficantly like it can for software.

Fixed Costs in the Long Run

For those interested, here is some mathematical intuition (not crucial, but here for fun).

Say there are nn units being produced. FCFC refers to fixed costs, VCVC refers to variable costs, TCTC refers to total cost.

TC=FC+VC\begin{aligned} TC = FC + VC \end{aligned}

The per-unit cost, TCn\frac{TC}{n}, is:

TCn=FCn+VCn\begin{aligned} \frac{TC}{n} = \frac{FC}{n} + \frac{VC}{n} \end{aligned}

VCVC can be represented as a Taylor polynomial regardless of what function it is. Usually, most products would be linear (growing 10 apples instead of 5 takes 2x the water, land, fertilizer, etc.) meaning it is of the form:

a,b,c,...RVC=an+bn2+cn3+...an\begin{aligned} \exists a, b, c, ... \in \mathbb{R} \rightarrow VC = an + bn^2 + cn^3 + ... \approx an \end{aligned}

It's hard to reason about VCVC for higher-order terms. Some terms that are encapsulated in o(n)\mathcal{o}(n) may make sense; perhaps there are costs that grow logarithmically or by a square root.

An extreme example might be an unusual customer acquisition cost. Say the company has to provide a subsidy per user in using the application (like Uber when it tries to break into new markets), with referals for other users increasing all subsidies. As the number of users increases, the variable cost increases not only for the subsidies per user, but it also increases the cost for all existing users. This seems to be a poor business model, rarely found.

The per-unit cost as the number of units scales to infinite growth is:

limnTCn=limn(FCn+VCn)=limnVCn=a\begin{aligned} \lim_{n\to\infty} \frac{TC}{n} = \lim_{n\to\infty} \left(\frac{FC}{n} + \frac{VC}{n}\right) = \lim_{n\to\infty} \frac{VC}{n} = a \end{aligned}

Note that the fixed cost term has disappeared; only the variable costs remain. Scaling reduces the impact of fixed costs but is limited by variable costs.

If there is cost greater than linear cost, then that indicates the variable cost scales upwards as the number of users grows, indicating decreased profitability.

Discounted Cash Flow Analysis

Now let's take this one step further and apply a discounted cash flow analysis to this, which is a common valuation process. I'm going to be making a lot of simplifications to not get bogged down in the details.

If you haven't heard of this before, the high-level idea has to do with the time value of money; money now is worth more than money later due to:

  1. Opportunity Cost - money could be used now to make more money, such as an investment into a project or stock
  2. Inflation

We assign a rate (a discount rate) for how much more money now is valued; then the amount of money per year can be computed and discounted back to the present day.

Let's start by saying there's some disount rate dd (usually around 10%) and some number of years tt. The value of the company is the sum of the discounted cash flows over the next tt years. In this case, we'll be taking t=t = \infty.

I'll assume no growth rate from year 10, which is a simplification. It's very often not true (even companies that are traditionally not seen as growing quickly are growing fast), but it won't matter too much here.

Each year, the company makes some amount of revenue rr. Of this, some fraction vv of rr is variable cost (note that 0v10 \le v \le 1), and the rest is contribution margin. There is some fixed cost ff that is paid each year. The profit is discounted by dd to get the present value of the profit, summed to get the total value of the company.

To make things a bit more concise, G=1+gG = 1 + g where gg is the growth rate and D=1+dD = 1 + d where dd is the discount rate. I'll be switching between them interchangeably when convenient throughout.

Year01...910
RevenuerrrGrG...rG9rG^9rG9rG^9
Fixed Costffff...ffff
Variable CostvrvrvrGvrG...vrG9vrG^9vrG9vrG^9
Contribution Margin(1v)r(1-v)r(1v)rG(1-v)rG...(1v)rG9(1-v)rG^9(1v)rG9(1-v)rG^9

Since the fixed cost has no growth rate, it will be treated as a perpetuity from year 0. This is a simplification; there is some small growth rate (i.e. from getting new office space after hiring). The variable cost does have a growth rate, so it will be treated as an annuity from years 0 to 9 and then a perpetuity from years 10 to \infty.

Addditionally, the contribution margin is the revenue minus the variable cost. This will be referred to as CM, and will be calculated in the variable cost section.

note: there are formulas to get the values of a perpetuity and an annuity directly, but those sometimes have weird cases where you start from year 1 instead of year 0, so there has to be a discount backwards and forwards; I always found it easier to derive the formulas from scratch

Fixed Cost

This is a geometric series, which has a closed form solution:

FC=ffDfD2...=f11D=fDd=f(1+d)d FC = -f - \frac{f}{D} - \frac{f}{D^2} - ... = \frac{-f}{1 - \frac{1}{D}} = \frac{-fD}{d} = \frac{-f(1+d)}{d}

Variable Cost

Annuity=(1v)r+(1v)rGD+(1v)rG2D2+...+(1v)rG9D9 Annuity = (1-v)r + \frac{(1-v)rG}{D} + \frac{(1-v)rG^2}{D^2} + ... + \frac{(1-v)rG^9}{D^9} =(1v)r(1+GD+G2D2+...+G9D9)= (1-v)r(1 + \frac{G}{D} + \frac{G^2}{D^2} + ... + \frac{G^9}{D^9})

These is a geometric series, which has a closed form solution:

Annuity=(1v)r×Ddg×(1G10D10) Annuity = (1-v)r \times \frac{D}{d-g} \times (1 - \frac{G^{10}}{D^{10}}) =(1v)r(1+d)dg(1(1+g)10(1+d)10) = \frac{(1-v)r(1+d)}{d-g}(1-\frac{(1+g)^{10}}{(1+d)^{10}})

Note that from years 6 to \infty, the cash flow remains fixed, but the discount rate increases year on year - a perpetuity. Again, this is a geometric series, which has a closed form solution:

Perpetuity=(1v)rG9D10+(1v)rG9D11+... Perpetuity = \frac{(1-v)rG^9}{D^{10}} + \frac{(1-v)rG^9}{D^{11}} + ... =(1v)rG9D10(1+1D+1D2+...)=(1v)rG9D10Dd = \frac{(1-v)rG^9}{D^{10}}(1 + \frac{1}{D} + \frac{1}{D^2} + ...) = \frac{(1-v)rG^9}{D^{10}}\frac{D}{d} =(1v)rG9dD9=(1v)r(1+g)9d(1+d)9 = \frac{(1-v)rG^9}{dD^9} = \frac{(1-v)r(1+g)^9}{d(1 + d)^9}

Combining these together:

CM=(1v)r[(1+ddg)(1(1+g)10(1+d)10)+(1+g)9d(1+d)9] CM = (1-v)r[(\frac{1+d}{d-g})(1-\frac{(1+g)^{10}}{(1+d)^{10}}) + \frac{(1+g)^9}{d(1+d)^9}]

To make things easier, let's plug in some numbers for the discount rate and growth rate for software companies.

The discount rate can be calculated using CAPM (Capital Asset Pricing Model), but looking at some sample calculations, we can use about 17.5%17.5\% for the discount rate, assuming this company is roughly starting at $100,000 in ARR (annual recurring revenue) for year 0 and is about to start consistently scaling.

Let's say the total growth is to $100 million ARR for a multiplier of 1000x (which is a lot, but not unheard of; Salesforce's annual revenue for FY2023 was $31.35 billion). The growth rate is then (1+g)9=1000g=1.15(1+g)^9 = 1000 \rightarrow g = 1.15, which means the company is just over doubling the amount of revenue in a given year.

Note that the fixed cost is solely dependent on the amount of fixed cost and the discount rate being used; gg does not factor in.

FC=f(1+d)d=f(1+0.175)0.1756.714f FC = \frac{-f(1+d)}{d} = \frac{-f(1+0.175)}{0.175} \approx -6.714f CM=(1v)r[(1+0.1750.1751.15)(1(1+1.15)10(1+0.175)10)+(1+1.15)90.175(1+0.175)9]1819.746(1v)r CM = (1-v)r[(\frac{1+0.175}{0.175-1.15})(1-\frac{(1+1.15)^{10}}{(1+0.175)^{10}}) + \frac{(1+1.15)^9}{0.175(1+0.175)^9}] \approx 1819.746(1-v)r Value1819.746(1v)r6.714f Value \approx 1819.746(1-v)r - 6.714f

Notice how large the coefficient is - it's almost 2000x the portion of contrbution margin. Software, which will seek to maximize this by minimizing vv, is thus very profitable. Notice that while changing revenue (such as increasing sales or having a better product) can't change the fixed cost, but it can and will affect the contribution margin.

As a further note, the magnitudes of the coefficient indicate that having a very high ff is better than having a large factor vv.

The Business of Software

Software is found in everything. Consider software-only products, however.

Once the code is written one time, it can be distributed widely and repeatedly for no additional cost to bring on extra users.

This is what it means for software to scale so well.

note: these sections used to be quite a bit longer as they were drafted before the DCF; I've since shortened them. if you're interested in learning more about a specific company, I've linked the SEC filings below

Adobe

SEC Filing

Adobe is a tech company that makes software products for creative professionals. They have a wide range of products, including Photoshop, Illustrator, InDesign, Acrobat, and more, included in their Creative Cloud subscription service.

Adobe has a lot of fixed costs, but they have smaller variable costs. Running a product in the cloud requires a lot of servers, but the cost of adding a new user is very low. This allows Adobe to scale their business efficiently and profitably. That isn't to say that these fixed costs are low; they are still very high, but Adobe is able to spread the cost across a lot of users.

There are some things that still hamper the variable cost and prevent vv from being 0. For example, customer support scales with the number of customers and the products (both quality and number). Sales commissions for any enterprise commissions are also variable costs.

Publix

SEC Filing

Publix is a grocery store chain in the Southeastern United States, founded and primarily operating in Florida. Other parts of the country have their own equivalents, like Hyvee, Kroger, and Safeway. Note that this is not like WalMart or Target, which are more general stores found far more often domestically - a lot more; 90% of Americans are less than 10 miles from a WalMart.

Publix is a bit of a different case than Adobe. For one, most products within Publix are of other brands that have some level of variable cost for the goods themselves. There's also labor costs and rent/insurance/taxes/etc. for the physical stores. To serve more people, Publix can either go for market penetration to get more people inside a given store, in which case these costs are somewhat fixed, but expansion via new locations is variable.

There's also shipping and transportation that scales with the number of units being sold. In fact, it's more challenging to think of the fixed costs for Publix - corporate expenses, utilities, and equipment are the main ones.

Granted, Publix wins on customer service and quality, which is a differentiator. It's also a lot more difficult to scale a grocery store than it is to scale software (and thus harder for competitors to enter the market).

Software as Investment

Now consider products that are not software but utilize software. This can directly benefit the product or it can streamline workflows.

John Deere

SEC Filing

John Deere is a manufacturer of agricultural, construction, and forestry machinery. Like many manufacturing companies, they have raw material, direct labor, commissions, shipping, packaging, and other variable costs. They also have fixed costs like factory overhead, engineering, and administrative expenses.

John Deere is well known for having a software focus in their operations. They're making active investments in autonomous vehicles, which is a mixed cost since the vehicles themselves are still going to have variable cost but the software used to control them is going to be a fixed cost that can be distributed among the number of vehicles sold.

Sensors and data analytics help identify problems early, schedule preventative maintenance, and reduce downtime on their equipment, improving some of their costs.

In fact, John Deere is able to leverage software with over-the-air updates.

Other costs can be converted from being fixed over to variable through software; such as simulation and mdeling software to validate designs digitally before getting to the physical prototypes for testing (and waste materials in the process).

Conclusion

This was a bit of a whirlwind tour spending quite a bit of time on some theory and math, but the main takeaway is that software can be spread to many people for little additional cost once written, while keeping the costs of running the business fixed.

Any business, even those that don't directly sell software products, can leverage software to improve their business and improve their profitability.

Bonus: Cash Conversion Cycle

One of my friends, Huzefa, remarked upon reading a draft of this post that another huge component of software companies being financially different is the negative cash conversion cycle. I'll be honest, I had to look this up as I hadn't heard of it before, but it's a great point.

The cash conversion cycle (CCC) is the time between when a company pays for its inventory and when it receives cash from the sale of that inventory. For software companies, this is negative, largely for two reasons: there's no physical inventory (so inventory conversion is 0), and receivables are immediate (think of entering your credit card information online and immediately seeing a charge go through, so receivable conversion is very small).

CCC=inventory conversion+receivable conversionpayables conversion CCC = inventory~conversion + receivable~conversion - payables~conversion

One interesting example is Apple, a retail company with a negative cash conversion cycle. They have a high payables outstanding, because they have a lot of leverage with their suppliers, so they can pay them later compared to the time it takes for them to sell their inventory and get money from customers (which is often immediate).

In general, the lower the cash conversion cycle, the better. A negative cash conversion cycle is even better, as it means the company is getting money before it has to pay for its inventory. However, in the DCF analysis, this is not directly accounted for, as it is the nature of the cost payment cycle and not the timing of what we abstract as cash flows. It could be incorporated; the costs could be shifted to be paid later, but that would be a different analysis. It's easier to leave it as is and just note that it's a factor that makes software companies even more attractive in terms of business model. It's also not as a big of a deal, since software companies often raise money from venture capital investors for capital to grow, so they don't have to worry about having cash on hand.

Found this interesting? Subscribe to get email updates for new posts.

Return to Blog