Expectations Calculator v2
Inputs
Result
- Mode
- Solver status
- Enterprise value (target)
- Model enterprise value
- Value per share
- Terminal share of value
Growth versus required margin
Each row holds a different constant revenue CAGR for the whole explicit horizon and re-solves the Year-H EBIT margin needed to reconcile the same enterprise value. Every row is equally consistent with today's price — which is exactly why one solved figure is a conditional requirement, not a market forecast.
| Revenue CAGR | Required Year-H EBIT margin | Note |
|---|
Bridge to enterprise value
- Price per share
- Shares outstanding
- Equity market value
- + Total debt
- + Minority interest
- − Cash and equivalents
- − Non-operating assets
- = Enterprise value (target)
Baseline operating anchors
- Baseline period
- Baseline revenue
- Baseline operating income (EBIT)
- Baseline EBIT margin
- NOPAT (cash tax — used for free cash flow)
- NOPAT (operating — used for the capital closure)
- Tax rate on operating profit (before NOL)
- Terminal tax rate (before NOL)
- Normalised rate (capital closure)
- Tax treatment of losses
Revenue growth measures
Three distinct measures of revenue growth. Only the one named as the measure used feeds the revenue path; the EBIT margin path is a separate assumption, shown under “Forecast paths” below.
- Annual revenue growth (latest FY vs prior FY)
- Year-to-date revenue growth vs the same period last year
- Trailing-twelve-month revenue growth vs the TTM a year earlier
- Measure used for the revenue path
Capital diagnostics
- Invested capital (base year)
- Source
- Historical aggregate ROIC (diagnostic — never funds growth)
- Reinvestment method (explicit years)
- Forward incremental ROIC assumed (ROIIC)
- Sales-to-capital ratio
- Reinvestment rate (share of operating NOPAT)
- Cumulative implied incremental ROIC (from the plan)
- Consistency gap (implied − assumed reference)
Discounting
- WACC
- Terminal growth
- Explicit horizon (H)
- Convention
Forecast paths and the year-by-year table
- Revenue growth path
- EBIT margin path
Per year: revenue grows at the year's rate; EBIT = revenue × the year's margin; cash-tax NOPAT = EBIT less tax at the year's rate (after any NOL shield — the shielded amount is its own column); operating NOPAT = EBIT × (1 − the normalised rate); reinvestment comes from the selected method (the formula column names it); FCF = cash-tax NOPAT − reinvestment; PV of FCF = FCF ÷ the discount divisor.
| Yr | Revenue growth | Revenue | EBIT margin | EBIT | Tax rate | NOL shielded | NOPAT (cash tax) | NOPAT (operating) | Reinvestment | Formula used | Implied ROIIC | FCF | Discount divisor | PV of FCF |
|---|
Terminal
The perpetuity is built, not extrapolated: terminal revenue × the Year-H margin, taxed at the terminal rate. Growing Year-H NOPAT instead would carry whatever tax position Year H happened to be in — a loss carry-forward still in force, a transitional rate — into perpetuity.
- Terminal revenue
- EBIT margin (held from year H)
- Terminal EBIT
- Tax at the terminal rate
- Terminal NOPAT
- Terminal reinvestment rate
- Rate from
- Implied return on new capital, in perpetuity
- Terminal reinvestment
- Terminal free cash flow
- Terminal value at the horizon
- Present value of the terminal value
- Present value of the explicit years
- Terminal share of model value
Loss carry-forward remaining at the horizon
Whatever is left of the accumulated losses at the end of the explicit window is a finite tax asset: its remaining shields are scheduled against post-horizon profit until the balance is used up, discounted, and added as their own component of value. The operating perpetuity above pays the full terminal rate.
- Balance remaining at year H
- Years of shields after the horizon
- Present value of those shields
- Balance never absorbed (worth nothing)
Enterprise value to per share
- Model enterprise value
- Model EV − market EV (residual)
- Equity value
- Shares used for the bridge
- Value per share
- Versus the entered price
Solver
- Quantity solved
- Status
- Solved value
- Bounds searched
- Direction over the interval
- Iterations
- Residual (model EV − target EV)
- Residual as a share of the target
At the edge of the searched window
Reported when the model moves one way across the bounds and never reaches the market's enterprise value: no solution can exist inside the window, and the model was still evaluated at both ends. This is how far it remains from the market there — the figure a write-up needs in order to cite a “no solution in this window” finding as evidence rather than as a shrug. It is not reported for a non-monotone objective, where the ends say nothing about what happens between them.
- Lowest assumption searched
- Model enterprise value there
- Highest assumption searched
- Model enterprise value there
- Market enterprise value (target)
- Closest bound
- Assumption at the closest bound
- Model enterprise value at the closest bound
- Shortfall / overshoot vs the target
- …as a share of the target
Is the assumption identifiable?
Reported when model enterprise value rises and falls across the bounds — or does not move at all. Price then does not pin the solved assumption down, and the two ends of the window are not evidence that no solution exists: the sampled path may cross the market's value several times in between. What the probe can honestly say is the range it covered, where it crossed, which sampled assumptions reconciled the price outright, and that a finite sample settles no root count.
A crossing and a sampled hit are different evidence and are counted separately: a crossing says the model passed through the market's value somewhere between two samples, while a hit is a sampled assumption the solver itself would have accepted (residual within tolerance). Either one establishes that at least one solution exists in the window; neither establishes how many.
- Assumption probed
- Window probed
- Samples taken
- Lowest model enterprise value
- …at
- Highest model enterprise value
- …at
- Market enterprise value (target)
- Sampled range crosses the target?
- Sampled intervals with a crossing
- Where
- Sampled assumptions reconciling the price
- Where
- Residual tolerance
Convergence
Reported when a solution was bracketed inside the window but the search could not bring the residual inside tolerance. The finding is about the search, so it is the final bracket, the last value tried and the residual that are shown — the window it started in is not the result.
- Final bracket
- Last candidate
- Model enterprise value there
- Residual
- Residual as a share of the target
- Tolerance
- Iterations
Scenario identity
- Schema version (this build)
- Model version (this build)
- Schema version (from the link)
- Model version (from the link)
- Filing mode
- Currency
- Unit scale
- Valuation date
- Fundamentals date
- Label
autorun=1) when the scenario actually
validates — an incomplete one pre-fills the form instead.
How this calculator works
The three modes
- Reverse margin. Growth, reinvestment, tax and discounting are fixed; the Year-H EBIT margin is solved so that model enterprise value equals today's. This is a reverse-DCF.
- Reverse growth. The margin path is fixed; a constant revenue CAGR is solved instead. Also a reverse-DCF.
- Forward. Everything is specified and the model simply prices it. Nothing is solved, so this output is not market-implied and is never described as a reverse-DCF.
A solved number answers “what does this price require, given everything else I entered?” It does not answer “what does the market believe?” — countless combinations of growth and margin reconcile the same price, which is what the growth-versus-margin table shows.
Reinvestment
Growth is funded by exactly one method per run:
- Incremental ROIC. Reinvestment = the change in operating NOPAT ÷ the return you expect on newly deployed capital. Operating NOPAT is EBIT at one normalised tax rate, so a tax rate that drifts across the horizon — or a loss carry-forward running out — cannot read as operating growth that has to be funded, or as operating decline that releases capital. Cash tax, with every shield, still flows into free cash flow untouched; the year table shows both. This is a forward assumption; the historical aggregate return shown in the diagnostics is a separate quantity and never funds the path.
- Sales-to-capital. Reinvestment = ΔRevenue ÷ the ratio. Useful when a business is better described by the capital a unit of revenue needs than by the return capital earns.
- Share of NOPAT. Reinvestment = operating NOPAT × a rate you set — the classic reinvestment-rate framing, and the explicit-year analogue of the terminal rate. The rate applies to operating NOPAT (EBIT at the normalised tax rate), so tax timing cannot move the capital plan. Zero means no reinvestment; a rate above 1 is a build-out that consumes more than the year earns and is flagged. The tool reports the incremental return the rate implies year by year, so a generous-looking rate that buys very little growth shows up as a number.
- Entered dollars. You supply net reinvestment per year — a known capital programme, a build-out that ends, a maintenance-only run rate. The tool reports the incremental return your plan implies, so an internally implausible pair of assumptions shows up as a number rather than as silence.
In perpetuity, reinvestment is a rate: terminal growth ÷ terminal return on capital, which must sit between zero and one. If it does not, the model refuses rather than reporting a quietly deflated value. Entering the rate directly is the same statement read backwards — the rate and terminal growth imply a perpetual return on new capital of growth ÷ rate, which the audit reports. So positive perpetual growth requires a positive rate (zero would be an infinite return, free growth forever), zero is accepted only alongside zero or negative growth, and an implied return that stretches past what competition allows is called out rather than quietly capitalised.
Losses and taxes
A loss-making year does not automatically create a tax benefit. The default recognises none; the carry-forward option accumulates losses and shields later taxable profit until the balance is exhausted; the full benefit option is available but flagged, because it assumes the loss is used somewhere you cannot see from the filing.
A carry-forward that is still unused at the end of the explicit window is a finite asset, not a permanent exemption. The perpetuity is built from terminal revenue and the Year-H margin and taxed at the full terminal rate; the leftover balance is then scheduled against post-horizon profit year by year until it is used up, discounted, and reported as its own component of value — along with any part of it that profit never absorbs, which is worth nothing. Capitalising Year H's tax position instead would hand a company that happens to be sheltered at the horizon a tax holiday lasting forever, which is worth far more than the shield it actually owns.
Growth measured three ways
With an interim filing, year-to-date growth against the same period last year and trailing-twelve-month growth are different numbers, sometimes very different. The tool computes every measure your inputs support, shows all of them, and applies only the one you select. Genuine trailing-twelve-month growth needs the same interim period from two years ago; without that figure the tool says the measure is unavailable rather than substituting another.
When there is no answer
Before reporting a solved value, the solver checks that the target is bracketed, that the objective moves monotonically across the interval, and that the final residual is inside tolerance. If the required margin lies outside the searched range, if enterprise value is not positive, if the price does not identify a single value, or if the reinvestment or terminal assumptions are incoherent, it reports that status and no number. A boundary is never presented as an answer.
Each of those failures gets its own diagnosis, because they mean different things. A margin outside the searched range is a finding about distance: the model moves one way across the window and still misses the market's value, so the audit prints how far it gets at each end. A non-monotone objective is a finding about identifiability, and the endpoints are worthless there — enterprise value can rise and then fall, crossing the market's value twice inside a window whose two ends both sit far away from it, so quoting the nearer end would report a large valuation shortfall for a price the model reconciles perfectly well. That case reports the sampled range, every sampled interval in which the model crossed the target, and the honest conclusion that price does not pin the assumption down — never a root count, which a finite sample cannot establish. A search that brackets a solution but cannot narrow the residual reports its final bracket, last candidate and residual instead: what failed there was the search, not the window.
Links, and what “reproducible” means here
A scenario link carries the schema version, the model version, both dates and every applicable input — including ones left at their defaults, and including the margin search bounds, which the growth-versus-margin table uses in every mode. Nothing the model consumes is left to a page default, because a page default that changes later is an archived write-up that quietly stops reproducing.
Reproduction is guaranteed against the model version the link names, and only then. A link built by an engine this build no longer carries is refused: the inputs load so you can inspect and re-run them deliberately, but nothing is computed and no figure is presented as that version's answer. Likewise a link whose schema this build does not speak is refused rather than reinterpreted, and a link that is incomplete or contradicts its own mode pre-fills the form and names the problem instead of running on substituted defaults.
A link is only carrying the scenario it was built from if every input actually fits in it. A field left over from a setting you switched away from — a sales-to-capital ratio after moving to incremental ROIC, a share price after moving to an entered equity value — is reported as ignored and is not written into the link, so the figures beside it and the figures it reopens with would come from two different runs. Links built for a write-up are therefore replayed before they are handed over, and one that does not come back with the same figures is refused with the offending field named rather than published.