function calculateRentalReturn() {
// Get Inputs
var price = parseFloat(document.getElementById('rp_purchase_price').value) || 0;
var downPercent = parseFloat(document.getElementById('rp_down_payment_percent').value) || 0;
var closingCosts = parseFloat(document.getElementById('rp_closing_costs').value) || 0;
var rehabCosts = parseFloat(document.getElementById('rp_rehab_costs').value) || 0;
var interestRate = parseFloat(document.getElementById('rp_interest_rate').value) || 0;
var loanTermYears = parseFloat(document.getElementById('rp_loan_term').value) || 0;
var monthlyRent = parseFloat(document.getElementById('rp_monthly_rent').value) || 0;
var otherIncome = parseFloat(document.getElementById('rp_other_income').value) || 0;
var annualTax = parseFloat(document.getElementById('rp_property_tax').value) || 0;
var annualInsurance = parseFloat(document.getElementById('rp_insurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('rp_hoa').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rp_vacancy').value) || 0;
var capexRate = parseFloat(document.getElementById('rp_capex').value) || 0;
var managementRate = parseFloat(document.getElementById('rp_management').value) || 0;
// Calculations – Initial Investment
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var totalInitialInvestment = downPaymentAmount + closingCosts + rehabCosts;
// Calculations – Mortgage (P&I)
var monthlyRate = (interestRate / 100) / 12;
var numPayments = loanTermYears * 12;
var monthlyMortgage = 0;
if (interestRate === 0) {
monthlyMortgage = loanAmount / numPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// Calculations – Income
var totalMonthlyIncome = monthlyRent + otherIncome;
var annualGrossIncome = totalMonthlyIncome * 12;
// Calculations – Operating Expenses
var monthlyVacancyCost = totalMonthlyIncome * (vacancyRate / 100);
var monthlyCapexCost = totalMonthlyIncome * (capexRate / 100);
var monthlyManagementCost = totalMonthlyIncome * (managementRate / 100);
var monthlyTax = annualTax / 12;
var monthlyInsurance = annualInsurance / 12;
var totalMonthlyExpenses = monthlyTax + monthlyInsurance + monthlyHOA + monthlyVacancyCost + monthlyCapexCost + monthlyManagementCost;
// Calculations – Net Operating Income (NOI)
var monthlyNOI = totalMonthlyIncome – totalMonthlyExpenses;
var annualNOI = monthlyNOI * 12;
// Calculations – Cash Flow
var monthlyCashFlow = monthlyNOI – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Calculations – Returns
var cocReturn = 0;
if (totalInitialInvestment > 0) {
cocReturn = (annualCashFlow / totalInitialInvestment) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// Display Results
document.getElementById('res_coc').innerText = cocReturn.toFixed(2) + "%";
document.getElementById('res_monthly_cashflow').innerText = "$" + monthlyCashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_mortgage').innerText = "$" + monthlyMortgage.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_total_investment').innerText = "$" + totalInitialInvestment.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_noi').innerText = "$" + annualNOI.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_cap_rate').innerText = capRate.toFixed(2) + "%";
// Styling based on result
var cocElement = document.getElementById('res_coc');
var flowElement = document.getElementById('res_monthly_cashflow');
if (cocReturn < 0) {
cocElement.classList.add('rp-bad');
cocElement.classList.remove('rp-highlight');
} else {
cocElement.classList.remove('rp-bad');
cocElement.classList.add('rp-highlight');
}
if (monthlyCashFlow < 0) {
flowElement.classList.add('rp-bad');
} else {
flowElement.classList.remove('rp-bad');
}
// Show result container
document.getElementById('rp_results').style.display = 'block';
}
Understanding Cash on Cash Return in Real Estate
When investing in rental properties, determining the profitability of your asset is crucial before signing any contracts. While metrics like "Cap Rate" measure the property's potential independently of financing, Cash on Cash (CoC) Return is arguably the most important metric for leveraged investors. It measures the annual return you made on the actual cash you invested.
What is the Formula?
The calculation is relatively straightforward but requires accurate inputs regarding income and expenses:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Annual Cash Flow is your Net Operating Income (Income minus Expenses) minus your debt service (mortgage payments). Total Cash Invested includes your down payment, closing costs, and any immediate repair or rehab costs.
Why Use This Calculator?
This Rental Property Calculator goes beyond simple mortgage math. It accounts for the "silent killers" of real estate returns, such as:
Vacancy Rates: You won't have a tenant 100% of the time. This calculator sets aside a percentage of rent to account for turnover.
CapEx & Maintenance: Roofs leak and toilets break. Allocating a percentage for repairs ensures your cash flow projection is realistic.
Management Fees: Even if you self-manage now, calculating for a property manager ensures the deal still works if you decide to outsource later.
What is a "Good" Cash on Cash Return?
While this varies by market and investor goals, here are general benchmarks:
8-12%: Generally considered a solid return in stable markets, beating the average stock market return.
15%+: Considered excellent, though often requires finding "fixer-uppers" or investing in higher-risk neighborhoods.
Below 5%: Unless the property is in a high-appreciation area, a return this low may not justify the illiquidity of real estate assets.
Use the calculator above to adjust your purchase price or down payment to see how leverage impacts your returns. Often, putting less money down (if the cash flow supports it) can skyrocket your Cash on Cash return due to the power of leverage.