function calculateRentalROI() {
// Get inputs
var price = parseFloat(document.getElementById('rc_price').value) || 0;
var downPercent = parseFloat(document.getElementById('rc_down').value) || 0;
var closingCosts = parseFloat(document.getElementById('rc_closing').value) || 0;
var repairBudget = parseFloat(document.getElementById('rc_repair_budget').value) || 0;
var interestRate = parseFloat(document.getElementById('rc_rate').value) || 0;
var loanTerm = parseFloat(document.getElementById('rc_term').value) || 0;
var rent = parseFloat(document.getElementById('rc_rent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('rc_vacancy').value) || 0;
var annualTax = parseFloat(document.getElementById('rc_tax').value) || 0;
var annualIns = parseFloat(document.getElementById('rc_insurance').value) || 0;
var monthlyHOA = parseFloat(document.getElementById('rc_hoa').value) || 0;
var monthlyMaint = parseFloat(document.getElementById('rc_maint').value) || 0;
var pmFeePercent = parseFloat(document.getElementById('rc_pm_fee').value) || 0;
// Calculations
var downPayment = price * (downPercent / 100);
var loanAmount = price – downPayment;
var totalInvested = downPayment + closingCosts + repairBudget;
// Mortgage P&I
var monthlyRate = (interestRate / 100) / 12;
var numPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (interestRate > 0 && loanTerm > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numPayments)) / (Math.pow(1 + monthlyRate, numPayments) – 1);
} else if (loanTerm > 0) {
monthlyMortgage = loanAmount / numPayments;
}
// Income adjustments
var vacancyCost = rent * (vacancyRate / 100);
var effectiveGrossIncome = rent – vacancyCost;
var pmFee = rent * (pmFeePercent / 100);
// Expenses
var monthlyTax = annualTax / 12;
var monthlyIns = annualIns / 12;
var totalMonthlyOpEx = monthlyTax + monthlyIns + monthlyHOA + monthlyMaint + pmFee;
// NOI
var monthlyNOI = effectiveGrossIncome – totalMonthlyOpEx;
var annualNOI = monthlyNOI * 12;
// Cash Flow
var monthlyCashFlow = monthlyNOI – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
// Returns
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// Display Results
document.getElementById('rc_results').style.display = 'block';
// Helper for currency
var fmt = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('res_gross_rent').innerText = fmt.format(rent);
document.getElementById('res_vacancy').innerText = '-' + fmt.format(vacancyCost);
document.getElementById('res_opex').innerText = '-' + fmt.format(totalMonthlyOpEx);
document.getElementById('res_noi').innerText = fmt.format(monthlyNOI);
document.getElementById('res_mortgage').innerText = '-' + fmt.format(monthlyMortgage);
var cfEl = document.getElementById('res_cashflow');
cfEl.innerText = fmt.format(monthlyCashFlow);
cfEl.className = 'rc-result-value ' + (monthlyCashFlow >= 0 ? 'positive' : 'negative');
document.getElementById('res_invested').innerText = fmt.format(totalInvested);
document.getElementById('res_cap_rate').innerText = capRate.toFixed(2) + '%';
var cocEl = document.getElementById('res_coc');
cocEl.innerText = cocReturn.toFixed(2) + '%';
cocEl.className = 'rc-result-value ' + (cocReturn >= 0 ? 'positive' : 'negative');
}
What is Rental Property Cash Flow?
Cash flow is the lifeblood of any real estate investment. It represents the net amount of money that flows into or out of your pocket from a rental property after all expenses and debt service (mortgage payments) are paid. A positive cash flow means the property is generating profit monthly, while negative cash flow implies you are paying out of pocket to hold the asset.
This Rental Property Cash Flow Calculator helps investors analyze potential deals by calculating critical metrics like Net Operating Income (NOI), Cap Rate, and Cash on Cash Return.
Understanding the Key Metrics
To make informed investment decisions, you must understand the outputs provided by this calculator:
1. Net Operating Income (NOI)
NOI is a calculation used to analyze the profitability of income-generating real estate investments. It equals all revenue from the property, minus all reasonably necessary operating expenses. Crucially, NOI excludes mortgage payments. It measures the property's ability to generate income regardless of how it is financed.
Formula: Effective Gross Income – Operating Expenses = NOI
2. Capitalization Rate (Cap Rate)
The Cap Rate indicates the rate of return that is expected to be generated on a real estate investment property. It is calculated by dividing the Net Operating Income by the property asset value (Purchase Price). It is useful for comparing different properties without considering financing/debt.
Formula: (Annual NOI / Purchase Price) × 100
3. Cash on Cash Return (CoC)
Perhaps the most important metric for leveraged investors, Cash on Cash Return measures the annual pre-tax cash flow relative to the total amount of cash invested (Down Payment + Closing Costs + Rehab Costs). It tells you how hard your actual money is working for you.
One of the biggest mistakes new investors make is underestimating expenses. When using this calculator, ensure you account for:
Vacancy: Even in hot markets, tenants leave. A safe estimate is usually 5-8% (approx. 1 month per year).
Maintenance: Things break. Set aside 10-15% of the monthly rent for future repairs and CapEx (roofs, HVAC).
Property Management: If you hire a pro, they typically charge 8-12% of the monthly rent.
What is a "Good" Return?
A "good" return varies by investor strategy and location. Generally, investors look for a Cash on Cash return of 8-12% or higher. However, in high-appreciation markets, investors might accept lower cash flow (e.g., 4-6%) betting on the property value increasing over time. Conversely, in low-appreciation areas, investors often demand higher cash flow yields (12%+) to offset the lack of equity growth.