| dcf_calculate | R Documentation |
Builds an indexed annual pro forma over years 0..N, a terminal value, and unlevered valuation metrics including net present value (NPV) and internal rate of return (IRR) for a directly held commercial real estate (CRE) asset, without debt. The annual operating chain is made explicit through gross effective income (GEI), net operating income (NOI), and property before-tax cash flow (PBTCF).
dcf_calculate(
acq_price,
entry_yield,
exit_yield,
horizon_years,
disc_rate,
exit_cost = 0,
capex = 0,
index_rent = 0,
vacancy = 0,
opex = 0,
noi = NULL,
terminal_growth = NULL
)
acq_price |
Numeric scalar. Acquisition price (net of tax or all-in, depending on the chosen convention). |
entry_yield |
Numeric scalar in |
exit_yield |
Numeric scalar in |
horizon_years |
Integer scalar greater than or equal to 1. Projection horizon |
disc_rate |
Numeric scalar in |
exit_cost |
Numeric scalar in |
capex |
Numeric scalar or numeric vector of length |
index_rent |
Numeric scalar or numeric vector of length |
vacancy |
Numeric scalar or numeric vector of length |
opex |
Numeric scalar or numeric vector of length |
noi |
Numeric scalar or numeric vector of length |
terminal_growth |
Optional numeric scalar. Growth rate used to forwardize
the stabilised terminal NOI by one year for resale valuation. When
|
Time convention: year = 0..N. The acquisition is booked at year = 0
in free_cash_flow as a negative cash flow equal to the acquisition price,
and the sale is booked only at year = N in sale_proceeds. The
project NPV corresponds to the sum of discounted_cash_flow.
Two construction modes are available for the NOI path:
Top-down mode (default): when noi is NULL, the NOI
path is derived from the entry yield and acquisition price:
NOI[1] = entry_yield * acq_price, then indexed with index_rent
and adjusted by vacancy. In this mode, gei is reconstructed
as noi + opex so that the cap-rate convention remains anchored on
NOI1, which is the textbook convention used in direct capitalization
and terminal-value estimation.
Bottom-up mode: when noi is supplied (scalar or vector), it
is recycled to length N and used as the NOI[1..N] path. In this
case, entry_yield, index_rent, and vacancy are not used to
recompute NOI.
A list with:
inputs: list of main assumptions,
cashflows: tibble 0..N with standardised columns,
npv: project net present value (NPV),
irr_project: project internal rate of return (IRR), unlevered.
res <- dcf_calculate(
acq_price = 1000,
entry_yield = 0.06,
exit_yield = 0.055,
horizon_years = 3,
disc_rate = 0.08,
capex = c(5, 5, 0),
index_rent = c(0.01, 0.01, 0.01),
vacancy = c(0.05, 0.05, 0),
opex = c(10, 10, 10)
)
res$npv
res$irr_project
head(res$cashflows)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.