learn-value-investing-with-phoebe / Analyst session 6 of 10
Learn Value Investing with Phoebe · Analyst session 6 of 10

Which input moves the answer

In Analyst session 4 you built a discounted cash flow for Procter & Gamble and it printed 95.16 a share. That number rests on four inputs you chose: a 9 percent discount rate, 5 percent growth, ten years of it, and 2.5 percent after that. Tonight we push on each one. First one at a time, which draws a tornado. Then two at once, which draws a grid whose range, 70.84 to 132.39, is the honest output. Then the practical question every valuation meeting skips: with limited time, which input do you argue about hardest? No market prices, no tickers; the value is compared with nothing but itself.

🟡 Analyst Analysts, finance and data people who have built a DCF and want to know how much to trust it Python, standard library only 45 min
0-3 · Welcome 3-18 · Tornado, grid, the input to argue 18-40 · Build-along: the grid in Python 40-45 · Q&A
Part 0

Where we start

You arrive with a working dcf() function from Analyst session 4 and, from Analyst session 5, the habit of running it backwards from a test price. Both treat the inputs as given. A professional valuation never does: before anyone looks at the value, they look at how far it moves when each input is pushed by an amount a reasonable colleague might argue for. The base tonight is P&G's ten-year mean owner earnings, 5.00 a share (all-capex approximation, from 10-K facts), carried at its full precision of 4.998525 in the code. Every value on this page is modelled: arithmetic on that computed base under the inputs stated beside it.

🎫 Clear all three quiz questions to stamp your passport Live = presented in the 45 minutes Self-study = the full depth, after class ★ Build-along = everyone builds

The value is not a target. 95.16, and every number in the grid, is what a two-stage model returns for one company's filed owner earnings under stated inputs. None of it says what anything should trade at, and nothing on this page says whether to buy, hold or sell.

★ What you walk out with tonight. A tornado chart that ranks P&G's four inputs by how far each moves the value, a 3 x 3 grid of discount rate and growth you can reproduce to the cent, the sentence that reports a valuation as a range rather than a point, and a short list of which input to argue first and what evidence to bring to that argument.

Part 1 · covers one-at-a-time sensitivity

One input at a time

5 min live

Hold everything at the default (discount rate 9 percent, 10 years of 5 percent growth, 2.5 percent terminal growth) and move a single input to a low and a high setting. Discount rate 8 and 10 percent; growth 3 and 7 percent; growth years 5 and 15; terminal growth 1.5 and 3.5 percent. Each pair of runs gives a low value and a high value. Stack the four pairs with the widest at the top and the picture looks like a tornado, which is what analysts call it.

ONE INPUT AT A TIME, P&G RUNG 3 left of the line: the setting that lowers value · right: the setting that raises it default 95.16 discount rate 10% left · 8% right growth, years 1 to 10 3% left · 7% right terminal growth 1.5% left · 3.5% right growth years 5 left · 15 right 81.95 113.24 81.84 110.71 87.47 105.65 87.76 101.31 argue this first 80 90 100 110 value per share, dollars, modelled on P&G's 5.00 ten-year owner earnings Each bar moves one input and holds the other three at the default. Brass is the widest swing at these inputs.
🔍 Click to zoom - the discount rate swings the value furthest, and the cut to 8 percent adds more than the rise to 10 percent takes away
LiveReading a tornado in four questions3 min▶

Which bar is widest? The discount rate: 81.95 to 113.24. Growth over the first ten years is a close second, 81.84 to 110.71. Terminal growth (87.47 to 105.65) and the number of growth years (87.76 to 101.31) move the value less at these settings.

Is each bar lopsided? Yes. Three of the four reach further on the high side; only growth years leans the other way. Dropping the discount rate a point lifts the value more than raising it a point cuts it, because discounting compounds: every year's cash, and the terminal value most of all, is divided by a smaller number. Lopsided bars warn you that "plus or minus one point" is not plus or minus the same amount of value.

Were the pushes fair? A tornado ranks inputs only as honestly as the low and high settings you chose. One point on the discount rate and two points on growth are the ranges the bench uses; if you think growth is far less certain than that, widen its push and the bars may swap order. Write the settings next to the chart, always.

What does the bar not show? What happens when two inputs move together. That is Part 2.

Why a higher discount rate means a lower value at all, the price of waiting, is taught in Economics Foundations session 5 ↗; here we only measure how much it moves.

Self-studyOne-at-a-time hides interactions3 min▶

Each tornado bar is computed with the other three inputs pinned at the default. Real disagreements rarely come one input at a time: a colleague who thinks P&G deserves a lower discount rate often also thinks it will grow faster, because both views come from the same belief that the business is safer and stronger than you assume. Pinned bars cannot show what that combined view does.

The effects also do not simply add. Growth matters more when the discount rate is low, because the extra cash from faster growth is shrunk less on its way back to today. You will see it directly in the grid: at 8 percent, moving growth from 3 to 7 percent adds more value than the same move at 10 percent. A tornado is the right first look and the wrong last one.

Real world

P&G's own record against the 5 percent default. The default assumes owner earnings grow 5 percent a year for ten years. P&G's filings show its owner earnings per share moving from a mean of 3.84 in the first five years of its run to 5.90 in the last five, about 3.1 percent a year over 14 years, in nominal dollars. That is close to the low end of the growth bar, not the middle. It does not prove the default wrong; it tells you which way the burden of proof runs before anyone argues for 7 percent.

Part 2 · covers the sensitivity grid

The grid

5 min live

Take the two widest bars, the discount rate and growth, and move them together: three rates (8, 9 and 10 percent) against three growth rates (3, 5 and 7 percent), terminal growth and growth years held at 2.5 percent and ten. Nine runs, one table. The centre cell is 95.16, the number from Analyst session 4. The corners are what happens when both inputs sit at an edge at once, and the spread from the lowest corner to the highest is the range the bench reports.

DISCOUNT RATE x GROWTH, P&G RUNG 3 value per share; terminal 2.5%, 10 growth years growth, years 1 to 10 g 3% g 5% g 7% discount rate (rows) r 8% r 9% r 10% 96.86 113.24 132.39 81.84 95.16 default 110.71 70.84 81.95 94.88 THE RANGE 70.84 to 132.39 nine cases, one business top corner: r 8%, g 7% low corner: r 10%, g 3% darker = higher value brass outline = a corner: both inputs at an edge at the same time Read down a column: the discount rate. Read across a row: growth. Read the corners: the range you report.
🔍 Click to zoom - the centre cell is the number from Analyst session 4; the corners are the answer you should actually report
LiveThe range is the output4 min▶

A single DCF value invites the question "is that right?", which has no answer. A grid invites a better one: "which row and column do you believe, and why?" The output to carry out of the room is the sentence, not the cell: P&G, 5.00 ten-year mean owner earnings (all-capex approximation), 10 years then 2.5 percent: 70.84 to 132.39 a share across discount rates of 8 to 10 percent and growth of 3 to 7 percent; 95.16 at 9 and 5.

Read the grid three ways. Down a column, at 5 percent growth, the discount rate alone moves the value from 113.24 to 81.95, the same swing as the tornado's top bar. Across a row, at 9 percent, growth moves it from 81.84 to 110.71. Row against row, the interaction from the self-study card shows: at 8 percent the growth row spans 96.86 to 132.39, at 10 percent only 70.84 to 94.88. Growth is worth more when the discount rate is low.

Notice also that two cells nearly tie with the centre: 96.86 (8 percent, 3 percent growth) and 94.88 (10 percent, 7 percent). A lower rate and slower growth can land almost exactly where a higher rate and faster growth do. Two analysts can agree on the value and disagree about everything underneath it.

Self-studyWhy the corners are not equally likely3 min▶

A grid draws nine cells the same size, which quietly suggests nine equally likely outcomes. They are not. The top corner, 132.39, needs the cheapest money and the fastest growth at the same time. For P&G, whose owner earnings grew about 3.1 percent a year across its filed run, 7 percent for a decade is already a stretch before the discount rate is touched. The low corner, 70.84, needs the dearest money and the slowest growth together, and slow growth is roughly what the record shows.

Inputs are also linked by the business itself. Damodaran's relationship from Analyst session 3, growth equals reinvestment rate times return on capital, says faster growth has to be paid for with reinvestment, which lowers the owner earnings left over. The grid holds the base fixed at 5.00 in every cell, so its fast-growth column gets the growth for free. Treat the corners as boundaries for argument, not as scenarios with a probability attached. Analyst session 7 brings the base rates that tell you how often fast growth actually lasts.

Real world

Four filers, one shape. Run the same grid on each company's ten-year owner earnings and the ranges are Caterpillar 186.67 to 348.88 around 250.78, Exxon Mobil 87.34 to 163.24 around 117.34, Johnson & Johnson 112.26 to 209.80 around 150.81, and P&G 70.84 to 132.39 around 95.16. Each range is the same multiple of its own centre, because the model scales with the base: the grid's width comes entirely from the inputs, not from the company. Sensitivity tells you how much your assumptions matter; it says nothing about whether the base itself is right, which was Analyst sessions 1 and 2.

Part 3 · covers where to spend the argument

The input to argue hardest

5 min live

An investment discussion has a fixed amount of attention. Spend it in proportion to how far each input moves the answer, and on the evidence that can actually narrow that input. At P&G's defaults, the discount rate and growth over the first ten years move the value most. Terminal growth matters less at plus or minus one point, but it carries a hidden weight: 57.0 percent of the 95.16 comes from beyond year 10, so it is the input most likely to be pushed somewhere it cannot go.

THE ARGUMENT BUDGET one meeting's attention, split by how far each input swings P&G's value discount rate growth, years 1 to 10 terminal growth years 1 · discount rate 81.95 to 113.24 say your required return out loud, and why 2 · growth, years 1-10 81.84 to 110.71 P&G's own run: about 3.1% a year, nominal 3 · terminal growth 87.47 to 105.65 cap: no faster than the economy, forever 4 · growth years 87.76 to 101.31 how long the edge lasts: Analyst session 8 57.0 percent of 95.16 sits beyond year 10, so the terminal input is small in swing and large in weight. Segment widths are proportional to each input's swing at the default. Time in the meeting follows the width.
🔍 Click to zoom - spend the argument where the bar is widest, and bring evidence that can narrow it, not adjectives
LiveTwo widest bars, two different kinds of argument4 min▶

The discount rate is a choice, not a fact. It is the return you require for tying money up in this business rather than somewhere safer. No filing contains it. The argument is therefore about you, not the company: what return do you need, and is P&G riskier or safer than the alternatives you would otherwise hold? The cost-of-capital machinery that formalises this is outside these sessions; the honest move is to state your rate, state why, and show the grid either side.

Growth is a claim about the business, so it can meet evidence. P&G's filed owner earnings grew about 3.1 percent a year over 14 years, nominal. Arguing for 7 percent means arguing that the next decade will look nothing like the last one, and naming why. That argument can be checked against the filings and, in Analyst session 7, against base rates for how often fast growth lasts.

Terminal growth has a hard ceiling. Damodaran's terminal value slides set the rule: the stable growth rate cannot exceed the growth rate of the economy, though it can be lower, and the riskfree rate is a simple proxy for nominal economic growth. A terminal rate above that says the company eventually becomes larger than the economy. Check your 3.5 percent push against that ceiling before you treat 105.65 as a fair high case.

Growth years are a claim about durability. Five years or fifteen is a question of how long the business keeps an edge, which is a moat treated as a valuation input. That is Analyst session 8; the economics of moats themselves live in Economics Foundations session 6 ↗.

Self-studyFalse precision3 min▶

The grid prints values to the cent, and the code needed the base to six decimals to reproduce them. That precision belongs to the arithmetic, not to the answer. A cell reading 95.16 is no more knowable than one reading 95; what is knowable is that a point on the discount rate moves it by tens of dollars. Reporting a valuation to the cent when its inputs are uncertain by whole percentage points is the error the grid exists to expose.

Carry full precision through the calculation, because rounding the base to 5.00 prints 95.19 instead of 95.16 and breaks reproducibility. Then round hard when you speak: "roughly 70 to 130, about 95 at the middle inputs" is the sentence that matches what you actually know.

Real world

Buffett on the guess inside owner earnings. In the appendix to his 1986 letter, Buffett notes that owner earnings do not give the deceptively precise figures GAAP provides, because the capital spending a business needs to stand still must be a guess. He accepts that trade openly: "I would rather be vaguely right than precisely wrong." A sensitivity grid is the same stance applied to a whole valuation: it gives up the comfort of one precise number for a range that is more likely to contain the truth.

Build-along

Build the grid

★ 22 min · everyone builds

Python 3, standard library only, no data fetch: the base is P&G's ten-year mean owner earnings per share at full precision, 4.998525, displayed as 5.00. You reuse the dcf() function from Analyst session 4 unchanged, add a three-line helper that changes only the inputs you name, and loop. The outputs printed below are what this code printed when run, and they match the grid and the tornado above to the cent.

FOUR STEPS, AND THE CHECK AFTER EACH 1 · reuse dcf() exact base 4.998525 2 · value(**change) change only what you name 3 · the grid 3 rates x 3 growth rates 4 · the tornado one input, sorted widest check: 95.16, 57.0% 95.19 means a rounded base check: value() = 95.16 no change, no movement check: 70.84 to 132.39 centre cell is 95.16 check: rate on top 81.95 to 113.24 If the centre cell is not 95.16, stop: the grid around a wrong centre is a wrong grid, however tidy it looks.
🔍 Click to zoom - the centre-cell check is what ties tonight's grid back to the value you built in Analyst session 4

Step 1 · Reuse the function, on the exact base. Paste dcf() from Analyst session 4 exactly as you wrote it, guard first. Set the base unrounded and the defaults in one dictionary, then confirm the default value and terminal share before going further.

★ Step 1 · dcf() and the defaults, and what it printeddef dcf(base, r, n, g, gt): """Two stages: n years growing at g, then gt forever. Returns (value, stage-one PV, terminal PV), all per share.""" if r <= gt: raise ValueError("terminal growth must sit below the discount rate") cash, stage = base, 0.0 for year in range(1, n + 1): cash = cash * (1 + g) stage += cash / (1 + r) ** year tv = cash * (1 + gt) / (r - gt) terminal = tv / (1 + r) ** n return stage + terminal, stage, terminal BASE = 4.998525 # P&G ten-year mean owner earnings per share; displays as 5.00 DEFAULT = {"r": 0.09, "n": 10, "g": 0.05, "gt": 0.025} v, stage, terminal = dcf(BASE, **DEFAULT) print(f"default {v:.2f} terminal share {terminal / v:.1%}") default 95.16 terminal share 57.0%

Step 2 · A helper that changes only what you name. Merging the changes over the defaults means every run states its own difference from the baseline, and nothing else can drift. Call it with no arguments and it must return the default.

★ Step 2 · value(**change)def value(**change): """Value at the defaults, with any inputs you name changed.""" return dcf(BASE, **{**DEFAULT, **change})[0] # value() -> the default, 95.16 # value(r=0.08) -> only the discount rate moves # value(r=0.08, g=0.07) -> two inputs move together: a grid corner

Step 3 · Loop the discount rate and growth into the grid. Rows are the discount rate, columns are growth. Compare every cell with Part 2 before moving on.

★ Step 3 · the 3 x 3 grid, and what it printedprint(" g 3% g 5% g 7%") cells = [] for r in (0.08, 0.09, 0.10): row = [value(r=r, g=g) for g in (0.03, 0.05, 0.07)] cells += row print(f"r {r:>4.0%} " + " ".join(f"{x:7.2f}" for x in row)) g 3% g 5% g 7% r 8% 96.86 113.24 132.39 r 9% 81.84 95.16 110.71 r 10% 70.84 81.95 94.88

Step 4 · Print the range. The lowest and highest cells are the two numbers that go in your sentence.

★ Step 4 · the range, and what it printedprint(f"range {min(cells):.2f} to {max(cells):.2f}") range 70.84 to 132.39

Step 5 · The four one-at-a-time swings, widest first. Each pair is (the setting that lowers value, the setting that raises it). Sorting by the gap draws the tornado as text.

★ Step 5 · the tornado as text, and what it printedswings = { "discount rate 10% / 8%": (value(r=0.10), value(r=0.08)), "growth 3% / 7%": (value(g=0.03), value(g=0.07)), "growth years 5 / 15": (value(n=5), value(n=15)), "terminal 1.5% / 3.5%": (value(gt=0.015), value(gt=0.035)), } for name, (lo, hi) in sorted(swings.items(), key=lambda kv: kv[1][0] - kv[1][1]): print(f"{name:24} {lo:7.2f} to {hi:7.2f}") discount rate 10% / 8% 81.95 to 113.24 growth 3% / 7% 81.84 to 110.71 terminal 1.5% / 3.5% 87.47 to 105.65 growth years 5 / 15 87.76 to 101.31

Step 6 · Write the sentence, then argue one input. No code. Fill in the range sentence from your own output, then pick the input you would argue hardest and name the evidence you would bring. If you change any push, rerun Steps 3 to 5; your numbers will differ from the ones above, and that difference is the point.

★ Step 6 · the sentenceP&G, base ____ (ten-year mean owner earnings, all-capex approximation), ____ growth years, terminal ____ : value ____ to ____ a share across r ____ to ____ and g ____ to ____ ; ____ at the middle inputs. Input I would argue hardest: ______________________ Evidence that could narrow it: ____________________

Ship the grid, not the cell. Wherever this valuation travels, the grid and its inputs travel with it. A single cell lifted out of the table, with its row and column dropped, turns into a precise-looking number in somebody else's deck, which is exactly the false precision the grid was built to prevent.

Homework

Before Analyst session 7

30 min
  1. Run the grid for a second filer using its rung 3 base from the source data. Confirm its centre cell matches the value in the bench, then check that its range is the same multiple of its centre as P&G's, and write one sentence on why.
  2. Build a terminal growth by growth-years grid for P&G at a 9 percent discount rate. Your numbers will differ from the discount rate by growth grid; note which corner moves most and whether the tornado's ranking of those two inputs survives.
  3. Choose your own pushes. Decide how uncertain you honestly are about each of the four inputs, set the low and high settings to match, and redraw the tornado. Did the order change? Write the settings beside the chart.
  4. Argue one input in writing. In five sentences, defend a growth rate for P&G's next ten years using only what its filings show. Keep it; Analyst session 7 will test it against base rates.
Check yourself

Three questions

Clear all three and Analyst session 6 gets stamped in your passport.

1 · A tornado chart for P&G puts the discount rate on top, 81.95 to 113.24. What does that bar tell you?

A tornado bar is a one-at-a-time swing under the pushes you chose. It ranks inputs by how much they move the value, not by how uncertain they are, and it says nothing about two inputs moving together, which is what the grid adds.

2 · The 3 x 3 grid runs from 70.84 to 132.39, with 95.16 in the centre. What is the right way to report it?

The range, with the inputs that produced it, is the honest output. The centre is one combination of choices, the cells are not equally likely, so an average of them means little, and nothing in the grid is a target.

3 · You have ten minutes in a meeting to challenge a P&G valuation built on these defaults. Where should most of that time go?

Attention follows the swing. The discount rate and growth move the value most at these inputs; growth can meet evidence (about 3.1 percent a year in the filings), and terminal growth, carrying 57.0 percent of the value, must stay under Damodaran's cap. Precision in the code is not accuracy in the answer.

Sources covered

What this session teaches, and where it came from

✓The terminal growth cap: stable growth cannot exceed the economy's growth; the riskfree rate as a proxy for nominal growth; growth tied to reinvestment and return on capitalDamodaran, A., valuation class slides, terminal value session, NYU Stern, 2023 (read at source)
✓Owner earnings as a deliberate estimate; the capex term must be a guess; "vaguely right" rather than precisely wrongBuffett, W., Berkshire Hathaway shareholder letter, 1986, appendix (read at source)
✓P&G ten-year owner earnings 5.00 (4.998525); the grid 70.84 to 132.39; the four swings; terminal share 57.0 percent; the four filers' ranges; P&G's 3.84 to 5.90, about 3.1 percent a yearSEC EDGAR XBRL company facts, read from a public mirror after the SEC refused the build machine; computed, with values modelled under the inputs stated on the page
◐Why a higher discount rate means a lower value; moats as economicsTaught in Economics Foundations sessions 5 and 6; linked, not re-taught
◐Deriving a discount rate (cost of capital, betas)Named only; the rate is treated as a stated choice and shown as a range

Every fact on this page, and its verification tier, is recorded in the course's source map.

Analyst session 6 cheat sheet · pin this

TornadoMove one input at a time, hold the rest, sort widest first. Write the pushes beside it.
Bars are lopsidedA point off the discount rate adds more than a point on takes away.
The gridTwo inputs together. P&G: 70.84 to 132.39, 95.16 in the centre.
Report the rangeRange plus the inputs that made it. Never a lone cell.
Argue where it swingsDiscount rate and growth first; terminal growth under the economy's growth.
Precise is not accurateFull precision in the code, hard rounding in the sentence.