---
name: "multifamily_pro_forma"
description: "Build a multifamily pro forma from the ground up: reconcile a rent roll against a trailing twelve month statement, build current and stabilized NOI, size debt with LTV, DSCR, and debt yield tests, project the hold, and read returns with a sensitivity matrix. Ships a runnable Python builder, a fully worked 20-unit pro forma, and practice problems with solutions. Use when underwriting an apartment deal, checking a seller pro forma, or learning multifamily analysis."
---

# Multifamily Pro Forma

## Purpose

Turn a seller package into numbers you can defend. A multifamily pro forma built by this skill starts from the rent roll, reconciles it against the trailing twelve month (T12) statement dollar by dollar, builds a current pro forma at in-place rents and a stabilized pro forma at market rents, sizes the debt the way a lender does, and only then talks about returns. The point is the order: income you can prove first, projections second, returns last.

This skill teaches and models. It does not give investment advice, does not predict rents or cap rates, and never presents the sample deal or its returns as a market claim. The sample property is invented teaching material, and every derived number in it comes from the bundled builder.

## Workflow

1. Gather the inputs. Rent roll (unit, type, market rent, in-place rent or vacant), the T12 operating statement as the seller reported it, the expense detail behind the T12, lease files for the largest tenants and any unit with no lease date, a tax bill, an insurance quote, and the loan terms being assumed. If a document does not exist, note the gap. Do not fill it with a confident guess.
2. Summarize the rent roll. Count units, occupied units, and vacant units. Compute gross potential rent at market rents, in-place rent, loss to lease on occupied units only, and vacancy loss on vacant units at market rent. Report physical occupancy.
3. Reconcile before you model. Annualize the rent roll, subtract documented concessions and bad debt, and compare the result to T12 rental income. Name the cause of every block of the gap. Then normalize expenses: add a market management fee when the T12 has none, reprice insurance and taxes to post-sale reality, strip one-off and personal items, and add a per-unit replacement reserve. The full check list is in `references/formulas-and-checks.md`. If the adjusted NOI cannot be reached by two routes (adjustments down from reported NOI, and a fresh build up from EGI), an adjustment is double counted. Find it.
4. Build the current pro forma at in-place rents with normalized expenses, then the stabilized pro forma at market rents with underwriting deductions (vacancy, concessions, bad debt as rates on GPR). State the stabilization assumptions out loud every time stabilized NOI is quoted, including the big one: loss to lease captured in full as leases roll.
5. Run the builder. `python3 bin/proforma.py <deal.json>` prints the rent roll summary, the reconciliation, both pro formas, the debt schedule, a multi-year projection with exit, and a vacancy by cap rate sensitivity matrix. Add `--markdown report.md` to save the report. The deal file schema is in `references/deal-schema.md`, and a complete sample sits at `assets/sample-deal.json`.
6. Size the debt with all three lender tests: LTV, DSCR, and debt yield. Report the smallest loan and name the binding test. State the DSCR numerator you used (NOI or net cash flow after reserves), because lenders differ and the answer moves.
7. Project the hold and the exit last. Grow rents, other income, and expenses at stated rates, keep debt service flat unless an interest-only period ends inside the hold, and price the exit on forward NOI at an exit cap rate less selling costs and the loan payoff. Report IRR and equity multiple only beside those assumptions.
8. Stress it before you present it. Read the sensitivity matrix corner where vacancy is high and the cap rate is wide, and run one combined downside. Name the losing corner in the report.
9. Learn by doing. `references/worked-pro-forma.md` walks the sample 20-unit deal through every step with the builder output. `references/practice-problems.md` gives three problems with full solutions: building NOI from scratch, finding the binding loan test, and reconciling a T12.

## Output Contract

Every analysis returns, in this order:

- Inputs ledger: every number used, marked as seller-reported, document-verified, or assumption.
- Rent roll summary: units, physical occupancy, GPR, in-place rent, loss to lease, vacancy loss, average rents.
- Reconciliation table: reported T12 NOI to reconciled NOI, each adjustment named with its dollar amount and the document behind it, plus economic occupancy next to physical occupancy.
- Current pro forma: full income waterfall to EGI, expense lines, NOI, reserves, net cash flow, expense ratio, going-in cap rate.
- Stabilized pro forma: the same waterfall at market rents, with the stabilization assumptions listed above the numbers, plus implied value at the stated cap rate.
- Debt schedule: loan amount, rate, amortization, monthly payment, annual debt service, balance at the end of the hold, total cash invested.
- Coverage and returns: DSCR on NOI and on net cash flow, debt yield, before-tax cash flow, cash on cash on total cash invested, break-even occupancy with its definition, and for a hold projection, yearly cash flows, exit math, IRR, and equity multiple.
- Sensitivity matrix: stabilized value across vacancy rates and cap rates, with the losing corner named in words.
- Verdict in plain language: what carries the deal today, what has to go right, and what breaks it. Numbers first, story second.

## Operating Rules

1. Never invent a number. Rents come from the roll or from leases, expenses from statements, bills, or quotes, and growth or cap rate figures are labelled assumptions. An unverifiable claim gets cut or framed as an assumption, never stated as fact.
2. Keep NOI clean. No debt service, depreciation, income taxes, or capital expenditures inside NOI. Reserves sit below NOI and produce net cash flow. Debt service sits below that and produces before-tax cash flow.
3. Never double count a vacancy. Current year: actual vacant units at market rent. Stabilized year: a vacancy rate on GPR. One or the other, never both in the same year.
4. Loss to lease covers occupied units only. A vacant unit is vacancy, with a different cause and a different fix.
5. Charge a market management fee even when the seller self-manages, and include replacement reserves even when no lender escrows them. A pro forma that skips either one overstates what a buyer actually keeps.
6. Keep current and stabilized in separate columns and separate sentences. Stabilized NOI is a target the plan has to earn. Quoting it as if it were trailing performance is the oldest trick in a seller package.
7. Cash on cash is computed on total cash invested: down payment plus closing costs plus immediate capex. Never on the down payment alone.
8. State the exit convention. This skill prices the exit on forward NOI (the year after the sale). If a comparison model uses final-year NOI, rebuild one of them before comparing IRRs.
9. Round for display, never for math. Carry full precision through the waterfall and round only the printed result, so two routes to NOI agree to the dollar.
10. This is analysis and education, not advice. The skill does not recommend buying or passing. It shows what the numbers say, what they assume, and where they break.
