Investing in real estate requires a clear understanding of the numbers. This calculator helps you evaluate the potential profitability of a residential rental property by analyzing key financial metrics.
Key Metrics Explained
Cap Rate (Capitalization Rate): This measures the property's natural rate of return without considering financing. It is calculated by dividing the Net Operating Income (NOI) by the purchase price.
Cash-on-Cash Return: This is the ratio of annual before-tax cash flow to the total amount of cash invested. It is one of the most important metrics for investors using leverage (mortgages).
Monthly Cash Flow: The actual profit remaining after all expenses and mortgage payments are paid.
Example Calculation
If you purchase a property for $300,000 with a 20% down payment ($60,000), and the monthly rent is $2,500 with $600 in operating expenses:
– Mortgage Payment (at 6.5%): ~$1,517
– Total Expenses (Mortgage + Operating): $2,117
– Monthly Cash Flow: $383
– Annual ROI: ~7.66% Cash-on-Cash
function calculateROI() {
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var rate = parseFloat(document.getElementById('interestRate').value);
var term = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var expenses = parseFloat(document.getElementById('monthlyExpenses').value);
if (isNaN(price) || isNaN(rent) || price 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalMonths)) / (Math.pow(1 + monthlyRate, totalMonths) – 1);
} else {
monthlyMortgage = loanAmount / totalMonths;
}
// Profit Calculations
var monthlyCashFlow = rent – expenses – monthlyMortgage;
var annualNOI = (rent – expenses) * 12;
var capRate = (annualNOI / price) * 100;
// Cash on Cash Calculation
var annualCashFlow = monthlyCashFlow * 12;
var cashOnCash = (annualCashFlow / downPayment) * 100;
// Display Results
document.getElementById('resMortgage').innerText = "$" + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCashFlow').innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + "%";
document.getElementById('resCoC').innerText = cashOnCash.toFixed(2) + "%";
document.getElementById('resultsArea').style.display = 'block';
// Color coding cash flow
if (monthlyCashFlow < 0) {
document.getElementById('resCashFlow').style.color = "#d93025";
} else {
document.getElementById('resCashFlow').style.color = "#1e8e3e";
}
}