Sofr Fallback Rate Calculation

SOFR Fallback Rate Calculator .sofr-calculator-container { max-width: 800px; margin: 0 auto; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: #333; background-color: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; } .sofr-header { text-align: center; margin-bottom: 25px; } .sofr-header h2 { margin: 0; color: #004085; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .calc-grid { grid-template-columns: 1fr; } } .input-group { margin-bottom: 15px; } .input-group label { display: block; margin-bottom: 5px; font-weight: 600; font-size: 0.95rem; } .input-group input, .input-group select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; box-sizing: border-box; } .input-group .help-text { font-size: 0.8rem; color: #666; margin-top: 2px; } .calculate-btn { grid-column: 1 / -1; background-color: #0056b3; color: white; border: none; padding: 15px; font-size: 1.1rem; font-weight: bold; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; width: 100%; } .calculate-btn:hover { background-color: #004494; } .results-section { grid-column: 1 / -1; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; padding: 20px; margin-top: 20px; display: none; } .results-section.visible { display: block; } .result-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #eee; } .result-row:last-child { border-bottom: none; font-weight: bold; font-size: 1.2rem; color: #0056b3; } .result-label { color: #555; } .result-value { font-weight: 700; } .article-content { max-width: 800px; margin: 40px auto; line-height: 1.6; color: #444; } .article-content h2 { color: #222; margin-top: 30px; } .article-content h3 { color: #444; margin-top: 20px; } .article-content ul { background: #f0f7ff; padding: 20px 40px; border-radius: 5px; } .article-content li { margin-bottom: 10px; }

SOFR Fallback Rate Calculator

Calculate the all-in replacement rate based on ISDA spread adjustments.

Enter the current Term SOFR or Simple SOFR rate.
1-Month (0.11448%) 3-Month (0.26161%) 6-Month (0.42826%) 12-Month (0.71513%) Custom Spread
Select the tenor of the discontinued LIBOR contract.
The existing margin defined in your loan agreement.
Used to estimate annual interest impact.
Base SOFR: 0.00%
ISDA Spread Adjustment: 0.00000%
Credit Margin: 0.00%
Est. Annual Interest: $0.00
Total All-In Rate: 0.00%

Understanding SOFR Fallback Rates

The transition away from the London Interbank Offered Rate (LIBOR) has fundamentally changed how variable interest rates are calculated in financial contracts. When USD LIBOR ceased publication, legacy contracts containing "fallback language" automatically transitioned to the Secured Overnight Financing Rate (SOFR).

The Mathematical Challenge

LIBOR was an unsecured rate that included a credit risk premium of the lending bank. SOFR is a secured, risk-free overnight rate. Historically, LIBOR was higher than SOFR. To prevent a transfer of value from lenders to borrowers during the transition, a Spread Adjustment is added to the SOFR rate.

ISDA Fixed Spread Adjustments

On March 5, 2021, the FCA announced the cessation of LIBOR, which fixed the spread adjustments for USD LIBOR fallbacks based on the 5-year median difference between LIBOR and compounded SOFR. These values are static and do not change:

  • 1-Month Tenor: 0.11448% (11.448 bps)
  • 3-Month Tenor: 0.26161% (26.161 bps)
  • 6-Month Tenor: 0.42826% (42.826 bps)
  • 12-Month Tenor: 0.71513% (71.513 bps)

How to Calculate the All-In Rate

The calculation for the new fallback rate generally follows this formula:

Total Rate = Base SOFR (Term or Daily Simple) + ISDA Spread Adjustment + Contractual Credit Margin

For example, if the current 1-Month Term SOFR is 5.30%, the fallback for a legacy 1-Month LIBOR loan would be 5.30% + 0.11448% = 5.41448%, before adding your specific credit agreement margin (e.g., L+250 bps).

Using This Calculator

This tool allows corporate treasurers, controllers, and financial analysts to quickly verify interest rate resets. Enter the current base SOFR rate (available from the CME Group or NY Fed), select the tenor that matches your original LIBOR contract to apply the correct static spread adjustment, and input your credit margin to determine the final accrual rate.

// Handle Custom Spread Toggle document.getElementById('tenorSelect').onchange = function() { var val = document.getElementById('tenorSelect').value; var customDiv = document.getElementById('customSpreadGroup'); if(val === 'custom') { customDiv.style.display = 'block'; } else { customDiv.style.display = 'none'; } }; function calculateFallback() { // 1. Get Inputs var baseSofr = parseFloat(document.getElementById('baseSofr').value); var tenor = document.getElementById('tenorSelect').value; var margin = parseFloat(document.getElementById('creditSpread').value); var notional = parseFloat(document.getElementById('notionalAmount').value); // Validation check if (isNaN(baseSofr)) { alert("Please enter a valid Base SOFR rate."); return; } if (isNaN(margin)) { margin = 0; // Default to 0 if empty } // 2. Determine Spread Adjustment var spreadAdj = 0; if (tenor === '1M') spreadAdj = 0.11448; else if (tenor === '3M') spreadAdj = 0.26161; else if (tenor === '6M') spreadAdj = 0.42826; else if (tenor === '12M') spreadAdj = 0.71513; else if (tenor === 'custom') { spreadAdj = parseFloat(document.getElementById('customSpread').value); if (isNaN(spreadAdj)) spreadAdj = 0; } // 3. Calculate Total var totalRate = baseSofr + spreadAdj + margin; // 4. Calculate Interest (if Notional provided) var interestAmount = 0; var hasNotional = !isNaN(notional) && notional > 0; if (hasNotional) { // Simple interest calculation: Notional * (Rate/100) interestAmount = notional * (totalRate / 100); } // 5. Display Results document.getElementById('displayBase').innerText = baseSofr.toFixed(5) + "%"; document.getElementById('displaySpread').innerText = spreadAdj.toFixed(5) + "%"; document.getElementById('displayMargin').innerText = margin.toFixed(2) + "%"; document.getElementById('displayTotal').innerText = totalRate.toFixed(5) + "%"; var interestRow = document.getElementById('interestRow'); if (hasNotional) { interestRow.style.display = 'flex'; // Format currency var formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', }); document.getElementById('displayInterest').innerText = formatter.format(interestAmount); } else { interestRow.style.display = 'none'; } document.getElementById('results').className = "results-section visible"; }

Leave a Comment