Analyze the potential profitability of your real estate investment. Enter the property details, financing terms, and estimated expenses to calculate Cash Flow, Cap Rate, and Cash on Cash Return.
Purchase & Financing
Income
Expenses
Investment Analysis
Monthly Cash Flow
$0.00
Cash on Cash Return
0.00%
Cap Rate
0.00%
Monthly Breakdown
Gross Rent$0
Vacancy Loss-$0
Operating Expenses (Tax, Ins, Maint, HOA)-$0
Net Operating Income (NOI)$0
Mortgage Payment-$0
Net Cash Flow$0
Understanding Rental Property Investment Metrics
What is Cash Flow?
Cash flow is the net amount of money moving into and out of your rental property business. Positive cash flow means your property generates more income than it costs to own and operate, providing you with monthly profit. It is calculated by subtracting all expenses (mortgage, taxes, insurance, vacancy, repairs) from the rental income.
Cash on Cash Return vs. Cap Rate
These are two critical metrics for evaluating real estate performance:
Cash on Cash Return (CoC): This measures the annual return on the actual cash you invested (down payment + closing costs). It helps you compare the rental property's performance against other investments like stocks or bonds.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return assuming it was bought with cash (no mortgage). It is calculated by dividing the Net Operating Income (NOI) by the purchase price. Cap rate is useful for comparing the inherent profitability of different properties regardless of financing.
How to Estimate Expenses
Underestimating expenses is the most common mistake for new investors. Always account for:
Vacancy: Properties won't be rented 365 days a year. A 5-8% vacancy rate is a standard conservative estimate.
Maintenance: Even if the house is new, budget 1% of the property value annually for repairs and CapEx (Capital Expenditures like a new roof or HVAC).
Management: Even if you self-manage, it's wise to budget 8-10% for property management to ensure the deal still works if you decide to hire a professional later.
function calculateRental() {
// Get Inputs
var price = parseFloat(document.getElementById('calc-price').value) || 0;
var closing = parseFloat(document.getElementById('calc-closing').value) || 0;
var downPercent = parseFloat(document.getElementById('calc-down').value) || 0;
var rate = parseFloat(document.getElementById('calc-rate').value) || 0;
var years = parseFloat(document.getElementById('calc-term').value) || 0;
var rent = parseFloat(document.getElementById('calc-rent').value) || 0;
var vacancyPercent = parseFloat(document.getElementById('calc-vacancy').value) || 0;
var taxYearly = parseFloat(document.getElementById('calc-tax').value) || 0;
var insYearly = parseFloat(document.getElementById('calc-insurance').value) || 0;
var hoaMonthly = parseFloat(document.getElementById('calc-hoa').value) || 0;
var maintYearly = parseFloat(document.getElementById('calc-maint').value) || 0;
// Calculations
// 1. Initial Investment
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var totalCashInvested = downPaymentAmount + closing;
// 2. Mortgage Payment (Principal & Interest)
var monthlyRate = (rate / 100) / 12;
var numberOfPayments = years * 12;
var mortgagePayment = 0;
if (loanAmount > 0 && rate > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0 && rate === 0) {
mortgagePayment = loanAmount / numberOfPayments;
}
// 3. Income Analysis
var vacancyLoss = rent * (vacancyPercent / 100);
var effectiveGrossIncome = rent – vacancyLoss;
// 4. Expense Analysis
var monthlyTax = taxYearly / 12;
var monthlyIns = insYearly / 12;
var monthlyMaint = maintYearly / 12;
var operatingExpenses = monthlyTax + monthlyIns + monthlyMaint + hoaMonthly;
var totalExpenses = operatingExpenses + mortgagePayment;
// 5. Key Metrics
var monthlyCashFlow = effectiveGrossIncome – totalExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var noi = (effectiveGrossIncome – operatingExpenses) * 12; // Net Operating Income (Annual)
var cashOnCash = 0;
if (totalCashInvested > 0) {
cashOnCash = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (noi / price) * 100;
}
// Display Results
document.getElementById('results-area').style.display = 'block';
// Format Helper
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
var fmtPercent = new Intl.NumberFormat('en-US', { style: 'percent', minimumFractionDigits: 2, maximumFractionDigits: 2 });
// Main Boxes
var cashFlowEl = document.getElementById('res-cashflow');
cashFlowEl.innerText = fmtMoney.format(monthlyCashFlow);
cashFlowEl.className = monthlyCashFlow >= 0 ? "metric-value positive" : "metric-value negative";
var cocEl = document.getElementById('res-coc');
cocEl.innerText = fmtPercent.format(cashOnCash / 100);
cocEl.className = cashOnCash >= 0 ? "metric-value positive" : "metric-value negative";
document.getElementById('res-cap').innerText = fmtPercent.format(capRate / 100);
// Breakdown
document.getElementById('bd-rent').innerText = fmtMoney.format(rent);
document.getElementById('bd-vacancy').innerText = "-" + fmtMoney.format(vacancyLoss);
document.getElementById('bd-opex').innerText = "-" + fmtMoney.format(operatingExpenses);
document.getElementById('bd-noi').innerText = fmtMoney.format(noi / 12);
document.getElementById('bd-mortgage').innerText = "-" + fmtMoney.format(mortgagePayment);
var totalEl = document.getElementById('bd-total');
totalEl.innerText = fmtMoney.format(monthlyCashFlow);
totalEl.style.color = monthlyCashFlow >= 0 ? "#27ae60" : "#c0392b";
}