Interactive DCF Models
Build your own discounted-cash-flow view of a public company — per-year drivers, low/mid/high scenarios, saved and shareable scenarios, exports, and an AI assistant, all computed from SEC filings.
Every DCF template on a public company page is a fully interactive model. You can edit each projection year individually, adjust the discount-rate and terminal-value scenarios, watch the fair-value range recompute as you type, save named scenarios, share them by link, and export the whole model to CSV or Excel.
All inputs start from the company's SEC filings, normalized through SFRS. Prefilled values carry filing provenance; where a filing fact is missing, the model falls back to a labeled default that you can edit. There is no AI in the math — the model is a deterministic calculator over the assumptions you see.
Model output is user-generated analysis based on explicit assumptions. It is not issuer guidance, an analyst target, or investment advice. This disclaimer appears on every model page and inside every export.
Opening a model
Go to a company's terminal
Open the public company page at /c/{slug} (or via a ticker short link like
/t/BSY).
Open the Models tab
The Models tab lists every prebuilt template with its data state, so you
can see which filing facts back a model before opening it. The full gallery
also lives at /c/{slug}/models.
Pick a DCF template
Six DCF variants are interactive — terminal growth, EBITDA exit, and revenue
exit, each over a 5- or 10-year horizon. The model opens at
/c/{slug}/models/{templateKey} (for example
/c/bentley-systems-inc/models/dcf_5_year_terminal_growth).
No sign-in is required to open, edit, recompute, or export a model. Sign-in is only needed to save scenarios, create share links, and use the AI assistant.
Reading the summary header
The top of the page answers "what is this company worth under these assumptions" three ways:
- Fair Value card — the mid-scenario fair value per share, with the low–high range underneath. If the company's filings do not provide a share count, per-share fair value shows as "—" (the enterprise and equity values still compute — see the FAQ).
- Range vs. Conclusion table — each headline input (discount rate, and the exit multiple or terminal growth rate) with its low–high Range and the mid-scenario Conclusion, ending in the fair-value row.
- KPI tiles — revenue CAGR, average EBITDA margin, and unlevered free-cash-flow CAGR over the projection horizon, recomputed from your current assumptions.
A Stock Price card and Upside comparison appear only when licensed market data exists for the company. Until then the model shows fair value only — it never guesses a market price.
Editing assumptions
The input area is organized into seven tabs. Editable cells render as blue numeric inputs; computed rows are read-only and update as you type.
| Tab | What you edit |
|---|---|
| Revenue & EBITDA | Per-year revenue growth, EBITDA margin, and other income / (expense). |
| CapEx | Per-year capital expenditures as % of revenue. |
| Working Capital | Per-year net working capital as % of revenue. |
| D&A | Per-year depreciation & amortization as % of revenue. |
| Tax Rate | Per-year pro forma tax rate. |
| Discount Rate | The low, mid, and high discount rates. |
| Terminal Value | The low/mid/high exit multiple (exit variants) or terminal growth (perpetuity variants). |
How editing behaves:
- Per-year cells. Each projection year is its own input — you can model a margin dip in year 2 and a recovery in year 4. Unedited years keep their filing-seeded defaults.
- Debounced recompute. About half a second after you stop typing, the page sends all of your overrides to the compute API and refreshes every table. A "Recomputing…" indicator shows while a request is in flight.
- Modified markers. Overridden cells get an accent border and dot, so you can always see which numbers are yours and which came from filings.
- Reset. The Reset button clears every override and returns to the pristine filing-backed model.
- Guard rails. Filing-backed facts (such as base-year revenue) are not editable, and economically invalid combinations — for example a discount rate at or below terminal growth in a perpetuity model — are rejected with an explanation while the last good result stays on screen.
- History for context. The CapEx, Working Capital, and D&A tabs include filing-derived history tables (annual % of revenue with five-year averages, and the quarterly net-working-capital build-up) so you can anchor your projections. Effective-tax-rate history is not shown yet.
Understanding low, mid, and high
Every model computes three scenarios in one pass:
- Mid is the base case — the headline conclusion.
- Low pairs the highest discount rate with the lowest exit multiple (or terminal growth): the most conservative combination.
- High pairs the lowest discount rate with the highest multiple or growth.
When you change a mid assumption, the low and high band edges are re-derived around it automatically — unless you have pinned an edge yourself by editing it directly in the Discount Rate or Terminal Value tab.
Supporting calculations
The Supporting Calculations section is the model's full audit trail — the same tables an analyst would build in a spreadsheet:
- Free Cash Flow — the unlevered build-up per year: EBITDA, other income, D&A, EBIT, pro forma taxes, NOPAT, CapEx, working-capital investment, and free cash flow.
- Discounting Periods — the mid-year-convention timeline. Each year's cash flow is discounted from the midpoint of its period; year 1 runs from the latest reported balance-sheet date to the first projected fiscal year end, so a partial first year is weighted as a stub rather than a full year.
- Discounting Factors —
1 / (1 + r)^tper year for each scenario. - Enterprise Value — present values of the discrete cash flows, the terminal-value block, and enterprise value, all as low/mid/high triples.
- Equity Waterfall — enterprise value, plus cash, less total debt, to equity value, divided by shares outstanding, to fair value per share.
- Historical Financials — the company's filed annual history for reference.
Saving and sharing scenarios
Sign in to keep your work:
- Save stores your current assumption and driver overrides as a named scenario for this company and template. Saved scenarios appear in the Scenarios menu and are private to your account.
- Share copies a read-only link of the form
/c/{slug}/models/{templateKey}?scenario={token}. You must save a scenario before sharing — the link points at the saved overrides. - A share link exposes only the scenario's name and its overrides — never your identity or account. Anyone opening the link sees the model with your assumptions applied, and their further edits stay local to their page; they cannot change your saved scenario.
Exporting
Export as… downloads the model as CSV or Excel (multi-sheet XLSX). The export reflects exactly what is on screen — your current overrides included — and always embeds the no-advice disclaimer.
The AI assistant
The AI button opens a model assistant docked beside the tables (a bottom sheet on mobile). It is grounded in the model on screen — the SEC-derived inputs plus your own overrides — and it can:
- explain how the model gets from revenue growth to fair value,
- break down what drives the spread between the low and high scenarios,
- propose assumption changes, which appear as review cards. Nothing is applied until you press Apply; applied changes flow through the same recompute pipeline as manual edits, so the API stays the single source of model math.
The assistant will not tell you whether to buy or sell a security — it explains and adjusts the educational model, nothing more. Chat requires sign-in; your edits stay on the page either way.
Everything is available via API
Every action on the model page — computing with defaults, per-year driver
overrides, scenario save/share, and export — is a public or authenticated
REST endpoint. See the
Financial Model API reference for the
dcfDetail response block, driver override syntax, scenario endpoints, and
export formats.
Related pages
- Financial Model API reference
- Company Data API reference — company terminal and ticker resolution
- FAQ — Financial models
- Changelog