How to Calculate Rental Property Return on Investment (ROI)
Investing in real estate requires a deep understanding of the numbers to ensure a property will generate a profit. This Rental Property ROI Calculator helps you determine the viability of a real estate investment by analyzing key metrics like Cap Rate and Cash on Cash (CoC) return.
Understanding Key Real Estate Metrics
Cap Rate (Capitalization Rate): This is the ratio of Net Operating Income (NOI) to the property purchase price. It represents the potential rate of return on an investment property if it were purchased in cash.
Cash on Cash Return: This metric calculates the annual cash flow relative to the actual amount of cash invested (the down payment). It is often considered more relevant for investors using financing.
Net Operating Income (NOI): This is your total annual income from the property minus all operating expenses (excluding mortgage payments).
Example Calculation
Imagine you purchase a property for $300,000 with a 20% down payment ($60,000). Your monthly rent is $2,500 and your monthly operating expenses (taxes, insurance, maintenance) are $700.
Annual Income: $2,500 x 12 = $30,000
Annual Expenses: $700 x 12 = $8,400
NOI: $30,000 – $8,400 = $21,600
Cap Rate: ($21,600 / $300,000) x 100 = 7.2%
Why Cash Flow Matters
While appreciation is a benefit of real estate, "Cash Flow is King." Positive cash flow ensures you can cover unexpected repairs, vacancies, and mortgage payments without dipping into your personal savings. Most professional investors look for a Cash on Cash return of 8% to 12% depending on the market risk and property condition.
function calculateROI() {
var price = parseFloat(document.getElementById('propPrice').value);
var downPercent = parseFloat(document.getElementById('downPayment').value);
var rate = parseFloat(document.getElementById('interestRate').value) / 100 / 12;
var years = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var expenses = parseFloat(document.getElementById('operatingExp').value);
if (isNaN(price) || isNaN(downPercent) || isNaN(rent)) {
alert("Please enter valid numbers in all fields.");
return;
}
// Logic for Financing
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var months = years * 12;
// Mortgage Payment Calculation
var monthlyMortgage = 0;
if (rate > 0) {
monthlyMortgage = (loanAmount * rate) / (1 – Math.pow(1 + rate, -months));
} else {
monthlyMortgage = loanAmount / months;
}
// Operating Math
var annualRent = rent * 12;
var annualExpenses = expenses * 12;
var noi = annualRent – annualExpenses;
var monthlyCashFlow = rent – expenses – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Ratios
var capRate = (noi / price) * 100;
var cashOnCash = (annualCashFlow / downPaymentAmount) * 100;
// Display Results
document.getElementById('results').style.display = 'block';
document.getElementById('resMortgage').innerText = '$' + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCashFlow').innerText = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resNOI').innerText = '$' + noi.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
document.getElementById('resCoC').innerText = cashOnCash.toFixed(2) + '%';
// Change color if negative
if (monthlyCashFlow < 0) {
document.getElementById('resCashFlow').style.color = '#e74c3c';
} else {
document.getElementById('resCashFlow').style.color = '#27ae60';
}
}