Automating a DCF valuation across hundreds of tickers
- Automating a DCF is not about getting one company's fair value exactly right. It is about applying the same model and the same assumptions to every name, so the outputs are comparable and the universe can be ranked by implied upside.
- A point estimate is the wrong output. Run bear, base, and bull assumptions and rank by the margin of safety under conservative inputs - the names that look cheap even when you are pessimistic are the ones worth a manual deep-dive.
- One set of assumptions across all sectors is the most common mistake. Discount rate, growth path, and terminal assumptions have to vary by industry, or the ranking just sorts by sector.
- DCF breaks for negative or wildly volatile free cash flow. Screen those names out of the DCF pass rather than letting the model emit a confident number it has no business producing.
Building a discounted cash flow model for one company is a known quantity: an afternoon, a spreadsheet, a set of assumptions you can defend. Building one for every name in a universe is a different problem, and the mistake is to think the goal is the same - a precise fair value, just three hundred times over. It is not. A DCF is far too assumption-sensitive to be precise, and stacking three hundred imprecise valuations does not average into accuracy. The reason to automate a DCF across a universe is consistency: the same model, the same assumptions, applied to every name, so the outputs are comparable and you can rank. Here is how that actually works, and where it goes wrong.
Why consistency beats precision
A DCF's output moves enormously with small changes to the discount rate, the growth path, and the terminal assumption. That sensitivity is why a single-name DCF is really a way to structure your thinking, not a way to produce a number to two decimals. At scale, you lean into that: if every company is valued with the identical model and identical conservative assumptions, then the individual valuations are all wrong in the same direction by roughly the same logic - and the ranking between them becomes meaningful even though no single number is trustworthy.
So the output you want is not "Company X is worth $84." It is "under one consistent, conservative model, these twelve names show a margin of safety and these look expensive." That is a screen, and it is a legitimate use of a DCF in a way that a precise price target is not. The same logic - uniformity making a corpus rankable - is what makes reading earnings call transcripts at scale useful rather than just faster.
Run a range, not a point
A single point estimate hides the one thing that matters most: how fragile the valuation is. Run three scenarios per name - a bear, a base, and a bull set of assumptions - and rank on the bear case. A company that still shows upside when you assume mediocre growth and a high discount rate is a genuinely different find than one that only looks cheap under optimistic inputs. The spread between the three tells you how much the valuation is resting on assumptions versus on the current cash flows.
This also protects you from the DCF's favorite failure: a valuation where the terminal value is ninety percent of the total. If the bull and bear cases diverge wildly, the model is mostly pricing a guess about the distant future, and the "cheap" signal is noise.
The inputs, and where to get them per ticker
A workable universe-wide model needs, for every name:
| Input | What it is, and the trap |
|---|---|
| Free-cash-flow base | A normalized starting FCF, not a single lucky or unlucky year. A one-year base is how cyclicals get mis-valued. |
| Growth path | A declining growth rate over the forecast, ideally sector-aware. A flat high rate is the fastest way to a fantasy number. |
| Discount rate | A cost of capital that reflects the risk of the business. One rate for the whole market makes the ranking sort by sector risk. |
| Terminal assumption | A conservative perpetuity or exit multiple. Watch what fraction of value it represents - if it dominates, distrust the output. |
Free cash flow is the input worth being pickiest about, because it is the one the whole model rests on and the one that is hardest to fake - the reason it is a favorite for quality screening in general. Where the numbers come from is the primary filings, which is why a DCF pass and a filings pass belong in the same pipeline.
The four ways it breaks
- One set of assumptions for every sector. A single discount rate and growth path across software, utilities, and miners produces a ranking that mostly reflects which sector got assumptions that happened to flatter it. Vary the inputs by industry.
- Valuing companies a DCF cannot value. Negative or erratic free cash flow, early-stage growth names, and financials all produce confident nonsense. Screen them out of the DCF pass and value them another way.
- Terminal value dominance. When the terminal value is the overwhelming majority of the valuation, you are not valuing cash flows, you are pricing a guess. Flag and discount those.
- Look-ahead in any backtest. If you test the model on history using restated financials or numbers published after the fact, you will prove a strategy you could never have run. This is the same trap covered in why backtested screens fail live, and valuation models fall into it constantly.
Running it as a pipeline
In Cutonce this is a saved pipeline: a data node pulls normalized free cash flow and fundamentals for the universe, a model step computes intrinsic value per share under bear, base, and bull assumptions with sector-aware inputs, and the output is a table ranked by margin of safety in the conservative case - filtered to exclude the names where a DCF does not apply. It lands in a sheet or Slack, and reruns as estimates update, so the ranking stays current without rebuilding the model.
The analyst work is not replaced, it is aimed. Instead of building three hundred models or valuing the ten names you had time for, you get a ranked shortlist of the names that look cheap under assumptions you would actually defend, and you spend the afternoon on those. On the question of using a model to help set the growth and risk assumptions themselves, see which AI is best for equity research.
Note: this is not investment advice. An automated DCF produces a ranked list of candidates under a fixed set of assumptions, not a fair value or a price target, and it is only as good as those assumptions. Verify any name with your own model and judgment before acting on it.
Frequently asked
Can you run a DCF across hundreds of stocks automatically? Yes, and the reason to is consistency rather than precision. You define one model - free-cash-flow base, a growth path, a discount rate, and a terminal assumption - pull the inputs for every ticker, compute an intrinsic value per share, and compare it to the current price to get a margin of safety you can rank on. The automation makes the outputs comparable across names, which is what turns a valuation exercise into a screen. It does not make any single DCF more accurate.
Is an automated DCF accurate enough to trust? Not as a precise fair value - no DCF is, because the output is dominated by assumptions about growth, the discount rate, and terminal value. What an automated DCF is good for is sorting a universe under a consistent, conservative set of assumptions and flagging names that look cheap even when you are pessimistic. Treat the output as a ranked list of candidates for real work, not as a price target.
What are the biggest mistakes in a DCF at scale? Four. Using one set of assumptions (discount rate, growth, terminal) across every sector, which makes the ranking sort by industry. Running a single point estimate instead of a bear/base/bull range. Letting the model produce a number for companies with negative or erratic free cash flow, where a DCF is meaningless. And backtesting it with restated or look-ahead data instead of the numbers you would actually have had at the time.
When is a DCF the wrong tool? For early-stage companies with negative free cash flow, highly cyclical businesses where a single-year base is misleading, financials and other balance-sheet-driven models, and any situation where terminal value ends up as almost the entire valuation. In those cases a DCF produces a confident number with no real support. A universe-wide pass should screen those names out and value them another way.