Intrinsic Value of a Company Based on Future Cash Flows

In Calculate Present Value Of Perpetuity and Warren Buffett’s Intrinsic Value Calculator I have illustrated how one can calculate the intrinsic value of a company based on the sum of cash that can be taken out of the business in form of dividends plus the equity growth.

In this article I will describe how we can follow a similar approach, but based on the free cash flow, FCF, (FCF = Cash Flow From Operating Activities - Payments for acquisition of property, plant and equipment).

We are going to use a two-stage process to calculate the present value of the company’s future cash flows. We will assume that the company would be able to grow its free cash flow at 15 percent per year for the next 10 years. Starting in year 1, that growth rate will slow to 5 percent per year.

To figure out that the company would be able to grow its free cash flow at \(x\) percent annually we can look at the company’s free cash flows for the last 10 years and Compute the Compound Annual Growth Rate. It is preferred that the over year growth within that time frame has been steady.

Stage One

The first stage applies the \(15\%\) annual growth for ten years. If in year 0 the free cash flow is \(828,000,000\), after 1 year of growth (at \(15\%\)), the cash flow will be \(952,200,000\). After 2 years of growth, the cash flow will be \(1,095,030,000\). After 10 years of growth, the cash flow will be \(3,349,721,805\). Summing up all these future cash flows and then discounting them to present value at \(9\%\) rate, we will end up with a present value of \(11,250,041,570\).

Stage Two

Starting with year 11, growth will slow to \(5\%\) annually. Cash flow on year 11 (after year 10 cash flow grew by \(5\%\)) will be \(3,517,207,895\) (\(= 3,349,721,805(1 + 0.05)\)). Assuming that company will generate \(3,517,207,895\) annually for the rest of its life, the terminal value in year 10 will be \(87,930,197,386\). We then have to discount \(87,930,197,386\), at a rate of 9%, to get the present value today (remember \(87,930,197,386\) is the terminal value at year 10). Discounting \(87,930,197,386\), at a rate of 9%, we get \(37,142,665,628\)(\(= 87,930,197,386\frac{1}{(1 + 0.9)^{10}}\)).

Finally, we just have to add the two values together to get our final intrinsic value of the company

\[intrinsic\ value = 11,250,041,570 + 37,142,665,628 = 48,392,707,197 = 48\ Billion\]

I have created a small Python script that does this calculation for you. To run it, simply type the following command into your terminal:

\$ python3 intrinsic_value_of_future_cash_flows.py -c 828000000 -d 9 -g 15 -t 5
import argparse
import math
import locale
from termcolor import colored
import sys

millnames = ['', ' Thousand', ' Million', ' Billion', ' Trillion']


def millify(n):
    n = float(n)
    millidx = max(0, min(len(millnames)-1, int(math.floor(0 if n == 0 else math.log10(abs(n))/3))))
    return '{:.0f}{}'.format(n / 10**(3 * millidx), millnames[millidx])


def main():
    """
    python3 intrinsic_value_of_future_cash_flows.py -c 51147000000 -d 9 -g 15 -t 5
    """
    parser = argparse.ArgumentParser()
    parser.add_argument('-c', type=float, default=828000000, help='specifies the cash flow after the first period. e.g.: 828000000')
    parser.add_argument('-d', type=float, default=9, help='specifies the discount rate in %%. e.g.: 9')
    parser.add_argument('-g', type=int, default=15, help='specifies the growth rate in percent during stage 1. e.g.: 15')
    parser.add_argument('-t', type=int, default=5, help='specifies the growth rate in percent after stage 1. e.g.: 5')
    args = parser.parse_args()

    print("-----------")
    print("Intrinsic value calculator of a company based on its future cash flows")
    print("-----------")

    # Stage 1: The first stage applies g percent annual growth for ten years.
    # In year 1, the cash flow was cf.
    # (cf)--(1 Year of Growth)--(2 Years of Growth)--(3)--(4)--(5)--(6)--(7)--(8)--(9)--(10 Years of Growth)
    print("\n%s" % colored('STAGE 1', attrs=['bold']))
    pv1 = 0.0
    cf = args.c
    d = args.d/100.0
    g = args.g/100.0
    years = 10
    for n in range(1, years+1):
        cf = cf*(1 + g)
        print(" After %d year(s) of growth cash flow will be %s" % (n, colored("%.0f" % cf, 'green')))
        pv1 += cf / (1 + d)**n
    print(" ------------")
    print(" Sum of present value (discounted at a rate of %d%%) of future cash flows: %s" % (args.d, colored("%.0f" % pv1, 'green')))

    print("\n%s" % colored('STAGE 2', attrs=['bold']))
    # Stage 2: Starting with year 11, growth will slow to t percent
    t = args.t / 100.0

    # Cash flow on year 11 after CF_10 grew by t percent
    print(" Cash flow after %d years of growth is %.0f" % (years,  cf))
    cf_11 = cf*(1 + t)
    print(" Assuming that %.0f will grow by %.0f%%, it will be %.0f in year %d" % (cf, args.t, cf_11, years+1))

    # Assume we are going to have CF_11 for the rest of the company's life, we calculate the terminal value
    pv2 = cf_11 / (d - t)
    print(" Assuming that company will generate %.0f annually for the rest of its life, the terminal value in year %d will be %s" %
          (cf_11, years, colored("%.0f" % pv2, 'green')))

    # Since pv2 is the discounted value of the company's cash flow in year 11,
    # we next have to discount this future value by the discount factor at the end of year 10
    dpv2 = pv2 / (1 + d)**10
    print(" ----------------")
    print(" Present value (discounted at a rate of %d%%) of the terminal value (%.0f) is %s" % (args.d, pv2, colored("%.0f" % dpv2, 'green')))

    print(" ================")
    totalValue = pv1 + dpv2
    locale.setlocale(locale.LC_ALL, 'en_US')
    pvStr = locale.format('%d', totalValue, grouping=True)
    print(" Total intrinsic value of company is $$ %s (%s = %.0f + %.0f)\n" % (colored("%s" % millify(totalValue), 'green'), pvStr, pv1, dpv2))


if __name__ == '__main__':
    main()
Written on August 15, 2021