Reverse Discounted Cash Flow
Calculate the growth rate the share price implies, a reverse Discounted Cash Flow (DCF). Instead of estimating growth to arrive at a value, it takes the current share price as given and solves for the yearly cash flow growth over the projection periods at which the DCF value per share equals that price. The answer is the market’s expectation, which can then be compared with the company’s history: an implied growth far above what the company has achieved signals optimism.
The DCF is the same as in get_intrinsic_valuation, by default on the Free Cash Flow to the Firm:
For more information, see the following book:
- Mauboussin, M.J. and Rappaport, A. (2001). “Expectations Investing: Reading Stock Prices for Better Returns.” Harvard Business School Press.
Also known as: reverse DCF, market-implied growth, expectations investing.
Reverse Discounted Cash Flow in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_reverse_discounted_cash_flow as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["AAPL", "MSFT", "NVDA"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_reverse_discounted_cash_flow(weighted_average_cost_of_capital=0.09)
Or, after setting up the Finance Toolkit MCP, ask:
What growth rate do the share prices of Apple, Microsoft and Nvidia imply in a reverse discounted cash flow model at a 9% WACC, next to their historical growth from 2021 to 2025?
Which returns:
| Share Price | Cash Flow | Weighted Average Cost of Capital | Perpetual Growth Rate | Implied Growth Rate | Historical Growth Rate | |
|---|---|---|---|---|---|---|
| AAPL | 271.86 | 8.62639e+10 | 0.09 | 0.025 | 0.308 | 0.0545 |
| MSFT | 483.62 | 7.0121e+10 | 0.09 | 0.025 | 0.333 | 0.1183 |
| NVDA | 186.5 | 9.15284e+10 | 0.09 | 0.025 | 0.3182 | 0.8976 |
Parameters
get_reverse_discounted_cash_flow accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
perpetual_growth_rate | float | dict[str, float] | The growth after the projection periods, one number or a number per ticker. Defaults to 0.025. | 0.02 |
weighted_average_cost_of_capital | float | dict[str, float] | None | The discount rate, one number or a number per ticker. Defaults to None, which uses the latest Weighted Average Cost of Capital of each company, calculated over a year (the last 4 quarters with quarterly data) whatever trailing the cash flows use, as the rate is a yearly one. | 0.08 |
periods | int | The number of projection periods. Defaults to 5. | 5 |
cash_flow_type | str | The cash flow to project: “Free Cash Flow to Firm” (see get_free_cash_flow_to_firm), the cash flow to debt and equity holders that the WACC discounts into an enterprise value; or “Free Cash Flow” or “Operating Cash Flow” as reported, which are after interest (cash flows to equity), so that discounting them at the WACC and subtracting the debt counts the cost of debt twice. Defaults to “Free Cash Flow to Firm”. | "Operating Cash Flow" |
trailing | int | None | Sum the cash flow over this many periods (e.g. 4 quarters) instead of taking the latest one. Defaults to None, which sums the last 4 quarters (a trailing twelve months) for quarterly data and takes the latest year otherwise, as the projection periods are years. | 4 |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding. | 2 |