Calculate Cash Flow, Cap Rate, and Cash-on-Cash Return
Analysis Results
Monthly Cash Flow
$0.00
Annual ROI (Cash-on-Cash)
0.00%
Cap Rate
0.00%
Total Monthly Payment
$0.00
How to Calculate Investment Property ROI
Calculating the Return on Investment (ROI) is critical for any real estate investor. It helps you determine if a property will generate enough cash flow to justify the initial capital outlay and ongoing risks.
Key Metrics Explained
Cash Flow: This is the net amount of money moving in and out of the investment. Positive cash flow means the rent covers all expenses and mortgage payments with money left over.
Cap Rate (Capitalization Rate): This measures the property's natural rate of return without considering financing. It is calculated as Net Operating Income / Purchase Price.
Cash-on-Cash Return: This is the most accurate measure for investors using leverage. It calculates the annual cash flow relative to the actual cash invested (the down payment).
Realistic ROI Example
Imagine you purchase a rental property for $250,000 with a 20% down payment ($50,000). If your monthly rent is $2,200 and your total expenses (mortgage, taxes, insurance) are $1,800, your monthly cash flow is $400.
Your annual cash flow would be $4,800. To find your Cash-on-Cash ROI, you divide $4,800 by your initial $50,000 investment, resulting in a 9.6% ROI.
function calculateInvestmentROI() {
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var rate = parseFloat(document.getElementById('interestRate').value);
var term = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var expenses = parseFloat(document.getElementById('monthlyExpenses').value);
if (isNaN(price) || isNaN(downPercent) || isNaN(rate) || isNaN(term) || isNaN(rent) || isNaN(expenses)) {
alert("Please enter valid numerical values for all fields.");
return;
}
// Loan Logic
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyRate = (rate / 100) / 12;
var numberOfPayments = term * 12;
var monthlyMortgage = 0;
if (rate > 0) {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
monthlyMortgage = loanAmount / numberOfPayments;
}
// Cash Flow Logic
var monthlyCashFlow = rent – expenses – monthlyMortgage;
var annualCashFlow = monthlyCashFlow * 12;
// ROI and Cap Rate
var cashOnCash = (downPaymentAmount > 0) ? (annualCashFlow / downPaymentAmount) * 100 : 0;
var netOperatingIncome = (rent – expenses) * 12;
var capRate = (netOperatingIncome / price) * 100;
// Display Results
document.getElementById('resultsArea').style.display = 'block';
document.getElementById('resMonthlyCashFlow').innerText = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resCoC').innerText = cashOnCash.toFixed(2) + '%';
document.getElementById('resCapRate').innerText = capRate.toFixed(2) + '%';
document.getElementById('resMortgage').innerText = '$' + (monthlyMortgage + expenses).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Scroll to results
document.getElementById('resultsArea').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}