Skip to main content
CFDLAcademy
All chapters

Part 4 · The CRE capstone · Chapter 24 of 28

Capstone: exit and returns

Every number so far has been rehearsal. Development deals live or die on the reversion: the sale that converts four years of claims into one wire. This shortest chapter of the capstone adds the two lines that price it, then spends its weight where the judgment is — what those two lines assert, and how to interrogate the returns they produce.

The sale, with its window named

// Sale at the horizon: forward-twelve-month NOI at the exit cap, net of
// selling costs. The window is NAMED: forward NOI, stated to match the
// stabilized year the modeled streams produce.
contract cre.exit on entity asset.harbor {
  term 2030-12..2030-12
  terms {
    income = 1550000
    cap_rate = 0.0625
    selling_costs = 0.02
    pays_off = cre.permanent_debt
  }
}

Chapter 18's exit conventions, now as committed terms. The NOI basis is forward, as the term's own name says, because a buyer underwrites the year they are buying. The 1,550,000 is stated to match the modeled stabilized year. Check it against the results' final-year NOI, and record the check: it is this chapter's hand anchor.

The sale is written on the property, like every contract in the deal. Stating the number rather than deriving it is a choice with a tradeoff. A stated window is visible and committee-editable, but it can drift from the model that surrounds it. The pack's cre.exit on basis = "forward_noi" derives the same window from the modeled streams instead — forward NOI is then computed over the twelve months after the sale, so it cannot drift and cannot be committee-edited. The price is that those twelve months must exist to be read: the grid ends at the sale, so the model's time line declares a projection tail with the project clause, time calendar monthly from 2026-01 for 60 project 12 — twelve extra periods computed for series lookups only, excluded from cash and NPV. The tail is a valuation instrument, not more deal: nothing in it is cash anyone receives, which is exactly what "the year a buyer underwrites" means. The contract publishes the valuation as figures — metric.cre.exit.income, .gross_value, .net_value — folded over that tail, and its reversion pays the gross value: a stream has no window of its own, and a sale paying a valuation is the one causal amount struck after the figures fold. The same rule from the machine chapter applies: logic may read a deferred stream or the opening balance of an account it feeds, and only a real cycle is refused (docs/01 §9.5). The exercise has you reconcile the stated and derived forms.

basis has four values. stated_noi, the default, capitalizes the income you state; forward_noi and trailing_noi derive the NOI from the modeled streams, the year after the sale or the year before it; and price states a value directly. A sale of part of the asset states its share. Every exit also publishes its subject's value each period on the same basis, metric.asset.<name>.value, which a loan-to-value reads.

Selling costs belong in every reversion that expects to survive diligence. pays_off is the capital stack from chapter 22 completing itself: the sale repays the permanent loan's balance after that month's payment, which for an interest-only loan is its full principal, here, against proceeds, exactly where the pack's balloon note said it belongs. The sale reads the balance; nothing restates it.

The sale lands at the end of the final period, and the pack places it there deliberately. After chapter 4 you know that placement is worth a full month of discounting on the deal's largest number.

What the numbers say

The sale, on paper first: 1,550,000 / 0.0625 = 24,800,000 gross, less 2% selling costs of 496,000, nets 24,304,000. The results show the two as separate lines — cre.exit.proceeds gross and cre.exit.selling_costs beside it — because a statement reports the transaction cost, not a pre-netted number. And with the reversion in, the deal finally has a bottom line. The equity's view is the levered slice from chapter 22: about +8.6 million, and the slice publishes its own IRR, 15.6%, and multiple, 1.8x, on 9.7 million of equity over five years.

Now interrogate them, because this is where chapter 3's discipline meets real stakes. Where does the value sit? Strip the exit from the total in your head. Without the sale the equity is down 6.2 million: the reversion is not the icing but most of the cake. That is the risk profile of all development, stated as one subtraction.

What is the IRR sensitive to? Move the cap 50 basis points in your head before running it. At 6.75%, proceeds drop to about 22.5 million — call it 1.8 million of value, on a number nobody controls.

Is the multiple consistent with the IRR? 1.8x over five years is roughly 15%, and the model says 15.6%. The two metrics cross-check each other. When they ever disagree wildly, hunt for timing: an early distribution, or a late call.

That cap-rate subtraction is the whole argument for the final chapter: a deal whose value lives in one market number at one future date is not described by a point estimate, however carefully anchored.

What can go wrong

A stated window that drifted. The model's stabilized NOI creeps up in a revision; the stated 1,550,000 does not. Nothing errors — two parts of one model now disagree about the same year. The defense is the recorded reconciliation (anchor plus comment), or the derived-exit contract, which cannot drift and cannot be committee-edited: choose which failure you would rather have, deliberately.

A payoff stated as a number. Write the payoff as its own stream with 9500000 in it, then raise the permanent loan in chapter 22's exercise, and the model sells the building while still owing 1,000,000, with no diagnostic. pays_off reads the loan's balance, so it cannot drift; a restated figure can, across three chapters.

Trusting a point IRR. 15.6% is one draw from a distribution that a model stated at point values does not show. The next chapter, on risk, shows it.

Exercises

Exercise

Strike the exit

Add the reversion.

  1. Add a cre.exit at the horizon: forward-twelve-month NOI of 1,550,000 at a 6.25% cap, net of 2% selling costs.
  2. Repay the permanent loan from the sale: pays_off = cre.permanent_debt. The balloon stays off; the payoff is a repayment, not debt service.

Anchor: 1,550,000 / 0.0625 × 0.98 = 24,304,000.

The sale prices the deal's whole story. Read the levered slice, the equity's view: IRR about 15.6%, equity multiple about 1.8x. Before you trust those numbers, do the chapter's sensitivity by hand: move the cap to 6.75% and predict the proceeds. The answer is why chapter 24 puts a distribution on this number.

Loading exercise…

Then, on your own:

  1. Reconcile the stated window: read the final twelve months' NOI from the results and compare to 1,550,000. Then restate the exit with a cap of 0.0675 and write, in one sentence suitable for a committee memo, what 50 basis points cost.
  2. Test the multiple/IRR cross-check: move the sale a year earlier (phases and terms: the slip test in reverse). The multiple falls and the IRR rises. Explain why in one sentence about time.