Reverse DCF estimates the free cash flow growth rate already implied by a company's current market value.
The tool pulls market data and financial statements with yfinance, computes
free cash flow as operating cash flow minus capital expenditures, solves for the
market-implied FCF growth rate, compares it with historical FCF growth, and
exports a sensitivity matrix plus a chart.
- Automatic market cap, cash flow, cash, and debt pulls through
yfinance - Free cash flow history based on operating cash flow and capital expenditures
- Single-stage reverse DCF solver
- Two-stage model with a high-growth period followed by a fade period
- WACC and terminal growth sensitivity matrix
- Historical 5-10 year FCF CAGR comparison
- Forward earnings and revenue growth proxies when available from
yfinance - Optional industry ceiling check through
--industry-ceiling - Simple labels:
positive,reasonable,demanding,aggressive - Growth comparison chart
python -m venv .venv
source .venv/bin/activate
pip install -e .reverse-dcf AAPL --wacc 0.09 --terminal-growth 0.025 --forecast-years 10Add an industry ceiling assumption if you want to test realism against a market size or sector maturity view:
reverse-dcf AAPL --industry-ceiling 0.08Or run it as a module:
python -m reverse_dcf.cli MSFTRun the local Streamlit app:
streamlit run app.pyThe app runs in your browser on localhost. It supports two workflows:
- Pull data from
yfinance - Download an Excel upload template, paste in Capital IQ / Bloomberg / manual data, then upload the completed workbook
The app can export an Excel output workbook with formula-driven DCF schedules, sensitivity analysis, historical FCF comparison, and summary tabs.
Use the in-app button to download reverse_dcf_upload_template.xlsx.
Required inputs:
- Market cap
- Net debt
- WACC
- Terminal growth
- Forecast years
- Historical operating cash flow and capital expenditures, or direct FCF
The template calculates FCF as:
Free Cash Flow = Operating Cash Flow + Capital Expenditure
Capital expenditure is usually negative in Capital IQ / Bloomberg exports, so adding it to operating cash flow is equivalent to operating cash flow minus capex outflow.
Outputs are written to outputs/ by default:
{TICKER}_sensitivity.csv{TICKER}_growth_comparison.png
If the market-implied FCF growth rate is 8.6% and the company has compounded FCF at 15%+ for the last decade, the setup may look positive. If the historical FCF growth rate is closer to 5%, the same 8.6% implied rate may be demanding.
The model does not decide valuation by itself. It gives the investor a structured way to compare market expectations with historical execution, available forward growth proxies, analyst expectations, and realistic industry capacity.
Single-stage model:
Enterprise Value =
PV(forecast FCF grown at x) + PV(terminal value)
Two-stage model:
Enterprise Value =
PV(high-growth FCF period) + PV(fade-to-terminal-growth period) + PV(terminal value)
Terminal value uses the Gordon Growth formula:
Terminal Value = Final Year FCF * (1 + terminal growth) / (WACC - terminal growth)
yfinancedata can be incomplete or restated differently from company filings.- Financial companies and companies with negative or highly volatile FCF may need manual adjustments.
- Market cap is equity value; the model converts it to enterprise value by adding net debt when available.
- A reverse DCF is an expectations tool, not a standalone buy/sell signal.