Guide

Two Identical Warehouses, 37.9% Apart: a BOV Built Entirely on Free SEC Data

Two Tampa warehouses of identical size, half a mile apart, filed 2025 incomes 37.9% apart. How a broker opinion of value is built from free SEC ABS-EE filings, and where our own first pass was wrong.

See how Titleman sources every number

Two industrial buildings, half a mile apart in Tampa, both 39,155 square feet, both fully leased for all of 2025. One earns $13.56 a square foot. The other earns $9.83. That gap (37.9%, or $146,048 a year) is not a market estimate. It is filed, dated, and free to check.

This piece walks through how we found that gap, what it is worth in a broker opinion of value, and where our own first pass at the data got something wrong. Every number below traces to a public SEC filing. Nothing here comes from a paid feed, a licensed data product, a client file, or a broker's asking price.

The source

CMBS trusts file loan- and property-level detail with the SEC as Regulation AB II asset-level exhibits: form ABS-EE, exhibit 102 (exh_102.xml), indexed at the SEC's quarterly full-text index (full-index/<year>/<quarter>/form.idx). It is public, machine-readable, and updated as trusts report. A pull covering 370 trusts nationwide returned 39,304 property rows and 17,300 loans with zero parse errors.

Two buildings, one coincidence worth more than an argument

8212 Woodland Center Boulevard and 8102 Woodland Center Boulevard, Tampa, FL. Both are 39,155 square feet, both sit on the same street, and both reported 100% occupied for calendar 2025. Physical twins. Their filed 2025 net operating income, divided by square footage:

  • 8212: $13.56/ft²
  • 8102: $9.83/ft²

Gap: $3.73/ft² × 39,155 ft² = $146,048 a year, or 37.9% of the lower figure. A market average for "Tampa industrial", the kind of number a generic comp report hands a broker, would describe neither building. It would sit between two data points that are 37.9% apart and call that the market.

What that gap is worth in a BOV

A broker opinion of value's income approach reduces to three numbers:

  1. The subject's NOI. Public, filed, named to the address.
  2. A comparable set. Public, same filing source, same county, same property type.
  3. A cap rate. Not in any filing: this is where judgement enters.

Two of the three inputs are free and verifiable. The payoff is in how much the third one matters: for a subject property with a filed 2025 NOI of $530,942, moving the cap rate across a plausible two-point band (6% to 8%) swings the implied value by $2.21M. The measured income gap between the Woodland Center twins, capitalised at 7%, is worth $2.09M.

The number nobody can source for free and the number anybody can verify for free are the same size. That is the sentence worth remembering: cap rate judgement moves value by about as much as a real, filed, checkable income gap between two identical buildings on the same street.

The wider cohort, and the correction we are publishing against ourselves

The same SEC pull covers the full Hillsborough County industrial submarket, not just the two buildings above:

property rows78
distinct buildings (normalised)43
distinct loans19
total net rentable area2,816,610 ft²
buildings reporting NOI25 of 43; 42% report nothing
NOI/ft²median $8.88, p25 $3.97, p75 $11.49, range −$5.49 to $13.56
positive-NOI spread9.2× ($1.48 to $13.56, 21 of 25 buildings)
occupancymedian 95%, 11 of 35 below 80%, 5 at zero
DSCRmedian 1.21, 12 of 32 below 1.0, 4 negative

An earlier pass on this same corpus reported 66 distinct buildings. That number was wrong; the correct count is 43. The bug: the same building is filed twice under different capitalisation (131 Kelsey Lane against 131 KELSEY LANE; 7920 Woodland Center Boulevard against 7920 WOODLAND CENTER BOULEVARD), and a raw distinct-value count on the address field treats each spelling as a separate building. Twenty-three of the 43 real buildings appeared under both spellings before normalisation.

We are printing that correction here rather than quietly fixing it, because the same pass had already caught an identical case-sensitivity trap on the county field a few steps earlier and fixed it there, and then made the same mistake on addresses two sections later. The rule that mistake earns: a normaliser is not a fix for one field, it is a fix for a join key. Every free-text column you group, count or dedupe on has to be normalised, or the bug just moves.

A second trap surfaced in the same re-derivation. The field mostRecentPhysicalOccupancyPercentage is not a percentage in the 0 to 100 sense; it runs 0.0 to 1.0. Read literally, the cohort's occupancy looks catastrophic (median 0.9%). Read correctly, as the field name implies but does not guarantee, it is a normal industrial cohort with a distressed tail: median 95%, 11 of 35 below 80%, 5 fully vacant. Neither trap changes the twin-building comparison above. Both belong on the record, because a broker who checks our reproduction recipe will hit the same raw data and can hit the same traps.

How to reproduce this

  1. Pull the SEC full-text index for the relevant quarter: full-index/<year>/<quarter>/form.idx.
  2. Filter to ABS-EE filings and fetch each exh_102.xml asset-level exhibit.
  3. Filter property rows to the target county and property type. Expect roughly three-quarters of naive hits to be unrelated collateral (auto loans and similar) if the registrant filter is skipped.
  4. Normalise every free-text grouping key you use (county, property address, property name, property city) to upper case and trimmed, or duplicate spellings will inflate distinct counts.
  5. Treat ...Percentage fields as unverified until you check their observed range. This one is a fraction, not a percentage.

Everything in the recipe is free to run. There is no step in it that requires a subscription.

What this is not

Not an appraisal, and not advice. Not a valuation of either Woodland Center building or of any specific asset: a broker opinion of value is an opinion of value, and that is what is being demonstrated here. The cap rates used above are illustrative and labelled as such; none come from a filing. Every income and occupancy figure is what the reporting trust filed on the date it filed it, unchecked against the underlying borrower's own accounts. County membership is taken from the filed property city, not independently verified.

No client-identifying material, no client rent roll and no broker-asking-price data appears anywhere in this piece. Every figure above traces to the free public SEC filings described in the reproduction recipe.

See how Titleman sources every number

Bring us a deal you already closed

We run it through Titleman and show your team the finished work next to their own.