The current value of the benchmark index (e.g., SOFR, COFI, CMT).
The fixed percentage added to the index by your lender.
The rate you were paying before this adjustment.
The maximum amount the rate can change in a single adjustment period.
The absolute maximum rate allowed over the life of the agreement.
Please enter valid numeric values for all fields.
Theoretical Fully Indexed Rate:0.00%
Periodic Cap Limit (Min/Max):0.00% – 0.00%
Adjustment Status:—
New Adjusted Rate:0.00%
function calculateArmRate() {
// Get input values
var indexVal = parseFloat(document.getElementById("currentIndex").value);
var marginVal = parseFloat(document.getElementById("marginSpread").value);
var prevRate = parseFloat(document.getElementById("previousRate").value);
var periodCap = parseFloat(document.getElementById("periodicCap").value);
var lifeCap = parseFloat(document.getElementById("lifetimeCap").value);
// Validation
if (isNaN(indexVal) || isNaN(marginVal) || isNaN(prevRate) || isNaN(periodCap) || isNaN(lifeCap)) {
document.getElementById("error-message").style.display = "block";
document.getElementById("result-container").style.display = "none";
return;
}
document.getElementById("error-message").style.display = "none";
// 1. Calculate Theoretical Fully Indexed Rate
var theoreticalRate = indexVal + marginVal;
// 2. Determine Periodic Limits
var maxPeriodicRate = prevRate + periodCap;
var minPeriodicRate = prevRate – periodCap;
if (minPeriodicRate maxPeriodicRate) {
cappedRate = maxPeriodicRate;
status = "Capped by Periodic Limit";
} else if (theoreticalRate lifeCap) {
cappedRate = lifeCap;
status = "Capped by Lifetime Ceiling";
}
// Display Results
document.getElementById("res-theoretical").innerHTML = theoreticalRate.toFixed(3) + "%";
document.getElementById("res-cap-range").innerHTML = minPeriodicRate.toFixed(3) + "% – " + maxPeriodicRate.toFixed(3) + "%";
document.getElementById("res-status").innerHTML = status;
document.getElementById("res-final").innerHTML = cappedRate.toFixed(3) + "%";
document.getElementById("result-container").style.display = "block";
}
How to Calculate ARM Rate: Understanding Adjustments
An Adjustable Rate Mortgage (ARM) does not have a static interest rate. Instead, the rate fluctuates based on broader economic factors. Calculating your new ARM rate requires understanding the specific components defined in your note: the Index, the Margin, and the Caps.
The Core Formula
The fundamental logic behind an ARM rate calculation is simple, but it is often constrained by safety limits (caps). The base formula is:
Fully Indexed Rate = Current Index Value + Margin
Understanding the Variables
Current Index: This is a variable financial benchmark, such as the SOFR (Secured Overnight Financing Rate) or the CMT (Constant Maturity Treasury). This number changes based on the economy.
Margin: This is a fixed percentage determined by your lender at the time of signing. It typically does not change over the life of the loan. It represents the lender's profit spread.
Caps: These are protective limits that prevent your rate from skyrocketing too quickly.
Periodic Cap: Limits how much the rate can change from one period to the next (e.g., max increase of 2%).
Lifetime Cap: The absolute maximum rate allowed during the entire loan term, regardless of how high the Index goes.
Calculation Example
Assume you have an ARM with the following details: