Investing · Live reading
Rental Property ROI
Will that rental actually cash flow? Move a dial — your result responds instantly.
Make it local
We'll use the real rates and fees for your area.
Calibrate
Drag to set each value — estimates are fine.
$event.target.select())" @blur="ed = false"
@input="inputs.purchase_price = ('currency' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Purchase price">
$event.target.select())" @blur="ed = false"
@input="inputs.down_payment = ('currency' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Down payment">
Investment loans usually want 20–25% down.
$event.target.select())" @blur="ed = false"
@input="inputs.interest_rate = ('percent' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Interest rate">
$event.target.select())" @blur="ed = false"
@input="inputs.monthly_rent = ('currency' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Expected monthly rent">
$event.target.select())" @blur="ed = false"
@input="inputs.vacancy_rate = ('percent' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Vacancy allowance">
$event.target.select())" @blur="ed = false"
@input="inputs.management_rate = ('percent' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="Property management">
Percent of collected rent; 0 if self-managed.
$event.target.select())" @blur="ed = false"
@input="inputs.hoa_monthly = ('currency' === 'percent'
? (parseFloat(String($event.target.value).replace(/[^0-9.]/g, '')) || 0)
: (parseInt(String($event.target.value).replace(/[^0-9]/g, '')) || 0))"
aria-label="HOA dues (monthly)">
$0
—
Total
DA
Demo Agency
Demo Agency
Turn this reading into a plan — a quick conversation is the fastest next step.
Get in touch demo@prospectmatch.net
Closing cost example provided by Demo Title Company
What this means for you
Get a plain-English summary of your reading.
Levers that move this
- Purchase price
- Down payment
- Interest rate
- Expected monthly rent
- Vacancy allowance
- Property management
- HOA dues (monthly)
Drag these dials above to see the effect instantly.
Track your progress over time
Save your reading and watch it change as you adjust your plan — free account, seconds to create.
The link shares your result and band only — never your financial details.
- This projection is an educational estimate — not investment advice, an appraisal, or a rental-market analysis. Returns are not guaranteed.
- Actual rents, vacancy, expenses, and financing terms vary; investment-property loans carry different requirements than primary residences.
- Closing cost figures are estimates provided by Demo Title Company for planning purposes only — not a quote or commitment. You may choose any settlement provider.