Investing in real estate is a numbers game. Whether you are analyzing a potential Airbnb, a single-family long-term rental, or a duplex, understanding the core metrics of Cash Flow, Cash on Cash Return, and Cap Rate is essential for making profitable decisions.
1. Monthly Cash Flow
Cash flow is the net amount of profit you pocket every month after all expenses are paid. It is calculated as:
Total Rental Income – (Mortgage Payment + Operating Expenses)
Positive Cash Flow: Your property pays for itself and generates income. This is the goal for most buy-and-hold investors.
Negative Cash Flow: You are paying out of pocket to hold the property. This might be acceptable if you are banking on significant appreciation, but it carries higher risk.
2. Cash on Cash Return (CoC)
This metric tells you how hard your actual invested cash is working. It compares your annual pre-tax cash flow to the total cash invested (Down Payment + Closing Costs + Rehab Costs).
Example: If you invest $50,000 cash to buy a house and it generates $5,000 in net cash flow per year, your Cash on Cash return is 10%.
Generally, a CoC return of 8-12% is considered solid in many markets, though this varies by strategy.
3. Cap Rate (Capitalization Rate)
Cap Rate measures the property's natural profitability irrespective of how you finance it (i.e., assuming you bought it all cash). It helps you compare different properties apples-to-apples.
Formula: Net Operating Income (NOI) / Purchase Price
Note that NOI excludes mortgage payments. A higher Cap Rate generally implies a better return relative to the price, but often comes with higher risk or lower appreciation potential.
How to Use This Calculator
Enter your purchase details, financing terms, and estimated expenses. Be honest with your expense estimates! Many new investors forget to account for Vacancy (times when the unit is empty) and Maintenance (saving for roof repairs, HVAC, etc.). A common rule of thumb is to set aside 5-10% of rent for each.
function calculateRentalROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('rpcPurchasePrice').value);
var downPayment = parseFloat(document.getElementById('rpcDownPayment').value);
var rate = parseFloat(document.getElementById('rpcInterestRate').value);
var years = parseFloat(document.getElementById('rpcLoanTerm').value);
var monthlyRent = parseFloat(document.getElementById('rpcMonthlyRent').value);
var vacancyRate = parseFloat(document.getElementById('rpcVacancyRate').value);
var annualTax = parseFloat(document.getElementById('rpcPropertyTax').value);
var annualInsurance = parseFloat(document.getElementById('rpcInsurance').value);
var monthlyMaintenance = parseFloat(document.getElementById('rpcMaintenance').value);
var monthlyHOA = parseFloat(document.getElementById('rpcHOA').value);
// Validation
if (isNaN(price) || isNaN(downPayment) || isNaN(monthlyRent)) {
alert("Please enter valid numbers for Price, Down Payment, and Rent.");
return;
}
// 2. Calculate Mortgage (Principal & Interest)
var loanAmount = price – downPayment;
var monthlyMortgage = 0;
if (loanAmount > 0 && rate > 0) {
var monthlyRate = (rate / 100) / 12;
var numberOfPayments = years * 12;
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0 && rate === 0) {
monthlyMortgage = loanAmount / (years * 12);
}
// 3. Calculate Effective Income (after vacancy)
var vacancyLoss = monthlyRent * (vacancyRate / 100);
var effectiveIncome = monthlyRent – vacancyLoss;
// 4. Calculate Operating Expenses (Monthly)
var monthlyTax = annualTax / 12;
var monthlyInsurance = annualInsurance / 12;
var totalOperatingExpenses = monthlyTax + monthlyInsurance + monthlyMaintenance + monthlyHOA;
// 5. Calculate Metrics
var totalMonthlyExpenses = totalOperatingExpenses + monthlyMortgage;
var monthlyCashFlow = effectiveIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Net Operating Income (NOI) = Income – Operating Expenses (Excludes Mortgage)
var annualNOI = (effectiveIncome * 12) – (totalOperatingExpenses * 12);
// Cash on Cash Return
var cocReturn = 0;
if (downPayment > 0) {
cocReturn = (annualCashFlow / downPayment) * 100;
}
// Cap Rate
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 6. Display Results
var resultBox = document.getElementById('rpcResultBox');
resultBox.style.display = 'block';
// Format Currency Function
var fmt = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('rpcResCashFlow').innerText = fmt.format(monthlyCashFlow);
document.getElementById('rpcResCoC').innerText = cocReturn.toFixed(2) + "%";
document.getElementById('rpcResCapRate').innerText = capRate.toFixed(2) + "%";
document.getElementById('rpcResIncome').innerText = fmt.format(effectiveIncome);
document.getElementById('rpcResExpenses').innerText = fmt.format(totalMonthlyExpenses);
document.getElementById('rpcResMortgage').innerText = fmt.format(monthlyMortgage);
// Styling for positive/negative cash flow
var cashFlowElement = document.getElementById('rpcResCashFlow');
if (monthlyCashFlow >= 0) {
cashFlowElement.style.color = "#2c7744";
} else {
cashFlowElement.style.color = "#dc3545";
}
}