Floating Rate Bond Duration Calculation

Floating Rate Bond Duration Calculator

Use this calculator to estimate the effective interest rate duration of a Floating Rate Note (FRN). Unlike fixed-rate bonds, FRN duration is primarily determined by the time remaining until the next interest rate reset date.

The number of days remaining until the bond's coupon rate adjusts to the current market reference rate.
ACT/360 (Most common for FRNs) ACT/365 (Common in UK/Commonwealth) The assumed number of days in a year used for calculating accrued interest.

Calculation Results

Effective Duration:

This indicates that for a 1% change in interest rates, the bond's price is expected to change by approximately %.

Understanding Floating Rate Note (FRN) Duration

Duration is a measure of a bond's price sensitivity to changes in interest rates. For traditional fixed-rate bonds, duration can be high, meaning their prices drop significantly when interest rates rise.

Floating Rate Notes (FRNs) are very different. Because their coupon payments adjust periodically (e.g., quarterly or semi-annually) based on a moving reference rate (like SOFR or LIBOR), their price tends to reset close to par value on every reset date.

Therefore, the interest rate risk (duration) of an FRN is very low. It is limited to the time period between the current date and the next rate reset date. If interest rates spike tomorrow, an investor only has to wait until the next reset date for their coupon income to adjust upwards to match the new market reality.

How the Calculation Works

The effective duration of a plain floating rate bond is calculated as the fraction of the year remaining until the next coupon reset. The formula used in this calculator is:

Duration ≈ Days Until Next Reset / Day Count Basis

Realistic Example

Consider a corporate floating rate note that pays interest quarterly based on 3-month SOFR. The day count convention is ACT/360. Today is November 15th, and the next interest rate reset date is December 30th.

  • Days Until Next Reset: 45 days
  • Day Count Basis: 360
  • Calculation: 45 / 360 = 0.125

The duration is 0.125 years. This means if interest rates suddenly rose by 1% (100 basis points), the price of this bond would only be expected to drop by approximately 0.125%.

.frn-calculator-container { max-width: 800px; margin: 0 auto; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; } .calculator-box { background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 25px; margin-bottom: 30px; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #495057; } .form-group input, .form-group select { width: 100%; padding: 10px; border: 1px solid #ced4da; border-radius: 4px; font-size: 16px; } .help-text { display: block; font-size: 0.85em; color: #6c757d; margin-top: 5px; } .calc-btn { width: 100%; padding: 12px; background-color: #0056b3; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background-color 0.2s; } .calc-btn:hover { background-color: #004494; } .results-section { margin-top: 25px; background-color: #e8f4fd; padding: 20px; border-radius: 4px; border-left: 5px solid #0056b3; } .result-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .result-label { font-size: 1.1em; font-weight: 600; } .result-value { font-size: 1.5em; font-weight: bold; color: #0056b3; } .result-explanation { font-size: 0.95em; margin-top: 15px; border-top: 1px solid #d6e9f9; padding-top: 15px; } @media (max-width: 600px) { .result-row { flex-direction: column; align-items: flex-start; } .result-value { margin-top: 5px; } } function calculateFRNDuration() { // 1. Get input values matching element IDs exactly var daysToResetInput = document.getElementById("daysToReset").value; var dayCountBasisInput = document.getElementById("dayCountBasis").value; // 2. Parse values to numbers var daysToReset = parseFloat(daysToResetInput); var dayCountBasis = parseFloat(dayCountBasisInput); // 3. Validation for edge cases (NaN or negative numbers) if (isNaN(daysToReset) || daysToReset < 0) { alert("Please enter a valid, non-negative number for Days Until Next Reset."); return; } if (isNaN(dayCountBasis) || dayCountBasis <= 0) { alert("Invalid Day Count Basis."); return; } // 4. The Calculation Logic // For a standard floating rate note, duration is approximately the time to next reset divided by the basis. var durationYears = daysToReset / dayCountBasis; // Calculate percentage price change for a 1% rate shift for context output var priceChangePercent = durationYears * 1.0; // 5. Display Results var durationResultElement = document.getElementById("durationResult"); var priceChangeElement = document.getElementById("priceChangePercent"); var resultContainer = document.getElementById("frnResult"); // Format output to 4 decimal places for precision common in bond metrics durationResultElement.innerText = durationYears.toFixed(4) + " Years"; priceChangeElement.innerText = priceChangePercent.toFixed(4); // Show the result container resultContainer.style.display = "block"; }

Leave a Comment