Calculate Cap Rate, Cash-on-Cash Return, and Monthly Cash Flow.
Investment Summary
Monthly Mortgage (P&I):$0.00
Total Monthly Expenses:$0.00
Monthly Cash Flow:$0.00
Cap Rate:0.00%
Cash-on-Cash Return:0.00%
Understanding Your Rental Property ROI
Investing in real estate requires more than just finding a nice house; it requires a deep dive into the numbers. This Rental Property ROI Calculator helps investors determine if a property is a "deal" or a "dud" 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 as Net Operating Income (NOI) divided by the purchase price.
Cash-on-Cash (CoC) Return: This is often considered the most important metric for investors using leverage. it measures the annual cash flow relative to the actual amount of cash you invested (down payment and closing costs).
Net Operating Income (NOI): This is your total income minus all operating expenses (taxes, insurance, maintenance) before paying the mortgage.
Realistic Example Analysis
Imagine you purchase a property for $300,000 with 20% down ($60,000). Your monthly rent is $2,500. After accounting for a 7% interest rate, property taxes, and a 10% buffer for maintenance, your monthly cash flow might be $350. This results in a Cash-on-Cash return of roughly 7%, which many investors consider a solid baseline for residential real estate.
How to Improve Your ROI
If your results are lower than expected, consider these three strategies:
Value-Add: Renovate the unit to justify higher market rents.
Expense Reduction: Shop for better insurance rates or appeal your property tax assessment.
Refinancing: If interest rates drop, refinancing can significantly increase your monthly cash flow.
function calculateROI() {
var price = parseFloat(document.getElementById("propPrice").value);
var downPct = parseFloat(document.getElementById("downPayment").value);
var rate = parseFloat(document.getElementById("interestRate").value);
var term = parseFloat(document.getElementById("loanTerm").value);
var rent = parseFloat(document.getElementById("monthlyRent").value);
var taxes = parseFloat(document.getElementById("annualTaxes").value);
var ins = parseFloat(document.getElementById("annualIns").value);
var maint = parseFloat(document.getElementById("maintRate").value);
if (isNaN(price) || isNaN(rent)) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// Mortgage Calculation
var downAmt = price * (downPct / 100);
var loanAmt = price – downAmt;
var monthlyRate = (rate / 100) / 12;
var numOfPayments = term * 12;
var monthlyMortgage = 0;
if (rate > 0) {
monthlyMortgage = loanAmt * (monthlyRate * Math.pow(1 + monthlyRate, numOfPayments)) / (Math.pow(1 + monthlyRate, numOfPayments) – 1);
} else {
monthlyMortgage = loanAmt / numOfPayments;
}
// Expenses Calculation
var monthlyTaxes = taxes / 12;
var monthlyIns = ins / 12;
var monthlyMaint = rent * (maint / 100);
var totalExpenses = monthlyTaxes + monthlyIns + monthlyMaint;
// Returns
var monthlyCashFlow = rent – monthlyMortgage – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var annualNOI = (rent – totalExpenses) * 12;
var capRate = (annualNOI / price) * 100;
var cashOnCash = (annualCashFlow / downAmt) * 100;
// Display
document.getElementById("resMortgage").innerText = "$" + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resExpenses").innerText = "$" + (totalExpenses + 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("results").style.display = "block";
}