Calculate Cap Rate, Cash on Cash Return, and Monthly Cash Flow
Purchase Details
Financing
30 Years
20 Years
15 Years
10 Years
Income & Expenses
.
Cap Rate
0.00%
Cash on Cash
0.00%
Monthly Cash Flow
$0.00
NOI (Annual)
$0.00
Annual Financial Breakdown
Gross Scheduled Income$0.00
Vacancy Loss-$0.00
Operating Expenses-$0.00
Net Operating Income (NOI)$0.00
Annual Mortgage Payments-$0.00
Total Annual Cash Flow$0.00
function calculateROI() {
// 1. Get Inputs and validate
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var repairCosts = parseFloat(document.getElementById('repairCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('loanTerm').value) || 30;
var isCashPurchase = document.getElementById('cashPurchase').checked;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var propertyTax = parseFloat(document.getElementById('propertyTax').value) || 0;
var insurance = parseFloat(document.getElementById('insurance').value) || 0;
var hoaFees = parseFloat(document.getElementById('hoaFees').value) || 0;
var maintenance = parseFloat(document.getElementById('maintenance').value) || 0;
var mgmtFeePercent = parseFloat(document.getElementById('mgmtFee').value) || 0;
// 2. Initial Calculations
var loanAmount = Math.max(0, purchasePrice – downPayment);
var totalInitialInvestment = downPayment + closingCosts + repairCosts;
// 3. Mortgage Payment Calculation (if not cash purchase)
var monthlyMortgage = 0;
if (!isCashPurchase && loanAmount > 0 && interestRate > 0) {
var r = (interestRate / 100) / 12;
var n = loanTerm * 12;
monthlyMortgage = loanAmount * ( (r * Math.pow(1 + r, n)) / (Math.pow(1 + r, n) – 1) );
} else if (!isCashPurchase && loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / (loanTerm * 12);
}
var annualMortgage = monthlyMortgage * 12;
// 4. Income Calculations
var annualGrossIncome = monthlyRent * 12;
var annualVacancyLoss = annualGrossIncome * (vacancyRate / 100);
var effectiveGrossIncome = annualGrossIncome – annualVacancyLoss;
// 5. Expense Calculations
var annualMgmtFee = effectiveGrossIncome * (mgmtFeePercent / 100);
var annualOperatingExpenses = propertyTax + insurance + (hoaFees * 12) + (maintenance * 12) + annualMgmtFee;
// 6. NOI & Cash Flow
var netOperatingIncome = effectiveGrossIncome – annualOperatingExpenses;
var annualCashFlow = netOperatingIncome – annualMortgage;
var monthlyCashFlow = annualCashFlow / 12;
// 7. Metrics
var capRate = 0;
if (purchasePrice > 0) {
capRate = (netOperatingIncome / purchasePrice) * 100;
}
var cashOnCash = 0;
if (totalInitialInvestment > 0) {
cashOnCash = (annualCashFlow / totalInitialInvestment) * 100;
}
// 8. Display Results
document.getElementById('resultsSection').style.display = 'block';
// Helper for formatting currency
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('resultCapRate').innerHTML = capRate.toFixed(2) + "%";
document.getElementById('resultCoC').innerHTML = cashOnCash.toFixed(2) + "%";
var cfElem = document.getElementById('resultCashFlow');
cfElem.innerHTML = fmtMoney.format(monthlyCashFlow);
cfElem.className = monthlyCashFlow >= 0 ? "roi-result-value positive-cf" : "roi-result-value negative-cf";
document.getElementById('resultNOI').innerHTML = fmtMoney.format(netOperatingIncome);
// Breakdown table updates
document.getElementById('bdGrossIncome').innerHTML = fmtMoney.format(annualGrossIncome);
document.getElementById('bdVacancy').innerHTML = "-" + fmtMoney.format(annualVacancyLoss);
document.getElementById('bdExpenses').innerHTML = "-" + fmtMoney.format(annualOperatingExpenses);
document.getElementById('bdNOI').innerHTML = fmtMoney.format(netOperatingIncome);
document.getElementById('bdMortgage').innerHTML = "-" + fmtMoney.format(annualMortgage);
document.getElementById('bdTotalCashFlow').innerHTML = fmtMoney.format(annualCashFlow);
}
Understanding Rental Property Returns
Investing in real estate is one of the most popular ways to build wealth, but simply buying a property and renting it out doesn't guarantee a profit. To make informed investment decisions, you must understand the key metrics of rental property performance: Cash Flow, Cap Rate, and Cash on Cash Return.
What is the Capitalization Rate (Cap Rate)?
The Cap Rate is a fundamental metric used to estimate the potential return on an investment property, assuming the property was bought entirely with cash. It helps investors compare the profitability of different properties regardless of how they are financed.
Formula: Cap Rate = (Net Operating Income / Purchase Price) × 100
A higher cap rate generally implies a higher potential return, but often comes with higher risk (e.g., a property in a declining neighborhood). A "good" cap rate varies by market, but generally, investors look for 4% to 10%.
What is Cash on Cash Return?
While Cap Rate looks at the property's raw potential, Cash on Cash Return measures the return on the actual cash you invested. This is crucial if you are using leverage (a mortgage).
Formula: Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Total Cash Invested includes your down payment, closing costs, and initial repair costs. This metric tells you how hard your specific dollars are working for you. For example, if you invest $50,000 cash and generate $5,000 in positive cash flow per year, your Cash on Cash return is 10%.
Net Operating Income (NOI) Explained
Net Operating Income is the total income a property generates minus all necessary operating expenses. Important notes on NOI: