underwrite_loan: Constrained underwriting for a commercial mortgage

View source: R/debt.R

underwrite_loanR Documentation

Constrained underwriting for a commercial mortgage

Description

Computes the maximum loan amount allowed by three standard underwriting constraints: loan-to-value (LTV), debt service coverage ratio (DSCR), and debt yield. The DSCR sizing is made consistent with the package debt engine by deriving year-1 debt service from debt_built_schedule().

Usage

underwrite_loan(
  noi,
  value,
  rate_annual,
  maturity,
  type = c("bullet", "amort"),
  dscr_min = 1.25,
  ltv_max = 0.65,
  debt_yield_min = 0.08,
  extra_amort_pct = 0
)

Arguments

noi

Numeric scalar greater than or equal to 0. Annual net operating income used for underwriting.

value

Numeric scalar greater than 0. Underwritten property value.

rate_annual

Numeric scalar in [0, 1]. Annual nominal interest rate.

maturity

Integer scalar greater than or equal to 1.

type

Character scalar. Either "bullet" or "amort".

dscr_min

Numeric scalar greater than 0. Minimum DSCR.

ltv_max

Numeric scalar in [0, 1]. Maximum LTV.

debt_yield_min

Numeric scalar greater than 0. Minimum debt yield.

extra_amort_pct

Numeric scalar in [0, 1]. Additional annual amortisation rate for bullet structures.

Value

A list containing the constraint-by-constraint loan sizing, the binding constraint, the final maximum loan amount, the corresponding year-1 payment, implied underwriting ratios, and the debt schedule at the constrained loan amount.

Examples

uw <- underwrite_loan(
  noi = 500000,
  value = 8e6,
  rate_annual = 0.045,
  maturity = 5,
  type = "bullet"
)
uw$binding_constraint
uw$max_loan

cre.dcf documentation built on April 10, 2026, 5:08 p.m.