Academy/Tools/Buyer Returns Calculator/Methodology
Advisor Standard Academy · Tools

Buyer Returns Calculator — Methodology

Every formula used in the calculator, in plain language. A formula is a claim the same way a statistic is — this page states what each one assumes and excludes.

What this calculator does — and doesn't do

The Buyer Returns Calculator answers one question: Can this deal support its financing, and what does the current equity return look like? It computes deterministic day-one economics from your actual deal inputs. It does not project future performance, model multiple years, or estimate investment return over a hold period.

Taxes are not included in this estimate. Tax liability on a business acquisition depends on structure, province, whether an asset or share purchase is used, and decisions that can only be made proactively with a tax advisor. Estimating it inside a live calculator would produce more harm than help. It is excluded entirely and stated plainly — not approximated.

The default view is deterministic. Entry multiple, Sources & Uses, DSCR, and cash-on-cash are computed entirely from what you know about the deal today — no forward assumptions required. IRR, MOIC, and exit modeling are available in the separate, opt-in Projected Returns mode (see below) — they are never mixed into the default output.

Sources & Uses — reconciled, not decorative

Sources & Uses is visually central in the results panel, not a footnote. It is the fastest way to catch a bad deal structure: if sources don't equal uses, the deal has a funding gap (or is over-funded, which has its own implications).

Uses: purchase price + transaction costs + financing costs Sources: buyer equity + senior debt + seller note principal gap = total sources − total uses

The calculator flags a mismatch explicitly. It does not silently solve a funding gap by treating buyer equity as the remainder — a common but dangerous pattern that makes the check impossible to fail. Buyer equity must be entered as an independent input, exactly like every other Sources component.

Formula 1 — Entry multiple

entryMultiple = purchasePrice / normalizedEarnings

A named output, shown plainly. No verdict attached to it — a 4x multiple on EBITDA is not universally high or low; it depends on the business, sector, and deal structure. The calculator shows the number; the reader interprets it.

Why earnings basis matters beyond labeling

SDE (Seller’s Discretionary Earnings) and Normalized EBITDA are not interchangeable inputs that simply produce different multiples — they require different treatment downstream, specifically in how management cost is handled.

SDE adds back the owner’s compensation to EBITDA. It reflects what the business earns when the owner is the operator — their labour is effectively free to the business. If you hire a replacement manager instead, that cost must be deducted before computing debt service coverage. Not deducting it would overstate what the business generates for you.

Normalized EBITDA already includes a market-rate management expense line. Deducting a replacement manager cost again would double-count the same expense. The management deduction is not applied for EBITDA-basis inputs, regardless of operator intent.

This is why operator intent is asked as its own explicit question — never defaulted from the earnings-basis selection. SDE often implies an owner-operator acquisition, but not always. A silent default would embed an unconfirmed assumption into the calculation.

Formula 2 — Cash available for operations

If SDE and buyer hires replacement management: cashAvailableForOperations = normalizedEarnings − replacementManagementComp − maintenanceCapex If SDE and buyer operates full-time: cashAvailableForOperations = normalizedEarnings − maintenanceCapex If normalized EBITDA (either operator intent): cashAvailableForOperations = normalizedEarnings − maintenanceCapex

Maintenance capex is the annual recurring capital needed to sustain the business’s current earnings capacity. It is entered as an explicit input (Advanced inputs section) and deducted here. When left blank, the deduction is zero — the calculator never estimates it on your behalf. Requiring explicit entry prevents silent assumptions while still supporting users who have this figure from their own due diligence.

Working capital and immediate capex — Uses only

totalUses = purchasePrice + transactionCosts + financingCosts + workingCapital + immediateCapex

Working capital and immediate capex are day-one cash requirements that belong in Uses — they affect the size of the funding gap and how much equity is actually needed. They do not flow through the earnings waterfall: these are one-time capital deployments at closing, not recurring costs. Maintenance capex is separate and does flow through the earnings waterfall because it recurs annually.

Formula 3 — Debt service per tranche

Debt is modeled as a tranche array — not as a single lump. This keeps the DSCR formula correct when a seller note has different terms from senior debt, accommodates additional tranches (mezzanine, vendor takeback), and handles interest-only periods independently per tranche.

monthlyPayment(P, r, n) = if r = 0: P / (n × 12) else: P × (r/12) × (1 + r/12)^(n×12) / ((1 + r/12)^(n×12) − 1) During interest-only period (years 1 to ioPeriod): annualPayment = P × r After interest-only period: annualPayment = monthlyPayment × 12 Current annual debt service uses whichever applies based on current year position. totalCurrentDebtService = sum of current annualPayment across all tranches

Where P = principal, r = annual rate (decimal), and n = amortization period in years. Monthly compounding is used because it is standard for Canadian commercial and acquisition loans. Interest-only periods are supported per tranche and reduce current debt service during the IO window — the amortizing payment begins when the IO period ends.

Formula 4 — Modeled DSCR

Different lenders and advisors calculate DSCR differently. Some use EBITDA; others use cash flow after taxes; others include or exclude specific expenses. Publishing an unqualified “DSCR” number would imply a universality that doesn’t hold. This calculator’s definition is:

Modeled DSCR = cashAvailableForOperations / totalCurrentDebtService

The “Modeled” qualifier signals that this is Advisor Standard’s methodology — not a lender’s underwriting result. A lender will apply their own definition, their own add-backs, and their own adjustments. Use this figure to understand the deal’s structure, not to predict what a lender will approve.

Formula 5 — Modeled pre-tax cash flow after debt service

modeledCashFlow = cashAvailableForOperations − totalCurrentDebtService

The “modeled” and “pre-tax” qualifiers are load-bearing. This figure excludes income taxes, ongoing working-capital changes beyond the acquisition-date adjustment, maintenance capex (V1), and any other recurring cash need not modeled in this version. It is not a distributable cash figure. It is a starting point for conversations with advisors and accountants.

Formula 6 — Cash-on-cash return (pre-tax)

cashOnCash = (cashAvailableForOperations − totalCurrentDebtService) / buyerEquity

Pre-tax, stated plainly. Excludes the same items as Formula 5. Only shown when buyer equity is entered — dividing by zero is not a meaningful return.

Balloon exposure — contractual fact, not projection

When loan term is shorter than amortization period, a balloon payment is due at end of term. This is not a projection — it is a contractual term already in the user’s inputs. Showing it in V1 output is important because a comfortable current DSCR can quietly hide a large balloon a few years out.

remainingBalance(P, r, n, k) = if r = 0: P × (1 − k/n) else: P × (1 + r/12)^(k×12) − monthlyPayment × ((1 + r/12)^(k×12) − 1) / (r/12) balloon amount = remainingBalance(principal, rate, amortizationPeriod, term) balloon due = year equal to term

Where k = loan term in years (the balloon date). The balloon amount and due year are read directly from the tranche’s own terms — they are presented as facts, not forecasts.

Stress scenarios — inputs, not verdicts

The stress scenario section applies user-defined deltas to earnings and interest rates and shows how DSCR, cash-on-cash, and pre-tax cash flow change across three scenarios: Base, Downside, and Upside.

Downside: stressedEarnings = normalizedEarnings × (1 + downEarningsDelta / 100) stressedRate = tranche.rate + downRateDelta / 100 (per tranche) Upside: stressedEarnings = normalizedEarnings × (1 + upEarningsDelta / 100) stressedRate = tranche.rate + upRateDelta / 100 All three scenarios run through the full formula stack. Base = your inputs unchanged.

The pre-filled defaults (−15% earnings, +1.5% rate for downside; +10% earnings for upside) are suggestions only — you can change them. The scenarios are always shown in full alongside the base so you can see what changes between them. No scenario is ever secretly applied to the main result. No scenario produces a verdict (“resilient”, “sensitive”) — only direct numbers.

Financing costs — generalized, not program-specific

The four financing cost fields are generalized: commitment/origination fee, guarantee program fee, appraisal and diligence fee, other. No specific lender program (BDC or otherwise) is assumed by default. A specific program’s fee structure would only surface if and when a user selects that program — that is later work, not V1.

Advanced v2 — Projected Returns mode

The Projected Returns section (enable it explicitly in the calculator) models IRR and MOIC over a hold period you define. This is a separate mode, not an extension of the deterministic output above it. Every input here is an assumption you are making — not a market-typical default — and the calculator states this plainly before showing any results.

earningsAtYear(t) = normalizedEarnings × (1 + earningsGrowthRate)^t cashAvailableAtYear(t) = earningsAtYear(t) − managementCost − maintenanceCapex (same management/capex rules as the deterministic formulas above) debtServiceAtYear(t, tranche): if t ≤ tranche.interestOnlyPeriod: principal × rate else: amortizing payment (same formula as Formula 3) preTaxCashFlowAtYear(t) = cashAvailableAtYear(t) − sum(debtServiceAtYear(t)) exitEnterpriseValue = earningsAtYear(holdPeriod) × exitMultiple remainingDebtAtExit = sum(remainingBalance(tranche, holdPeriod)) across all tranches equityAtExit = exitEnterpriseValue − remainingDebtAtExit IRR: rate r such that NPV of [-equity, cf1, ..., cfN-1, cfN + equityAtExit] = 0 Solved by bisection. Returns N/A if the cash flow series lacks a sign change. MOIC = (sum of annual pre-tax cash flows + equityAtExit) / buyerEquity

What Projected Returns does not do:

  • Does not grow replacement management compensation or maintenance capex — both are held at the values you entered. Only earnings grow at the rate you specify.
  • Does not model refinancing of tranches whose balloon falls before the exit year. These are flagged explicitly; the remaining balance calculation uses the loan’s own amortization schedule as if the loan continued.
  • Does not include taxes — same pre-tax, plainly-stated boundary as the rest of this calculator.
  • Does not apply an implied “good IRR / bad IRR” threshold. The numbers are shown; you interpret them.

Advanced v2 shipped in calculator version 2.0 (2026-08-21). The deterministic V1/Advanced v1 output is unchanged and was not recomputed to include any projected assumptions.

What this calculator is not

  • Not a lender’s underwriting model or approval tool
  • Not a tax estimate — taxes are excluded entirely from all modes
  • Not a deal-quality verdict — no “good deal / bad deal” score
  • Not modeled by province, sector, or transaction structure
  • Not a substitute for due diligence, legal advice, or accounting review
  • Projected Returns mode: not an estimate of likely outcomes — every input is an assumption labeled as such

Rounding and precision

All calculations run at full floating-point precision internally. Rounding happens only at display time: currency values to the nearest dollar, percentages to one decimal place, multiples to one decimal place.

Calculation version and review

Calculation version: 2.0 (Advanced v2 — Projected Returns)
Last reviewed: 2026-08-21

The formula implementations live in lib/dealEconomics.ts (Deal Economics Engine: Buyer Returns module). The version and review date are updated when any formula changes.