Investing in real estate requires more than just looking at the monthly rent. To determine if a property is a "good deal," investors use several key metrics to measure profitability and risk. This calculator helps you break down the numbers to see your potential monthly income and long-term yield.
Key Metrics Defined
Cash Flow: The net amount of cash moving into your pocket every month after all operating expenses and mortgage payments are paid.
Cash-on-Cash (CoC) Return: This measures the annual return you made on the actual cash you invested (your down payment). It is calculated as (Annual Cash Flow / Total Cash Invested).
Cap Rate (Capitalization Rate): This represents the property's natural rate of return without considering financing. It is calculated as (Net Operating Income / Purchase Price).
Example Calculation
If you purchase a property for $300,000 with a 20% down payment ($60,000):
Monthly Rent: $2,500
Expenses (Tax, Ins, Maint): $900
Mortgage Payment: $1,517
Resulting Cash Flow: $83/month
Cash-on-Cash Return: ~1.66%
Note: A "good" ROI depends on your market. Typically, investors look for a Cash-on-Cash return of 8-12%, though in high-appreciation markets, cash flow might be lower.
function calculateRentalROI() {
var price = parseFloat(document.getElementById('propValue').value);
var downPct = parseFloat(document.getElementById('downPercent').value);
var interest = parseFloat(document.getElementById('intRate').value) / 100 / 12;
var termMonths = parseFloat(document.getElementById('loanTerm').value) * 12;
var rent = parseFloat(document.getElementById('monthlyRent').value);
var taxAnnual = parseFloat(document.getElementById('annualTax').value);
var insAnnual = parseFloat(document.getElementById('annualIns').value);
var reservePct = parseFloat(document.getElementById('maintVac').value) / 100;
if (isNaN(price) || isNaN(rent) || price 0) {
mortgage = loanAmt * (interest * Math.pow(1 + interest, termMonths)) / (Math.pow(1 + interest, termMonths) – 1);
} else {
mortgage = loanAmt / termMonths;
}
// Expenses
var monthlyTax = taxAnnual / 12;
var monthlyIns = insAnnual / 12;
var reserves = rent * reservePct;
var totalExpenses = mortgage + monthlyTax + monthlyIns + reserves;
// ROI Metrics
var monthlyCashFlow = rent – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var cashOnCash = (downAmt > 0) ? (annualCashFlow / downAmt) * 100 : 0;
// Net Operating Income (NOI) – ignores mortgage
var monthlyNOI = rent – (monthlyTax + monthlyIns + reserves);
var annualNOI = monthlyNOI * 12;
var capRate = (annualNOI / price) * 100;
// Display Results
document.getElementById('roi-results').style.display = 'block';
document.getElementById('resCashFlow').innerText = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCoC').innerText = cashOnCash.toFixed(2) + '%';
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
document.getElementById('resMortgage').innerText = '$' + mortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Color logic for cash flow
var cfElement = document.getElementById('resCashFlow');
if (monthlyCashFlow < 0) {
cfElement.style.color = '#e74c3c';
} else {
cfElement.style.color = '#27ae60';
}
}