Note: This result is an approximation of the Comparison Rate based on the inputs provided. The formula mathematically solves for the effective interest rate that accounts for the loan amount, term, repayment schedule, and all listed fees. It assumes the loan is held for the full term.
Understanding the Comparison Rate Formula
When shopping for a loan—whether it's a mortgage, personal loan, or car loan—the advertised interest rate rarely tells the whole story. Lenders often charge various administration, application, and ongoing service fees that can significantly increase the true cost of borrowing. The Comparison Rate is a mathematical tool designed to reveal this "true" cost by combining the interest rate with most fees into a single percentage figure.
Key Concept: If two loans have the same interest rate but different comparison rates, the one with the higher comparison rate has higher fees and will cost you more over the life of the loan.
The Mathematics Behind the Calculation
Calculating a comparison rate is complex because it involves solving for an unknown variable in a non-linear equation. Unlike a simple multiplication, the comparison rate is the "Internal Rate of Return" (IRR) of the loan's cash flows.
Conceptually, the formula works by balancing the Net Loan Amount against the Total Future Payments discounted back to today's value.
The equation effectively solved by the calculator above is:
r is the periodic comparison rate (which we solve for).
n is the current month number.
N is the total number of months in the loan term.
Why Is the Comparison Rate Sometimes Higher?
You may notice the comparison rate is usually higher than the advertised nominal interest rate. This difference represents the impact of fees expressed as a percentage. For example:
Upfront Fees: Application fees, valuation fees, or settlement fees paid at the start effectively reduce the net amount of money you have "use" of, raising the effective rate.
Ongoing Fees: Monthly account-keeping fees add to your regular outflow, acting exactly like a higher interest rate would.
Discharge Fees: Costs to end the loan add a final expense that increases the overall yield to the lender.
Limitations of the Comparison Rate
While powerful, the comparison rate formula has limitations. It assumes you hold the loan for the entire term (e.g., 25 or 30 years). If you refinance or pay off the loan early, the impact of upfront fees is compressed into a shorter timeframe, meaning your actual effective cost would be even higher than the comparison rate shown.
Additionally, the statutory Comparison Rate displayed on bank websites is often calculated on a standardized example (e.g., $150,000 for 25 years). Our calculator allows you to input your specific loan details to get a personalized comparison rate that reflects your actual borrowing situation.
function calculateComparisonRate() {
// 1. Get Inputs
var loanAmount = parseFloat(document.getElementById('loanAmount').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTermYears = parseFloat(document.getElementById('loanTerm').value);
var upfrontFees = parseFloat(document.getElementById('upfrontFees').value) || 0;
var monthlyFees = parseFloat(document.getElementById('monthlyFees').value) || 0;
var dischargeFees = parseFloat(document.getElementById('dischargeFees').value) || 0;
// 2. Validation
if (!loanAmount || !interestRate || !loanTermYears) {
alert("Please enter valid numbers for Loan Amount, Interest Rate, and Term.");
return;
}
// 3. Basic Calculations
var months = loanTermYears * 12;
var monthlyRateNominal = (interestRate / 100) / 12;
// Calculate Standard Monthly Principal & Interest Repayment (PMT)
// Formula: P * r * (1+r)^n / ((1+r)^n – 1)
var monthlyRepayment = 0;
if (interestRate === 0) {
monthlyRepayment = loanAmount / months;
} else {
monthlyRepayment = loanAmount * monthlyRateNominal * Math.pow(1 + monthlyRateNominal, months) / (Math.pow(1 + monthlyRateNominal, months) – 1);
}
// 4. Calculate Total Outflow Per Month (Repayment + Fees)
var totalMonthlyOutflow = monthlyRepayment + monthlyFees;
// 5. Comparison Rate Calculation (Solving for IRR/Yield)
// We need to find rate 'r' such that:
// (LoanAmount – UpfrontFees) = Sum(TotalMonthlyOutflow / (1+r)^t) + (DischargeFee / (1+r)^months)
// We use Binary Search to solve for r.
// The "Principal" effectively received is LoanAmount – UpfrontFees (assuming fees are paid from loan proceeds or cash, impacting net benefit)
// Standard APR logic typically treats Upfront Fees as a reduction in the net loan proceeds.
var netLoanAmount = loanAmount – upfrontFees;
var low = 0.0;
var high = 1.0; // 100% per month, realistically effectively infinite upper bound for normal loans
var epsilon = 0.00000001;
var foundRateMonthly = 0;
var iterations = 0;
// Binary Search Algorithm
while (iterations NetLoanAmount, our rate is too low (we need to discount more heavily).
if (npv > netLoanAmount) {
low = mid;
} else {
high = mid;
}
if (Math.abs(npv – netLoanAmount) < epsilon) {
break;
}
iterations++;
}
foundRateMonthly = (low + high) / 2;
// Convert monthly effective rate to annual percentage rate
var comparisonRate = foundRateMonthly * 12 * 100;
// 6. Total Cost Calculation
var totalRepayments = (monthlyRepayment * months);
var totalFees = upfrontFees + (monthlyFees * months) + dischargeFees;
var totalCostOfLoan = totalRepayments + totalFees; // This is total amount paid over life
// 7. Display Results
document.getElementById('displayRepayment').innerText = "$" + monthlyRepayment.toFixed(2);
document.getElementById('displayTotalCost').innerText = "$" + totalCostOfLoan.toFixed(2);
document.getElementById('displayComparisonRate').innerText = comparisonRate.toFixed(2) + "% p.a.";
var resultDiv = document.getElementById('crcResult');
resultDiv.classList.remove('visible');
void resultDiv.offsetWidth; // trigger reflow for animation
resultDiv.classList.add('visible');
}