Value is an estimate: discounting, growth and the margin of safety

On this page
  1. A dollar later is worth less than a dollar now
  2. A stream of payments
  3. A discounted cash flow, and where the answer lives
  4. Book value is accounting, not value
  5. Being right about value is not a good trade
  6. Traps
  7. The code
  8. Summary
  9. References

Every valuation is the same calculation: list the cash a thing will pay in the future, and pull each payment back to today. The whole art is in two guesses, and most of what follows is how much those guesses move the answer.

the estimated valuethe discount rate, the price of waitingthe cash received

A dollar later is worth less than a dollar now

Because a dollar now can earn interest. If money earns rr a year, then $100 today becomes 100(1+r)100(1 + r) in a year, so $100 due in a year is worth 100/(1+r)100 / (1 + r) today. To bring a payment nn years away back to today, divide by (1+r)(1 + r) once per year:

PV=FV(1+r)n\key{PV} = \frac{\good{FV}}{(1 + \risk{r})^n}
Table 1. Present value of a future payment at several rates and horizons
CaseWorkingValue today
$121 in 2 years at 10%121 / 1.21$100.00
the same at 12%121 / 1.2544$96.46
$10,000 in 1 year at 10%10,000 / 1.10$9,090.91
$10,000 in 2 years at 10%10,000 / 1.21$8,264.46
$1 in 50 years at 8%1 / 46.9$0.02

A higher discount rate means a lower value today: the second row of Table 1 is the first row with the rate two points higher, and it shaved 3.5%. The last row, and the first panel of Figure 1, is why distant cash barely matters: fifty years out at 8%, a dollar is two cents.

{"panels":[{"x0":55.16,"x1":565.2,"y0":29.16,"y1":220.21,"title":"1. What 100 dollars in each future year is worth today, at three discount rates","xlabel":"Years from now","ylabel":"Value today of 100 dollars (dollars)","xlog":false},{"x0":55.16,"x1":565.2,"y0":308.89,"y1":499.94,"title":"2. Gordon growth: the price of a 2 dollar dividend explodes as growth approaches the discount rate","xlabel":"Long-run dividend growth (% a year), discount rate fixed at 10%","ylabel":"Price (dollars)","xlog":false},{"x0":55.16,"x1":565.2,"y0":588.62,"y1":779.68,"title":"3. A five-year DCF: the answer against the two guesses that drive it","xlabel":"Discount rate (% a year)","ylabel":"Value today (dollars; the base case is 1,816)","xlog":false}],"series":[{"panel":0,"label":"discount rate 5%","color":"var(--chart-green, #3f8f45)","kind":"line","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0],"y":[100.0,95.2381,90.7029,86.3838,82.2702,78.3526,74.6215,71.0681,67.6839,64.4609,61.3913,58.4679,55.6837,53.0321,50.5068,48.1017,45.8112,43.6297,41.5521,39.5734,37.6889,35.8942,34.185,32.5571,31.0068,29.5303,28.1241,26.7848,25.5094,24.2946,23.1377],"sx":[78.35,93.8,109.26,124.71,140.17,155.62,171.08,186.54,201.99,217.45,232.9,248.36,263.81,279.27,294.73,310.18,325.64,341.09,356.55,372.0,387.46,402.92,418.37,433.83,449.28,464.74,480.19,495.65,511.11,526.56,542.02],"sy":[37.84,46.24,54.24,61.85,69.11,76.02,82.6,88.86,94.83,100.51,105.93,111.08,115.99,120.67,125.12,129.36,133.4,137.25,140.91,144.4,147.73,150.89,153.91,156.78,159.51,162.11,164.59,166.96,169.2,171.35,173.39]},{"panel":0,"label":"discount rate 10%","color":"var(--chart-maroon, #b6262c)","kind":"line","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0],"y":[100.0,90.9091,82.6446,75.1315,68.3013,62.0921,56.4474,51.3158,46.6507,42.4098,38.5543,35.0494,31.8631,28.9664,26.3331,23.9392,21.7629,19.7845,17.9859,16.3508,14.8644,13.5131,12.2846,11.1678,10.1526,9.2296,8.39055,7.62777,6.93433,6.30394,5.73086],"sx":[78.35,93.8,109.26,124.71,140.17,155.62,171.08,186.54,201.99,217.45,232.9,248.36,263.81,279.27,294.73,310.18,325.64,341.09,356.55,372.0,387.46,402.92,418.37,433.83,449.28,464.74,480.19,495.65,511.11,526.56,542.02],"sy":[37.84,53.87,68.45,81.7,93.74,104.69,114.65,123.7,131.92,139.4,146.2,152.38,158.0,163.11,167.75,171.97,175.81,179.3,182.47,185.36,187.98,190.36,192.53,194.5,196.29,197.91,199.39,200.74,201.96,203.07,204.08]},{"panel":0,"label":"discount rate 15%","color":"var(--chart-blue, #3b6ea5)","kind":"line","x":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0],"y":[100.0,86.9565,75.6144,65.7516,57.1753,49.7177,43.2328,37.5937,32.6902,28.4262,24.7185,21.4943,18.6907,16.2528,14.1329,12.2894,10.6865,9.29259,8.08051,7.02653,6.11003,5.31307,4.62006,4.01744,3.49343,3.03776,2.64153,2.29699,1.99738,1.73685,1.51031],"sx":[78.35,93.8,109.26,124.71,140.17,155.62,171.08,186.54,201.99,217.45,232.9,248.36,263.81,279.27,294.73,310.18,325.64,341.09,356.55,372.0,387.46,402.92,418.37,433.83,449.28,464.74,480.19,495.65,511.11,526.56,542.02],"sy":[37.84,60.84,80.85,98.24,113.36,126.51,137.95,147.89,156.54,164.06,170.6,176.29,181.23,185.53,189.27,192.52,195.34,197.8,199.94,201.8,203.42,204.82,206.04,207.11,208.03,208.83,209.53,210.14,210.67,211.13,211.53]},{"panel":1,"label":"price = 2 / (10% \u2212 growth)","color":"var(--chart-maroon, #b6262c)","kind":"line","x":[0.0,0.0477387,0.0954774,0.143216,0.190955,0.238693,0.286432,0.334171,0.38191,0.429648,0.477387,0.525126,0.572864,0.620603,0.668342,0.71608,0.763819,0.811558,0.859296,0.907035,0.954774,1.00251,1.05025,1.09799,1.14573,1.19347,1.24121,1.28894,1.33668,1.38442,1.43216,1.4799,1.52764,1.57538,1.62312,1.67085,1.71859,1.76633,1.81407,1.86181,1.90955,1.95729,2.00503,2.05276,2.1005,2.14824,2.19598,2.24372,2.29146,2.3392,2.38693,2.43467,2.48241,2.53015,2.57789,2.62563,2.67337,2.72111,2.76884,2.81658,2.86432,2.91206,2.9598,3.00754,3.05528,3.10302,3.15075,3.19849,3.24623,3.29397,3.34171,3.38945,3.43719,3.48492,3.53266,3.5804,3.62814,3.67588,3.72362,3.77136,3.8191,3.86683,3.91457,3.96231,4.01005,4.05779,4.10553,4.15327,4.20101,4.24874,4.29648,4.34422,4.39196,4.4397,4.48744,4.53518,4.58291,4.63065,4.67839,4.72613,4.77387,4.82161,4.86935,4.91709,4.96482,5.01256,5.0603,5.10804,5.15578,5.20352,5.25126,5.29899,5.34673,5.39447,5.44221,5.48995,5.53769,5.58543,5.63317,5.6809,5.72864,5.77638,5.82412,5.87186,5.9196,5.96734,6.01508,6.06281,6.11055,6.15829,6.20603,6.25377,6.30151,6.34925,6.39698,6.44472,6.49246,6.5402,6.58794,6.63568,6.68342,6.73116,6.77889,6.82663,6.87437,6.92211,6.96985,7.01759,7.06533,7.11307,7.1608,7.20854,7.25628,7.30402,7.35176,7.3995,7.44724,7.49497,7.54271,7.59045,7.63819,7.68593,7.73367,7.78141,7.82915,7.87688,7.92462,7.97236,8.0201,8.06784,8.11558,8.16332,8.21106,8.25879,8.30653,8.35427,8.40201,8.44975,8.49749,8.54523,8.59296,8.6407,8.68844,8.73618,8.78392,8.83166,8.8794,8.92714,8.97487,9.02261,9.07035,9.11809,9.16583,9.21357,9.26131,9.30905,9.35678,9.40452,9.45226,9.5],"y":[20.0,20.0959,20.1928,20.2906,20.3893,20.4891,20.5898,20.6914,20.7941,20.8979,21.0026,21.1085,21.2154,21.3233,21.4324,21.5426,21.654,21.7665,21.8802,21.995,22.1111,22.2284,22.347,22.4668,22.588,22.7104,22.8342,22.9593,23.0858,23.2138,23.3431,23.4739,23.6062,23.7399,23.8752,24.0121,24.1505,24.2905,24.4322,24.5755,24.7205,24.8672,25.0157,25.166,25.3181,25.472,25.6278,25.7856,25.9452,26.1069,26.2706,26.4364,26.6043,26.7743,26.9465,27.121,27.2977,27.4767,27.6581,27.8419,28.0282,28.2169,28.4083,28.6022,28.7988,28.9982,29.2003,29.4052,29.6131,29.8239,30.0377,30.2547,30.4747,30.698,30.9246,31.1546,31.388,31.625,31.8655,32.1097,32.3577,32.6096,32.8654,33.1253,33.3893,33.6575,33.9301,34.2071,34.4887,34.775,35.0661,35.3621,35.6631,35.9693,36.2808,36.5977,36.9202,37.2485,37.5826,37.9228,38.2692,38.622,38.9814,39.3475,39.7206,40.1008,40.4883,40.8834,41.2863,41.6972,42.1164,42.5441,42.9806,43.4261,43.8809,44.3454,44.8198,45.3045,45.7998,46.306,46.8235,47.3528,47.8941,48.448,49.0148,49.595,50.1892,50.7977,51.4212,52.0602,52.7152,53.387,54.0761,54.7832,55.5091,56.2544,57.0201,57.8068,58.6156,59.4473,60.303,61.1837,62.0905,63.0245,63.9871,64.9796,66.0033,67.0598,68.1507,69.2776,70.4425,71.6472,72.8938,74.1845,75.5218,76.9082,78.3465,79.8395,81.3906,83.0031,84.6809,86.4278,88.2483,90.1472,92.1296,94.2012,96.368,98.6369,101.015,103.511,106.133,108.892,111.798,114.863,118.101,121.527,125.157,129.011,133.11,137.478,142.143,147.135,152.49,158.25,164.463,171.183,178.475,186.417,195.098,204.627,215.135,226.781,239.759,254.313,270.748,289.455,310.937,335.865,365.138,400.0],"sx":[78.35,80.68,83.01,85.34,87.67,90.0,92.33,94.66,96.99,99.32,101.65,103.98,106.31,108.64,110.97,113.3,115.63,117.96,120.29,122.62,124.95,127.28,129.61,131.94,134.27,136.6,138.93,141.26,143.59,145.92,148.25,150.58,152.91,155.24,157.57,159.9,162.23,164.56,166.89,169.22,171.55,173.88,176.21,178.54,180.87,183.2,185.53,187.86,190.19,192.52,194.85,197.18,199.51,201.84,204.17,206.5,208.83,211.16,213.49,215.82,218.15,220.48,222.81,225.14,227.47,229.8,232.13,234.46,236.79,239.12,241.45,243.78,246.11,248.44,250.77,253.1,255.43,257.76,260.09,262.42,264.75,267.08,269.41,271.74,274.07,276.4,278.73,281.06,283.39,285.72,288.05,290.38,292.71,295.04,297.37,299.7,302.03,304.36,306.69,309.02,311.35,313.68,316.01,318.34,320.67,323.0,325.33,327.66,329.99,332.32,334.65,336.98,339.31,341.64,343.97,346.3,348.63,350.96,353.29,355.62,357.95,360.28,362.61,364.94,367.27,369.6,371.93,374.26,376.59,378.92,381.25,383.58,385.91,388.24,390.57,392.9,395.23,397.56,399.89,402.22,404.55,406.88,409.21,411.54,413.87,416.2,418.53,420.86,423.19,425.52,427.85,430.18,432.51,434.84,437.17,439.5,441.83,444.16,446.49,448.82,451.15,453.48,455.81,458.14,460.47,462.8,465.13,467.46,469.79,472.12,474.45,476.78,479.11,481.44,483.77,486.1,488.43,490.76,493.09,495.42,497.75,500.08,502.41,504.74,507.07,509.4,511.73,514.06,516.39,518.72,521.05,523.38,525.71,528.04,530.37,532.7,535.03,537.36,539.69,542.02],"sy":[480.84,480.75,480.65,480.56,480.47,480.37,480.28,480.18,480.08,479.98,479.88,479.78,479.68,479.57,479.47,479.37,479.26,479.15,479.04,478.93,478.82,478.71,478.6,478.48,478.37,478.25,478.13,478.01,477.89,477.77,477.65,477.52,477.39,477.27,477.14,477.01,476.87,476.74,476.61,476.47,476.33,476.19,476.05,475.9,475.76,475.61,475.46,475.31,475.16,475.01,474.85,474.69,474.53,474.37,474.2,474.04,473.87,473.7,473.52,473.35,473.17,472.99,472.81,472.62,472.43,472.24,472.05,471.85,471.66,471.45,471.25,471.04,470.83,470.62,470.4,470.18,469.96,469.73,469.5,469.27,469.03,468.79,468.55,468.3,468.05,467.79,467.53,467.27,467.0,466.72,466.45,466.16,465.88,465.58,465.29,464.98,464.68,464.36,464.04,463.72,463.39,463.05,462.71,462.36,462.0,461.64,461.27,460.89,460.5,460.11,459.71,459.3,458.89,458.46,458.03,457.58,457.13,456.67,456.19,455.71,455.22,454.71,454.19,453.66,453.12,452.57,452.0,451.42,450.82,450.21,449.59,448.95,448.29,447.61,446.92,446.21,445.47,444.72,443.95,443.16,442.34,441.5,440.63,439.74,438.82,437.87,436.89,435.88,434.84,433.77,432.65,431.5,430.31,429.08,427.8,426.48,425.1,423.68,422.19,420.65,419.05,417.38,415.64,413.83,411.94,409.96,407.89,405.72,403.45,401.06,398.56,395.92,393.15,390.22,387.13,383.85,380.39,376.7,372.79,368.62,364.16,359.39,354.28,348.77,342.84,336.42,329.45,321.87,313.57,304.47,294.43,283.31,270.91,257.01,241.31,223.44,202.92,179.1,151.14,117.84]},{"panel":1,"label":"growth 4%: 33.33","color":"var(--chart-blue, #3b6ea5)","kind":"scatter","x":[4.0],"y":[33.3333],"sx":[273.58],"sy":[468.1]},{"panel":2,"label":"long-run growth 0%","color":"var(--chart-grey, #a3a19c)","kind":"line","x":[7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0],"y":[2010.78,1750.0,1547.48,1385.72,1253.6,1143.69,1050.87,971.466],"sx":[78.35,144.58,210.82,277.06,343.3,409.54,475.78,542.02],"sy":[735.2,744.18,751.15,756.73,761.28,765.06,768.26,770.99]},{"panel":2,"label":"long-run growth 2%","color":"var(--chart-blue, #3b6ea5)","kind":"line","x":[7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0],"y":[2651.32,2200.0,1877.92,1636.61,1449.13,1299.32,1176.91,1075.03],"sx":[78.35,144.58,210.82,277.06,343.3,409.54,475.78,542.02],"sy":[713.13,728.68,739.77,748.08,754.54,759.7,763.92,767.43]},{"panel":2,"label":"long-run growth 3%","color":"var(--chart-maroon, #b6262c)","kind":"line","x":[7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0],"y":[3211.79,2560.0,2125.76,1815.82,1583.56,1403.08,1258.83,1140.94],"sx":[78.35,144.58,210.82,277.06,343.3,409.54,475.78,542.02],"sy":[693.83,716.28,731.24,741.91,749.91,756.13,761.1,765.16]},{"panel":2,"label":"long-run growth 5%","color":"var(--chart-amber, #c0781a)","kind":"line","x":[7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0],"y":[6014.15,4000.0,2993.18,2389.29,1986.85,1699.52,1484.13,1316.69],"sx":[78.35,144.58,210.82,277.06,343.3,409.54,475.78,542.02],"sy":[597.31,666.68,701.36,722.16,736.02,745.92,753.34,759.1]}]} 2026-10-31T01:56:21.399231 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/ 0 5 10 15 20 25 30 Years from now 0 20 40 60 80 100 Value today of 100 dollars (dollars) 1. What 100 dollars in each future year is worth today, at three discount rates discount rate 5% discount rate 10% discount rate 15% 0 2 4 6 8 Long-run dividend growth (% a year), discount rate fixed at 10% 0 25 50 75 100 125 150 175 200 Price (dollars) 2. Gordon growth: the price of a 2 dollar dividend explodes as growth approaches the discount rate price = 2 / (10% − growth) growth 4%: 33.33 7 8 9 10 11 12 13 14 Discount rate (% a year) 1000 2000 3000 4000 5000 6000 Value today (dollars; the base case is 1,816) 3. A five-year DCF: the answer against the two guesses that drive it long-run growth 0% long-run growth 2% long-run growth 3% long-run growth 5%
Figure 1. Discounting over time, the Gordon price against growth, and a DCF's sensitivity

The discount rate is what the money could earn elsewhere at similar risk: a broad index fund for a stock, a government bond for something safe. Pick it too low and everything looks cheap.

A stream of payments

A stock is a stream of dividends. Add up the present value of each (Table 2):

Table 2. Present value of a stream of one-dollar payments at 8%
StreamWorkingValue today
$1 a year for 10 years at 8%sum of 1 / 1.08ᵏ$6.71
$1 a year forever at 8%1 / 0.08$12.50

The forever case has a one-line answer, D/rD / r, and it is the limit of the ten-year sum as the years pile up: the payments beyond year ten are worth $5.79 in total, most of it from the first few of them. If the dividend also grows at a steady rate gg, the Gordon growth formula gives:

P0=D1r−gfor r>g\key{P_0} = \frac{\good{D_1}}{\risk{r} - g} \qquad \text{for } r > g

Price equals next year’s dividend divided by the gap between the discount rate and the growth rate. The gap in the denominator is the whole story (Table 3):

Table 3. Gordon price for several dividend, rate and growth combinations
Next dividendrrggWorkingPrice
$310%5%3 / 0.05$60.00
$210%4%2 / 0.06$33.33
$210%5%2 / 0.05$40.00\key{\usd 40.00}: one point of growth is +20% of value
$210%8%2 / 0.02$100.00
$210%9.5%2 / 0.005$400.00

As gg creeps towards rr the denominator shrinks towards zero and the price explodes; at g≥rg \ge r the formula gives nonsense, because a dividend growing as fast as the discount rate is worth an infinite amount. The second panel of Figure 1 draws the curve. No company grows faster than the economy forever, so the long-run gg is always a few percent, and a model that needs 8% to justify a price is a model that has already failed.

A discounted cash flow, and where the answer lives

A DCF forecasts a few years of cash flows explicitly, then handles everything after with a Gordon-style terminal value. A small one: $100 of cash this year, growing 8% a year for five years, then 3% forever, discounted at 10% (Table 4).

Table 4. A five-year DCF split into explicit years and terminal value
PartWorkingValue today
Years 1 to 5, explicitfive discounted cash flows$473
Terminal value, years 6 onwardyear-5 cash ×\times 1.03 / (0.10 − 0.03), discounted 5 years$1,342\key{\usd 1{,}342}
Total$1,816

Three quarters of the value is the terminal value, the part that rests on one long-run growth guess and one discount rate. Change either and the answer moves more than the whole explicit forecast is worth (Table 5):

Table 5. DCF value by discount rate and long-run growth
Itemgg = 0%2%3%5%
rr = 8%$1,750$2,200$2,560$4,000
rr = 10%$1,386$1,637$1,816\key{\usd 1{,}816}$2,389
rr = 12%$1,144$1,299$1,403$1,700

The honest range is $1,144 to $4,000 for the same business, depending on two numbers nobody can verify. That is why a practitioner works with a range and a margin of safety rather than a point: estimate the value, then only buy well below it.

margin of safety=value−pricevalue\key{\text{margin of safety}} = \frac{\text{value} - \text{price}}{\text{value}}
Table 6. Margin of safety worked three ways
CaseWorkingResult
Value $62.50, price $50(62.50 − 50) / 62.5020% margin, divided by value
Want a 25% margin on a value of $8080×0.7580 \times 0.75buy at $60 or below
Scenarios: 25% chance $40, 50% $60, 25% $9010 + 30 + 22.5expected value $62.50

The last row of Table 6 is the expected value of a valuation under several futures, and it is still one number: one of the three scenarios will happen, not the average.

Book value is accounting, not value

A company’s book value is its assets minus its liabilities on the balance sheet, which carries assets at cost less depreciation. Assets $500M, liabilities $320M, 30 million shares: book value $180M, $6 a share. At a price of $9 the price-to-book ratio is 1.5. A ratio above 1 is normal, because a working business is worth more than its parts sold off: the brand, the customers and the growth are not on the balance sheet. A ratio below 1 can mean a bargain or a business in trouble; the number alone does not say which. In a forced sale, book value can overstate what the assets fetch.

Being right about value is not a good trade

The gap between price and value pays only if it closes, and only if you are still there when it does. A stock can stay mispriced for years; a short position (borrowed shares sold, to be bought back later) loses without limit while the price keeps rising; a margin call, the broker’s demand for more cash when a position bought with borrowed money falls, can force a sale at the worst moment. Value tells you what to own. It does not tell you when the market will agree, and the market is under no obligation to.

Traps

Table 7 is the list of mistakes, with the fix beside each.

Table 7. Traps in valuation and what is true instead
TrapTruth
A higher discount rate raises the valueIt lowers it
Gordon works for any growth rateOnly for g<rg < r, and gg is a few percent at most
The explicit forecast is most of a DCFThe terminal value usually is
Margin of safety divides by the priceBy the value
A positive expected value means you cannot loseOne scenario happens
Price-to-book below 1 means cheapOr trouble
The price reveals the true valueThe price is where the last trade happened

The code

Every number above, in plain Python with no libraries, so it runs as pasted. Each function is one formula from above; the print lines reproduce the tables.

def present_value(cash, rate, years):
    return cash / (1 + rate) ** years                     # divide by (1 + rate) once per year

def gordon(next_dividend, rate, growth):
    assert growth < rate, "the formula only works when growth is below the discount rate"
    return next_dividend / (rate - growth)

def dcf(cash0=100, growth=0.08, rate=0.10, g_term=0.03, years=5):
    flows = [cash0 * (1 + growth) ** k for k in range(1, years + 1)]           # years 1 to 5
    explicit = sum(cf / (1 + rate) ** k for k, cf in enumerate(flows, 1))      # their value today
    terminal = flows[-1] * (1 + g_term) / (rate - g_term) / (1 + rate) ** years  # years 6 onward
    return explicit, terminal, explicit + terminal

margin = lambda value, price: (value - price) / value     # divide by the value, not the price

print(round(present_value(121, 0.10, 2), 2), round(present_value(121, 0.12, 2), 2))   # 100.0  96.46
print(round(sum(present_value(1, 0.08, k) for k in range(1, 11)), 2), 1 / 0.08)   # 6.71  12.5
print(gordon(2, 0.10, 0.05))                              # 40.0
print([round(x) for x in dcf()])                          # [473, 1342, 1816]
for r in (0.08, 0.10, 0.12):                              # the sensitivity table
    print(r, [round(dcf(rate=r, g_term=g)[2]) for g in (0.0, 0.02, 0.03, 0.05)])
print(margin(62.50, 50))                                  # 0.2

It prints 100.0 and 96.46, then 6.71 and 12.5, then 40.0, then the DCF’s three parts [473, 1342, 1816], then the sensitivity table row by row, then 0.2. round(x) drops the decimals, and enumerate(flows, 1) numbers the cash flows from year 1. dcf(rate=r, g_term=g) changes only those two inputs and keeps the others at their defaults.

Summary

Table 8 collects the formulas.

Table 8. Formulas worth remembering
IdeaFormulaRemember it as
Present valueFV/(1+r)nFV / (1 + r)^ndivide once per year
PerpetuityD/rD / r$1 forever at 8% is $12.50
Gordon growthD1/(r−g)D_1 / (r - g)the gap in the denominator
Terminal valuelast cash ×(1+g)/(r−g)\times (1 + g) / (r - g)most of the answer
Margin of safety(value − price) / valuebuy well below the estimate
Book valueassets − liabilitiesaccounting, not worth

References

Tagged finance, valuation, statistics← Home