---
name: direct-cap-valuation
description: Value a stabilized commercial property using Direct Capitalization (NOI / Cap Rate)
when-to-use: User asks to value a property using direct cap, NOI, cap rate, going-in cap rate, or stabilized valuation
version: 1.0.0
author: A.CRE
---

# Direct Capitalization Valuation

Use this when the user wants a quick value indication on a stabilized property. Direct cap is a single-period valuation; for multi-period analysis, suggest DCF instead.

## What you need

1. **Stabilized Net Operating Income (NOI)** — annual, after operating expenses but before debt service and capex.
2. **Cap rate** — usually expressed as a percentage (e.g., 6.5%).

Ask the user only for what's missing. If the workbook already has NOI cells or a named range, propose those (e.g., "I see `Revenue.NOI` in the workbook — use that?").

## The math

```
Value = NOI / Cap Rate
```

If the user provides property square footage, also compute `Value / SF`.

## Build the output

Use `write_range` to create a compact valuation summary at the user's preferred location (default: two columns below the existing NOI block, or `B2:C6` on a blank sheet).

| Cell | Content |
|---|---|
| B2 | `Property Valuation — Direct Cap` (label) |
| B3 | `Stabilized NOI` |
| C3 | `<NOI value or cell ref>` |
| B4 | `Cap Rate` |
| C4 | `<cap rate as decimal, e.g. 0.065 for 6.5%>` |
| B5 | `Value` |
| C5 | `=C3/C4` |
| B6 | `Value / SF` (only if SF provided) |
| C6 | `=C5/<sf cell or value>` |

## Format the output

Use `format_range` after writing:

- `B2` — `bold: true`, `fillColor: "#1F4E79"`, `fontColor: "#FFFFFF"`, `horizontalAlignment: "center"`
- `B3:B6` — `bold: true`
- `C3` — `numberFormat: "$#,##0"`
- `C4` — `numberFormat: "0.00%"`
- `C5` — `numberFormat: "$#,##0,,\"M\""` (millions with M suffix) or `"$#,##0"` if under $10M
- `C6` — `numberFormat: "$#,##0.00"`

## Common pitfalls to flag

- **Trailing-12 NOI vs forward-12 NOI** — direct cap usually uses forward-12 (next 12 months expected).
- **Cap rates outside the typical range for the asset class** — if you suspect the user's input is off (e.g. 5.0% on a Class C apartment, 4.5% on suburban office), call `read_skill_resource` with `skill: "direct-cap-valuation"` and `path: "references/cap-rate-ranges.md"` to load the sanity ranges by asset class. Surface the context to the user, don't argue.
- **Management fee** — direct cap NOI should be AFTER management fee.
- **Capex reserves** — these should be BELOW the line (not in NOI). If the user's NOI includes capex, they're double-counting.

## Available references

- `references/cap-rate-ranges.md` — typical going-in cap rate ranges by asset class (multifamily, office, industrial, retail, hospitality, self-storage, niche). Load via `read_skill_resource` when you need to sanity-check the user's input.

## When to NOT use direct cap

- Properties in lease-up or distressed (value isn't representative of stabilized cash flow) → use DCF
- Properties with significant near-term capex (roof replacement, repositioning) → use DCF
- The user wants IRR or cash-on-cash returns → use DCF
