function calculateRentalResults() {
// Get inputs
var price = parseFloat(document.getElementById('rc_price').value);
var downPercent = parseFloat(document.getElementById('rc_down_payment').value);
var interestRate = parseFloat(document.getElementById('rc_interest').value);
var termYears = parseFloat(document.getElementById('rc_term').value);
var closingCosts = parseFloat(document.getElementById('rc_closing_costs').value);
var rehabCosts = parseFloat(document.getElementById('rc_rehab').value);
var rent = parseFloat(document.getElementById('rc_rent').value);
var vacancyRate = parseFloat(document.getElementById('rc_vacancy').value);
var taxes = parseFloat(document.getElementById('rc_taxes').value);
var insurance = parseFloat(document.getElementById('rc_insurance').value);
var maintenanceRate = parseFloat(document.getElementById('rc_maintenance').value);
var mgmtRate = parseFloat(document.getElementById('rc_mgmt').value);
var errorBox = document.getElementById('rc_error_msg');
var resultsBox = document.getElementById('rc_results_box');
// Defaults if empty
if (isNaN(closingCosts)) closingCosts = 0;
if (isNaN(rehabCosts)) rehabCosts = 0;
if (isNaN(vacancyRate)) vacancyRate = 0;
if (isNaN(maintenanceRate)) maintenanceRate = 0;
if (isNaN(mgmtRate)) mgmtRate = 0;
// Validate critical inputs
if (isNaN(price) || isNaN(downPercent) || isNaN(interestRate) || isNaN(termYears) || isNaN(rent) || isNaN(taxes) || isNaN(insurance)) {
errorBox.innerText = "Please fill in all required fields with valid numbers.";
errorBox.style.display = 'block';
resultsBox.style.display = 'none';
return;
}
errorBox.style.display = 'none';
// 1. Calculate Mortgage
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (interestRate / 100) / 12;
var numPayments = termYears * 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);
}
// 2. Calculate Initial Cash Investment
var totalInvested = downPaymentAmount + closingCosts + rehabCosts;
// 3. Calculate Income
var vacancyLoss = rent * (vacancyRate / 100);
var effectiveIncome = rent – vacancyLoss;
// 4. Calculate Expenses
var monthlyTaxes = taxes / 12;
var monthlyInsurance = insurance / 12;
var maintenanceCost = rent * (maintenanceRate / 100);
var mgmtCost = effectiveIncome * (mgmtRate / 100); // Usually based on collected rent
var totalMonthlyExpenses = monthlyTaxes + monthlyInsurance + maintenanceCost + mgmtCost;
// 5. Calculate Metrics
var monthlyNOI = effectiveIncome – totalMonthlyExpenses;
var monthlyCashFlow = monthlyNOI – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
var cocReturn = (annualCashFlow / totalInvested) * 100;
// Display Results
document.getElementById('res_total_invested').innerText = '$' + totalInvested.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('res_mortgage').innerText = '$' + monthlyMortgage.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_expenses').innerText = '$' + totalMonthlyExpenses.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_noi').innerText = '$' + monthlyNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cashFlowEl = document.getElementById('res_cashflow');
cashFlowEl.innerText = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cashFlowEl.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
var cocEl = document.getElementById('res_coc');
cocEl.innerText = cocReturn.toFixed(2) + '%';
cocEl.style.color = cocReturn >= 0 ? '#27ae60' : '#c0392b';
resultsBox.style.display = 'block';
}
Understanding Rental Property Cash on Cash Return
Investing in real estate is a powerful way to build wealth, but simply buying a property doesn't guarantee a profit. To accurately assess the performance of a rental property, seasoned investors rely on specific metrics. The most critical of these for immediate cash flow analysis is the Cash on Cash (CoC) Return.
What is Cash on Cash Return?
Cash on Cash Return is a percentage that measures the annual pre-tax cash flow of a property against the total cash invested. Unlike ROI (Return on Investment), which may include equity paydown or appreciation, CoC strictly focuses on the cash income you receive relative to the cash you put into the deal.
Formula: Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Key Inputs Explained
Down Payment & Closing Costs: This represents your "skin in the game." If you buy a $200,000 property with 20% down, your down payment is $40,000. Adding closing costs (e.g., $5,000) brings your initial investment to $45,000.
Net Operating Income (NOI): This is your total rental income minus all operating expenses (vacancy, taxes, insurance, management, repairs) but excluding mortgage payments.
Cash Flow: This is what ends up in your pocket. It is calculated by taking the NOI and subtracting your monthly debt service (mortgage payment).
Why is this Calculator Important?
Using a Rental Property Cash on Cash Return Calculator helps you filter out bad deals quickly. A property might look good because the rent covers the mortgage, but once you factor in vacancy (usually 5-8%), maintenance reserves (5-10%), and property management fees, the cash flow might turn negative.
What is a Good Cash on Cash Return?
"Good" is subjective and depends on the market and the investor's goals. However, a common benchmark for residential real estate is 8% to 12%. In highly appreciative markets, investors might accept a lower CoC return (e.g., 4-6%) in exchange for long-term value growth. In lower-appreciation markets, investors often seek 12% or higher to justify the risk.
Use the calculator above to run scenarios with different rents, interest rates, and purchase prices to find the investment that meets your financial goals.