Investing in real estate requires a deep dive into the numbers. To determine if a property is a "good deal," investors primarily look at two metrics: Cap Rate and Cash-on-Cash Return.
What is Cap Rate?
The Capitalization Rate (Cap Rate) measures the profitability of a property regardless of the financing method. It is calculated as:
Cap Rate = (Annual Net Operating Income / Purchase Price) x 100
What is Cash-on-Cash (CoC) Return?
This is often the more important metric for investors using leverage (mortgages). It measures the annual cash flow relative to the actual cash you came out of pocket with.
CoC ROI = (Annual Cash Flow / Total Cash Invested) x 100
Example Calculation
Purchase Price: $200,000
Closing/Renovation: $20,000
Monthly Rent: $2,000 ($24,000/yr)
Expenses: $500/mo ($6,000/yr)
Mortgage: $900/mo
In this scenario, the Net Operating Income (NOI) is $18,000 ($24k – $6k). The Cap Rate would be 9% ($18,000 / $200,000). If your total cash out of pocket was $60,000 (down payment + closing + repairs), and your annual cash flow after mortgage is $7,200, your Cash-on-Cash return is 12%.
function calculateRentalROI() {
// Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var closing = parseFloat(document.getElementById('closingCosts').value) || 0;
var repairs = parseFloat(document.getElementById('repairBudget').value) || 0;
var rent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var expenses = parseFloat(document.getElementById('monthlyExpenses').value) || 0;
var mortgage = parseFloat(document.getElementById('monthlyMortgage').value) || 0;
// Logic Calculations
var totalInvestment = closing + repairs + (price * 0.25); // Assumes 25% down payment logic for ROI if price is used, but for simplicity we calculate based on the total acquisition cost in this context.
// Standard CoC logic uses actual cash out of pocket. Let's assume the user enters "Total Investment" or we calculate based on full price + costs for a cash buyer, OR we use a standard 25% down assumption.
// To make it most accurate for the UI: Total Out of Pocket = (Price * 0.25) + Closing + Repairs
var downPayment = price * 0.25;
var cashOutPocket = downPayment + closing + repairs;
var annualGrossRent = rent * 12;
var annualExpenses = expenses * 12;
var annualNOI = annualGrossRent – annualExpenses;
var monthlyCashFlow = rent – expenses – mortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Metrics
var capRate = (annualNOI / price) * 100;
var cashOnCash = (annualCashFlow / cashOutPocket) * 100;
// Validation
if (price <= 0 || rent <= 0) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// Update Display
document.getElementById('resCashFlow').innerHTML = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCapRate').innerHTML = capRate.toFixed(2) + "%";
document.getElementById('resTotalCost').innerHTML = "$" + cashOutPocket.toLocaleString();
document.getElementById('resCoC').innerHTML = cashOnCash.toFixed(2) + "%";
// Show Results
document.getElementById('roiResults').style.display = "block";
// Smooth scroll to results
document.getElementById('roiResults').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}