Cash on Cash Return (CoC) is a metric widely used in real estate transactions to calculate the cash income earned on the cash invested in a property. It measures the annual return the investor made on the property in relation to the amount of mortgage paid during the same year.
Unlike standard Return on Investment (ROI) which might consider total debt, Cash on Cash Return looks strictly at the actual cash flow relative to the cash you put down (down payment plus closing costs).
How to Calculate Cash on Cash Return
The formula for Cash on Cash Return is relatively straightforward:
This means your cash on cash return is 8%. This is a crucial metric for comparing real estate investments against other vehicles like stocks or bonds.
Why is this Metric Important?
Cash on Cash Return allows investors to analyze the performance of a property based on the actual money out of their pocket. It is particularly useful when financing is involved, as leverage (using a loan) significantly changes the return profile compared to an all-cash purchase.
function calculateCoC() {
// Get Inputs
var price = parseFloat(document.getElementById("propPrice").value) || 0;
var downPercent = parseFloat(document.getElementById("downPayment").value) || 0;
var closing = parseFloat(document.getElementById("closingCosts").value) || 0;
var rate = parseFloat(document.getElementById("interestRate").value) || 0;
var years = parseFloat(document.getElementById("loanTerm").value) || 0;
var rent = parseFloat(document.getElementById("monthlyRent").value) || 0;
var taxYear = parseFloat(document.getElementById("annualTax").value) || 0;
var insYear = parseFloat(document.getElementById("annualIns").value) || 0;
var hoa = parseFloat(document.getElementById("monthlyHOA").value) || 0;
var maint = parseFloat(document.getElementById("monthlyMaint").value) || 0;
// 1. Calculate Loan & Mortgage
var downAmount = price * (downPercent / 100);
var loanAmount = price – downAmount;
var totalInvested = downAmount + closing;
var mortgage = 0;
if (loanAmount > 0 && rate > 0 && years > 0) {
var monthlyRate = (rate / 100) / 12;
var numPayments = years * 12;
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
mortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else if (loanAmount > 0 && rate === 0) {
// Simple division if 0% interest
mortgage = loanAmount / (years * 12);
}
// 2. Calculate Monthly Expenses
var taxMo = taxYear / 12;
var insMo = insYear / 12;
var totalMonthlyExpenses = mortgage + hoa + maint + taxMo + insMo;
// 3. Calculate Cash Flow
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 4. Calculate CoC Return
var coc = 0;
if (totalInvested > 0) {
coc = (annualCashFlow / totalInvested) * 100;
}
// Display Results
document.getElementById("resultsArea").style.display = "block";
document.getElementById("resInvested").innerText = "$" + totalInvested.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resMortgage").innerText = "$" + mortgage.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resExpenses").innerText = "$" + totalMonthlyExpenses.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Coloring Cash Flow
var moFlowEl = document.getElementById("resCashFlowMo");
moFlowEl.innerText = "$" + monthlyCashFlow.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2});
moFlowEl.style.color = monthlyCashFlow >= 0 ? "#28a745" : "#dc3545";
var yrFlowEl = document.getElementById("resCashFlowYr");
yrFlowEl.innerText = "$" + annualCashFlow.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2});
yrFlowEl.style.color = annualCashFlow >= 0 ? "#28a745" : "#dc3545";
// Coloring CoC
var cocEl = document.getElementById("resCoC");
cocEl.innerText = coc.toLocaleString("en-US", {minimumFractionDigits: 2, maximumFractionDigits: 2}) + "%";
cocEl.style.color = coc >= 0 ? "#28a745" : "#dc3545";
}