Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reverse DCF

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.

Features

  • 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

Install

python -m venv .venv
source .venv/bin/activate
pip install -e .

Usage

reverse-dcf AAPL --wacc 0.09 --terminal-growth 0.025 --forecast-years 10

Add an industry ceiling assumption if you want to test realism against a market size or sector maturity view:

reverse-dcf AAPL --industry-ceiling 0.08

Or run it as a module:

python -m reverse_dcf.cli MSFT

Local HTML App

Run the local Streamlit app:

streamlit run app.py

The 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.

Excel Upload Template

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

Example Interpretation

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.

Model Notes

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)

Important Limitations

  • yfinance data 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.

About

Excel output available, HTML version available

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages