When investing in real estate, knowing your Cash on Cash Return (CoC) is critical. Unlike a simple "Cap Rate" which looks at the property's yield as if bought with all cash, the CoC Return measures the efficiency of the actual cash you invested, accounting for leverage (your mortgage).
Total Cash Invested: Down Payment + Closing Costs + Any immediate repair costs.
Why This Metric Matters for Investors
Cash on Cash Return tells you how hard your money is working. If you invest $50,000 into a rental property and it generates $5,000 in positive cash flow per year, your CoC return is 10%. This allows you to compare real estate directly against other investment vehicles like stocks (average 7-8%) or bonds.
What is a Good Cash on Cash Return?
While targets vary by market and strategy, many real estate investors aim for a CoC return between 8% and 12%. Returns above 15% are considered excellent but often come with higher risks or require significant "sweat equity" in property rehabilitation.
function calculateRentalROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById("rp_price").value);
var downPayment = parseFloat(document.getElementById("rp_down").value);
var closingCosts = parseFloat(document.getElementById("rp_closing").value);
var interestRate = parseFloat(document.getElementById("rp_rate").value);
var loanTerm = parseFloat(document.getElementById("rp_term").value);
var rent = parseFloat(document.getElementById("rp_rent").value);
var expenses = parseFloat(document.getElementById("rp_expenses").value);
// 2. Validation
if (isNaN(price) || isNaN(downPayment) || isNaN(interestRate) || isNaN(loanTerm) || isNaN(rent) || isNaN(expenses)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (downPayment > price) {
alert("Down payment cannot exceed purchase price.");
return;
}
// 3. Mortgage Calculation
var loanAmount = price – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = loanTerm * 12;
// Handle 0% interest edge case, though rare
var monthlyMortgage = 0;
if (interestRate === 0) {
monthlyMortgage = loanAmount / numPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// 4. Cash Flow Calculation
var totalMonthlyOutflow = monthlyMortgage + expenses;
var monthlyCashFlow = rent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// 5. Cash on Cash Return Calculation
var totalCashInvested = downPayment + closingCosts;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 6. Display Results
var resultDiv = document.getElementById("rp_results");
var resCashFlow = document.getElementById("res_cashflow");
var resCoc = document.getElementById("res_coc");
var resMortgage = document.getElementById("res_mortgage");
resultDiv.style.display = "block";
// Currency Formatting
resMortgage.innerText = "$" + monthlyMortgage.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Cash Flow Color Logic (Red if negative)
if (monthlyCashFlow < 0) {
resCashFlow.style.color = "#c0392b";
resCashFlow.innerText = "-$" + Math.abs(monthlyCashFlow).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
} else {
resCashFlow.style.color = "#27ae60";
resCashFlow.innerText = "$" + monthlyCashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
// CoC Color Logic
if (cocReturn < 0) {
resCoc.style.color = "#c0392b";
} else {
resCoc.style.color = "#2980b9";
}
resCoc.innerText = cocReturn.toFixed(2) + "%";
}