ExitComps Sold comps for micro-acquisitions

Valuation guide · method

How recent does a sold comp need to be?

There is no age at which we throw a sold deal away. Our comp window is a count — the most recent priced sales of your asset type — so how old the sample is depends entirely on how fast that category sells. That is a deliberate trade, and it has consequences worth knowing before you read a number off a comp set.

01

The window is a count, not a cut-off date

A comp query could be bounded two ways. A time box takes every sale in the last twelve months. A count window takes the most recent n sales, whenever they happened. We use the count window: the paid report prices against the most recent 200 priced sales of the asset type by sale date, and the free calculator reads a wider 500. Both then apply the same five-comp floor to whatever survives filtering.

Nothing in that pipeline asks how old a deal is. A sale from two years ago is used, in full, if it is among the most recent sales we hold of its type — and a sale from last week is dropped if 200 more recent ones exist.

The reason is that a time box fails silently in exactly the categories that need help. Put a twelve-month cut-off on a thin category and the query returns three rows, the floor rejects them, and the honest answer — "here is a small, older sample, read it carefully" — is replaced by no answer at all. A count window degrades in a way you can see: the sample stays as recent as the category allows, and its age is disclosed rather than promised.

02

Where the window actually bites today

Counts read from /api/stats when this page loads.

The window only matters where a category holds more sales than it. Below that line the report is reading everything we have of that type, and "recency" is not a filter at all — it is just the whole shelf.

Loading live coverage from /api/stats…

Priced sold deals held vs the report's comp window — live from /api/stats
Asset typePriced sold deals heldReport windowRead by the reportDoes the window bind?
Loading live figures from /api/stats…

"Read by the report" is the smaller of the two preceding columns. Where the window binds, the sample is a recent slice and older sales in that category sit outside it; where it does not, the sample reaches back as far as our collection does. Either way the count is before filtering — rows that state no earnings carry no multiple and drop out later, which is why a large category can still fail to produce an estimate.

03

Four things a sale date can mean

Before asking how old a comp is, ask what its date records. Sources do not agree on this, so every row we hold carries a basis derived from its source, and the Pro CSV exports it in a sold_date_basis column beside sold_date:

This matters for recency in a specific way: a reveal-basis date is never earlier than the sale, and can be much later. A comp set that looks six months old on reveal dates may be describing a market rather older than that. The bias runs one way, so it is at least predictable — assume the underlying sales are older than their dates, never newer. Where sold-price data comes from covers which sources we take and what they publish.

04

Read the date span, not the median

Every estimate we publish carries the first and last sale date in the sample it used, together with a breakdown of how many of those comps sit on each date basis. That pair of dates is the single most useful line in the sample disclosure, and it answers a question the median cannot:

05

What to do when the comps are older than you would like

Related: how many sold comps a valuation needs · what makes a sold comp comparable · where sold-price data comes from · all valuation guides