Analyze your real estate investment performance instantly.
Purchase Information
Loan Details
Income & Expenses (Monthly/Annual)
Cash on Cash Return (CoC)0.00%
Monthly Cash Flow$0.00
Annual Cash Flow$0.00
Net Operating Income (NOI)$0.00
Cap Rate0.00%
Total Cash Invested$0.00
Monthly Mortgage Payment (P&I)$0.00
Understanding Real Estate Investment Metrics
Investing in rental properties is one of the most reliable ways to build wealth, but simply buying a property doesn't guarantee a profit. To succeed, investors rely on specific financial metrics to evaluate whether a deal is worth their capital. This calculator focuses on two of the most critical metrics: Cash on Cash Return and Cap Rate.
What is Cash on Cash Return?
Cash on Cash (CoC) Return measures the annual return the investor made on the property in relation to the amount of mortgage paid during the same year. It is considered one of the most important metrics because it tells you exactly how hard your actual cash investment is working for you.
Formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Unlike simple ROI, CoC takes into account that you likely used leverage (a loan) to buy the property. It only looks at the cash you put down (Down Payment + Closing Costs), not the total price of the house.
What is a Good Cash on Cash Return?
While target returns vary by investor strategy and location, here are general benchmarks:
8-12%: Generally considered a solid return for most individual investors.
Above 15%: excellent, though often harder to find in hot markets.
Below 5%: Might be acceptable in high-appreciation areas, but risky for cash-flow focused investors.
Cap Rate vs. Cash on Cash Return
You will notice our calculator also provides the Cap Rate (Capitalization Rate). It is crucial to understand the difference:
Cap Rate: Measures the property's natural profitability if you bought it with all cash. It ignores your loan structure. It is calculated as Net Operating Income (NOI) divided by Purchase Price.
Cash on Cash: Measures your specific return based on how you financed the deal. It includes your mortgage payments in the calculation.
How to Improve Your Returns
If the calculator shows a negative or low return, consider these levers:
Lower the Purchase Price: Negotiate a better deal to reduce your loan and increase equity.
Increase Rent: Small increases in monthly rent significantly boost NOI.
Reduce Vacancy: Improve tenant retention or marketing to keep the property occupied.
Refinance: Securing a lower interest rate will lower your monthly debt service, increasing cash flow.
function calculateROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var termYears = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var annualTax = parseFloat(document.getElementById('annualTax').value) || 0;
var annualInsurance = parseFloat(document.getElementById('annualInsurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('monthlyHOA').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var repairRate = parseFloat(document.getElementById('repairRate').value) || 0;
// 2. Calculate Mortgage (Principal & Interest)
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var totalPayments = termYears * 12;
var monthlyMortgage = 0;
if (loanAmount > 0 && monthlyRate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
} else if (loanAmount > 0 && monthlyRate === 0) {
monthlyMortgage = loanAmount / totalPayments;
}
// 3. Calculate Income & Operating Expenses
var grossAnnualRent = monthlyRent * 12;
var vacancyLoss = grossAnnualRent * (vacancyRate / 100);
var effectiveGrossIncome = grossAnnualRent – vacancyLoss;
var maintenanceCost = grossAnnualRent * (repairRate / 100);
var annualHOA = monthlyHOA * 12;
var totalOperatingExpenses = annualTax + annualInsurance + annualHOA + maintenanceCost;
// 4. Calculate Key Metrics
var netOperatingIncome = effectiveGrossIncome – totalOperatingExpenses; // NOI
var annualDebtService = monthlyMortgage * 12;
var annualCashFlow = netOperatingIncome – annualDebtService;
var monthlyCashFlow = annualCashFlow / 12;
var totalCashInvested = downPayment + closingCosts;
var cashOnCashReturn = 0;
if (totalCashInvested > 0) {
cashOnCashReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (netOperatingIncome / price) * 100;
}
// 5. Update UI
document.getElementById('resCoC').innerHTML = cashOnCashReturn.toFixed(2) + "%";
document.getElementById('resCoC').style.color = cashOnCashReturn >= 0 ? "#27ae60" : "#c0392b";
document.getElementById('resMonthlyCashFlow').innerHTML = formatCurrency(monthlyCashFlow);
document.getElementById('resMonthlyCashFlow').style.color = monthlyCashFlow >= 0 ? "#2c3e50" : "#c0392b";
document.getElementById('resAnnualCashFlow').innerHTML = formatCurrency(annualCashFlow);
document.getElementById('resNOI').innerHTML = formatCurrency(netOperatingIncome);
document.getElementById('resCapRate').innerHTML = capRate.toFixed(2) + "%";
document.getElementById('resTotalInvested').innerHTML = formatCurrency(totalCashInvested);
document.getElementById('resMortgage').innerHTML = formatCurrency(monthlyMortgage);
// Show results
document.getElementById('results-area').style.display = "block";
}
function formatCurrency(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}