Rate Spread Calculation

HMDA Rate Spread Calculator

Calculate the difference between APR and APOR for compliance reporting.

Annual Percentage Rate from the Closing Disclosure.
Average Prime Offer Rate for the same period.

Calculation Results


Understanding Rate Spread in Mortgage Lending

The rate spread is a critical metric used by financial institutions to comply with the Home Mortgage Disclosure Act (HMDA). It represents the difference between the Annual Percentage Rate (APR) on a loan and the Average Prime Offer Rate (APOR) for a comparable transaction as of the date the interest rate is set.

How the Calculation Works

The mathematical formula for the rate spread is straightforward:

Rate Spread = Loan APR – APOR

The result is expressed in percentage points, typically rounded to at least three decimal places. If the APR is lower than the APOR, the result is a negative number, which usually indicates the loan is not a "higher-priced mortgage loan" (HPML).

HMDA Reporting Thresholds

Lenders are generally required to report the rate spread if it equals or exceeds specific thresholds defined by Regulation C:

  • First Lien Loans: 1.5 percentage points or more.
  • Subordinate (Junior) Lien Loans: 3.5 percentage points or more.

Practical Example

Imagine a borrower receives a first-lien mortgage with a final APR of 7.250%. On the day the rate was locked, the Federal Financial Institutions Examination Council (FFIEC) published an APOR of 5.150% for that specific loan term.

  • APR: 7.250%
  • APOR: 5.150%
  • Calculation: 7.250 – 5.150 = 2.100
  • Result: The rate spread is 2.100 percentage points. Since this exceeds the 1.5 threshold for first liens, it must be reported.
function calculateRateSpread() { var apr = parseFloat(document.getElementById('loanApr').value); var apor = parseFloat(document.getElementById('aporValue').value); var resultArea = document.getElementById('resultArea'); var spreadDisplay = document.getElementById('spreadValue'); var statusDisplay = document.getElementById('reportingStatus'); if (isNaN(apr) || isNaN(apor)) { alert("Please enter valid numerical values for both APR and APOR."); return; } var spread = apr – apor; var formattedSpread = spread.toFixed(3); resultArea.style.display = "block"; spreadDisplay.innerHTML = formattedSpread + " percentage points"; if (spread >= 1.5) { statusDisplay.innerHTML = "NOTICE: This spread meets or exceeds the 1.5 threshold for First Lien reporting."; statusDisplay.style.color = "#d9534f"; } else if (spread >= 0) { statusDisplay.innerHTML = "This spread is below the common 1.5 First Lien reporting threshold."; statusDisplay.style.color = "#5bc0de"; } else { statusDisplay.innerHTML = "The APR is lower than the APOR (Negative Spread)."; statusDisplay.style.color = "#5cb85c"; } resultArea.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment