.roi-calc-row { display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 15px; }
.roi-calc-col { flex: 1; min-width: 250px; }
.roi-calc-label { display: block; font-weight: 600; margin-bottom: 5px; font-size: 14px; color: #444; }
.roi-calc-input { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; box-sizing: border-box; }
.roi-calc-input:focus { border-color: #2c3e50; outline: none; }
.roi-btn { width: 100%; padding: 15px; background: #2980b9; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; margin-top: 10px; transition: background 0.3s; }
.roi-btn:hover { background: #2471a3; }
.roi-results { margin-top: 25px; background: #f8f9fa; padding: 20px; border-radius: 6px; border-left: 5px solid #2980b9; display: none; }
.roi-result-item { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee; }
.roi-result-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.roi-result-val { font-weight: 700; color: #2c3e50; }
.roi-highlight { color: #27ae60; font-size: 1.2em; }
.roi-article h2 { color: #2c3e50; margin-top: 30px; border-bottom: 2px solid #eee; padding-bottom: 10px; }
.roi-article p { line-height: 1.6; color: #555; margin-bottom: 15px; }
.roi-article ul { margin-bottom: 15px; padding-left: 20px; }
.roi-article li { margin-bottom: 8px; line-height: 1.5; }
Monthly Cash Flow:
$0.00
Cash on Cash Return (Annual):
0.00%
Cap Rate:
0.00%
Net Operating Income (NOI) / Year:
$0.00
Total Initial Investment:
$0.00
Monthly Mortgage Payment (P&I):
$0.00
Understanding Cash on Cash Return
When investing in rental properties, Cash on Cash Return (CoC) is one of the most critical metrics for evaluating a deal. Unlike standard Return on Investment (ROI), which might factor in loan paydown and appreciation, Cash on Cash Return focuses strictly on the cash income earned on the cash invested. It tells you exactly how hard your actual dollars are working for you.
How It Is Calculated
The formula for Cash on Cash Return is:
Annual Pre-Tax Cash Flow / Total Cash Invested
- Annual Cash Flow: This is your Net Operating Income (NOI) minus your annual debt service (mortgage payments). It represents the profit left over after all expenses and loans are paid.
- Total Cash Invested: This includes your down payment, closing costs, and any immediate repair or rehabilitation costs needed to get the property rented.
What is a Good Cash on Cash Return?
While targets vary by investor and market, a common benchmark for a "good" return is between 8% and 12%. In highly competitive markets, investors might accept 5-7% anticipating appreciation, while in cash-flow-heavy markets, investors might seek 15% or higher.
Key Factors Affecting Your ROI
Several variables can drastically change your investment outlook:
- Vacancy Rate: Always budget for vacancy. A standard assumption is 5-8% (about 3 weeks per year), though this varies by location.
- Management Fees: Even if you plan to self-manage, it is wise to calculate the deal with a 10% management fee to ensure the asset performs well as a passive investment.
- Maintenance: Older homes generally require higher maintenance reserves (10-15%) compared to new construction (5%).
Use the calculator above to adjust these variables and stress-test your potential investment property before making an offer.
function calculateROI() {
// Get Inputs
var price = parseFloat(document.getElementById('propPrice').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var closing = parseFloat(document.getElementById('closingCosts').value) || 0;
var rehab = parseFloat(document.getElementById('rehabCosts').value) || 0;
var rate = parseFloat(document.getElementById('interestRate').value) || 0;
var years = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancy = parseFloat(document.getElementById('vacancyRate').value) || 0;
var tax = parseFloat(document.getElementById('annualTax').value) || 0;
var insurance = parseFloat(document.getElementById('annualInsurance').value) || 0;
var maintPercent = parseFloat(document.getElementById('maintenancePercent').value) || 0;
var mgmtPercent = parseFloat(document.getElementById('mgmtFee').value) || 0;
// Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var totalInitialInvest = downPayment + closing + rehab;
// Mortgage Calculation
var monthlyRate = (rate / 100) / 12;
var numPayments = years * 12;
var monthlyMortgage = 0;
if (rate > 0 && years > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
}
// Expenses
var monthlyVacancyCost = monthlyRent * (vacancy / 100);
var monthlyMaintCost = monthlyRent * (maintPercent / 100);
var monthlyMgmtCost = monthlyRent * (mgmtPercent / 100);
var monthlyTax = tax / 12;
var monthlyIns = insurance / 12;
var totalMonthlyExpensesOp = monthlyVacancyCost + monthlyMaintCost + monthlyMgmtCost + monthlyTax + monthlyIns;
// NOI (Net Operating Income)
var monthlyNOI = monthlyRent – totalMonthlyExpensesOp;
var annualNOI = monthlyNOI * 12;
// Cash Flow
var monthlyCashFlow = monthlyNOI – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Returns
var cocReturn = 0;
if (totalInitialInvest > 0) {
cocReturn = (annualCashFlow / totalInitialInvest) * 100;
}
var capRate = 0;
var costBasis = price + closing + rehab;
// Cap rate is typically NOI / Current Value or Purchase Price. Using Cost Basis here for acquisition analysis.
if (costBasis > 0) {
capRate = (annualNOI / costBasis) * 100;
}
// Formatting currency
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
// Display Results
document.getElementById('resCashFlow').innerHTML = fmtMoney.format(monthlyCashFlow);
document.getElementById('resCocReturn').innerHTML = cocReturn.toFixed(2) + '%';
document.getElementById('resCapRate').innerHTML = capRate.toFixed(2) + '%';
document.getElementById('resNOI').innerHTML = fmtMoney.format(annualNOI);
document.getElementById('resInitialInvest').innerHTML = fmtMoney.format(totalInitialInvest);
document.getElementById('resMortgage').innerHTML = fmtMoney.format(monthlyMortgage);
// Styling colors for positive/negative flow
var flowEl = document.getElementById('resCashFlow');
var cocEl = document.getElementById('resCocReturn');
if(monthlyCashFlow >= 0) {
flowEl.style.color = '#27ae60';
cocEl.style.color = '#27ae60';
} else {
flowEl.style.color = '#c0392b';
cocEl.style.color = '#c0392b';
}
document.getElementById('resultsArea').style.display = 'block';
}