Dooralytics

How it works

Every number on this site comes from the assumptions and formulas below. When an assumption changes, every listing is recalculated. You can change any of them for a single deal in the calculator.

The model in plain English

The default deal

Offer at asking (asking − $10K is also shown). 20% down down, the typical investor loan, with 20% and 10% down one click away. A 30-year mortgage at 7.00%. The buyer pays closing costs of 3% of the price. Self-managed by default; switch to a 9% property manager on any property page.

Two questions per building

First, does the rent cover the mortgage and every cost each month? Second, over 30 years (when the loan is paid off), does owning it beat putting the same money into a stock index fund?

A fair comparison with stocks

Both options get exactly the same money at the same times. The building is credited with what you'd keep if you sold, plus every dollar of rental profit invested in stocks as it came in. The stock side invests the cash to close and every year's shortfall instead.

Where the numbers come from

Prices and building details from listings; taxes, unit counts, sales and special assessments from county records; rents from RentCast's comparable rentals or hand research, with a rough bedroom-based estimate until those arrive. Anything estimated is labeled.

The monthly ledger

NOI = rent × (1 − vacancy) − (tax + insurance + water + heat + lawn + repairs + reserve + management)
Cash flow = NOI − mortgage − PMI

Cap rate = NOI × 12 ÷ price. DSCR = NOI ÷ mortgage payment. GRM = price ÷ yearly rent. Cash-on-cash = yearly cash flow ÷ cash to close. Break-even price: the highest price at which cash flow is zero (binary search). Break-even rent: the total rent, all units scaled together, at which cash flow is zero.

The 30-year comparison

Rent control

St. Paul: rent for a sitting tenant can rise at most 3% in 12 months. After a qualifying ("just cause") vacancy, it can rise up to 8% plus inflation (CPI). Buildings that first received a certificate of occupancy after 2004-12-31 are permanently exempt (May 2025 amendment, effective June 13, 2025). We model one turnover per unit every 3 years and assume CPI of 3%; this only matters when current rents are below market. Utility bill-backs (RUBS) on existing leases may count toward the cap. Sources: www.stpaul.gov, themacweekly.com.

Minneapolis: no rent cap; we assume under-market rents reset to market at the first renewal.

Red flags

Two layers, merged and de-duplicated. Every flag shows its evidence.

How we rank

score = 0.4 × cash-flow score + 0.2 × years-to-positive score + 0.4 × vs-stocks score − flag penalty

Neighborhood lists: best cash flow now, best long-term (year-30 property ÷ stocks), value-add (under-rented, needs work at a discount, or long on market), and proceed with caution (above-median score with a serious flag).

Neighborhood profiles

Deal calculator

The calculator runs the same model in your browser. Our automated tests run it and the server-side model on the same cases and require the same answers.

What's real and what's estimated