Cap Rate, Cash-on-Cash, and the Expenses That Sink Amateur Deals
Two numbers describe a rental property. Confusing them is the most common mistake in the field.
NOI does not include your mortgage
Net operating income measures what the building earns, deliberately ignoring how you financed it. That is the whole point: two buyers with different loans looking at the same property should compute the same NOI, so they can compare the asset rather than their own balance sheets.
The chain
GOI = Rent × (1 − Vacancy) → NOI = GOI − OpEx → Cap = NOI ÷ Price
- OpEx excludes mortgage principal and interest
- Cash flow = NOI − debt service
- Cash-on-cash = cash flow ÷ cash invested
Cap rate is therefore a property metric and cash-on-cash is an investor metric. A property has one cap rate; every buyer has a different cash-on-cash return depending on leverage.
The three expenses that get omitted
Deals that look excellent on a napkin and lose money in reality almost always omit the same three lines.
Vacancy. No property is rented 100% of the time. Between tenants there is turnover, cleaning and marketing. Five to eight percent is realistic; zero is fantasy.
Maintenance. Roughly 1% of value a year, more for older buildings. It is lumpy — nothing for three years, then a roof — which is exactly why it needs reserving rather than paying out of whatever happens to be left.
Management. Eight to ten percent of collected rent. Include it even if you self-manage: if the property only works because you are doing unpaid labour, that is a job, not an investment, and it will not survive you moving away.
A useful sanity check is the expense ratio. Operating expenses below about 35% of gross income usually mean something has been left out.
What the metrics do not tell you
Cap rate ignores financing, so it says nothing about whether you can afford the deal. Cash-on-cash ignores appreciation and principal paydown, so it understates total return. Neither includes income tax, depreciation, or the capital gain on eventual sale.
They also assume the numbers you typed are right. Rent estimates from a seller are the least reliable input in the whole model, and everything downstream inherits that error.