When you're looking to borrow money, whether it's for a home loan, a car, or personal expenses, you'll often see two key figures: the advertised interest rate and the comparison rate. While the advertised interest rate might seem straightforward, it doesn't always tell the whole story. The comparison rate, on the other hand, provides a more comprehensive picture of the true cost of a loan.
What is the Advertised Interest Rate?
The advertised interest rate is the headline rate that lenders promote. It's the percentage charged on the principal amount of the loan, and it's a significant factor in how much interest you'll pay over time. However, this rate often excludes various fees and charges associated with the loan.
What is the Comparison Rate?
The comparison rate is designed to give borrowers a clearer understanding of the total cost of a loan. It includes not only the advertised interest rate but also most of the fees and charges associated with the loan, such as establishment fees, ongoing service fees, and other mandatory charges. By standardizing these additional costs, the comparison rate allows you to more accurately compare different loan products from various lenders.
Why is the Comparison Rate Important?
True Cost: It reflects a more accurate representation of what the loan will actually cost you.
Informed Decisions: It empowers you to make better-informed borrowing decisions by comparing apples to apples.
Transparency: It promotes transparency in the lending market, helping to protect consumers.
How is the Comparison Rate Calculated?
The calculation of the comparison rate is complex and regulated by law in many countries. It involves determining the total cost of the loan over its term, including interest and all mandatory fees, and then expressing this as an effective annual interest rate. The formula takes into account the loan amount, the advertised interest rate, the loan term, and all associated fees. This calculator helps you to estimate this rate based on the information you provide.
Example Scenario
Let's consider a home loan scenario:
Loan Amount: $300,000
Advertised Interest Rate: 6.0% per annum
Loan Term: 25 years
Establishment Fees: $750
Ongoing Fees (per year): $150
Other Fees (total): $50 (e.g., government charges)
While the advertised rate is 6.0%, the comparison rate will be higher once these fees are factored in, giving you a truer cost for this loan product.
function calculateComparisonRate() {
var loanAmount = parseFloat(document.getElementById("loanAmount").value);
var advertisedRate = parseFloat(document.getElementById("advertisedRate").value);
var loanTermYears = parseFloat(document.getElementById("loanTermYears").value);
var establishmentFees = parseFloat(document.getElementById("establishmentFees").value);
var ongoingFeesPerYear = parseFloat(document.getElementById("ongoingFeesPerYear").value);
var otherFeesTotal = parseFloat(document.getElementById("otherFeesTotal").value);
var resultElement = document.getElementById("result");
resultElement.innerHTML = ""; // Clear previous results
if (isNaN(loanAmount) || isNaN(advertisedRate) || isNaN(loanTermYears) ||
isNaN(establishmentFees) || isNaN(ongoingFeesPerYear) || isNaN(otherFeesTotal)) {
resultElement.innerHTML = "Please enter valid numbers for all fields.";
return;
}
if (loanAmount <= 0 || advertisedRate <= 0 || loanTermYears 0) {
monthlyRepayment = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments)) / (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1);
} else { // Handle zero interest rate case
monthlyRepayment = loanAmount / numberOfPayments;
}
var totalRepaymentWithoutFees = monthlyRepayment * numberOfPayments;
var totalCostOfLoan = totalRepaymentWithoutFees + totalFees;
// Now, we need to find the rate 'r' such that if we apply the loan payment formula
// with 'r' as the interest rate, the total repayment equals totalCostOfLoan.
// This requires an iterative approach or numerical method as there's no direct algebraic solution.
// We will use a simple iterative search for the comparison rate.
var comparisonRate = 0;
var lowerBound = 0;
var upperBound = 100; // Assuming comparison rate won't exceed 100%
var precision = 0.0001; // For iterative calculation
var maxIterations = 1000;
var iterations = 0;
while (iterations 0) {
calculatedTotalRepayment = (loanAmount * (midMonthlyInterestRate * Math.pow(1 + midMonthlyInterestRate, numberOfPayments)) / (Math.pow(1 + midMonthlyInterestRate, numberOfPayments) – 1)) * numberOfPayments;
} else {
calculatedTotalRepayment = loanAmount; // No interest
}
var calculatedTotalCost = calculatedTotalRepayment + totalFees;
if (Math.abs(calculatedTotalCost – totalCostOfLoan) < totalCostOfLoan * precision) {
comparisonRate = midRate;
break;
} else if (calculatedTotalCost < totalCostOfLoan) {
lowerBound = midRate;
} else {
upperBound = midRate;
}
iterations++;
}
// Fallback if iterations don't converge well (unlikely for typical rates)
if (iterations === maxIterations) {
// A simpler approximation if iterative method struggles or for edge cases
// This is NOT the accurate way but provides a fallback.
// A more robust solution would involve financial libraries or advanced numerical methods.
// For practical purposes and simplicity here, we might just use the advertised rate if convergence fails.
// Or a simpler formula for estimation:
var estimatedTotalInterest = totalCostOfLoan – loanAmount – totalFees;
var avgAnnualInterest = estimatedTotalInterest / loanTermYears;
comparisonRate = ((avgAnnualInterest + (totalFees / loanTermYears)) / loanAmount) * 100;
if (isNaN(comparisonRate) || comparisonRate < 0) comparisonRate = advertisedRate; // Safe fallback
}
resultElement.innerHTML = `
Estimated Comparison Rate: ${comparisonRate.toFixed(2)}%
(This rate includes the advertised interest rate and estimated fees over the loan term.)
`;
}