Sofr Rate Calculator

SOFR Interest Calculator .sofr-calculator-container { max-width: 800px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: #333; line-height: 1.6; } .sofr-calc-box { background: #f9fbfd; border: 1px solid #e1e4e8; border-radius: 8px; padding: 30px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); margin-bottom: 40px; } .sofr-row { display: flex; flex-wrap: wrap; margin: 0 -10px; } .sofr-col { flex: 1; min-width: 250px; padding: 0 10px; margin-bottom: 20px; } .sofr-label { display: block; font-weight: 600; margin-bottom: 8px; font-size: 0.95rem; color: #2c3e50; } .sofr-input-group { position: relative; display: flex; align-items: center; } .sofr-input-group input, .sofr-input-group select { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; transition: border-color 0.2s; } .sofr-input-group input:focus, .sofr-input-group select:focus { border-color: #007bff; outline: none; } .sofr-suffix { position: absolute; right: 12px; color: #666; font-size: 0.9rem; } .sofr-prefix { position: absolute; left: 12px; color: #666; font-size: 0.9rem; } .input-with-prefix { padding-left: 30px !important; } .sofr-btn { width: 100%; background-color: #0056b3; color: white; border: none; padding: 14px; font-size: 1.1rem; font-weight: 600; border-radius: 4px; cursor: pointer; transition: background-color 0.2s; margin-top: 10px; } .sofr-btn:hover { background-color: #004494; } .sofr-results { margin-top: 30px; background: #fff; border: 1px solid #e1e4e8; border-radius: 6px; padding: 20px; display: none; } .sofr-result-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #eee; } .sofr-result-row:last-child { border-bottom: none; } .sofr-result-label { color: #555; font-size: 0.95rem; } .sofr-result-value { font-weight: 700; color: #2c3e50; font-size: 1.1rem; } .sofr-highlight { color: #0056b3; font-size: 1.3rem; } .sofr-article h2 { color: #2c3e50; margin-top: 30px; border-bottom: 2px solid #eee; padding-bottom: 10px; } .sofr-article p { margin-bottom: 15px; color: #4a4a4a; } .sofr-article ul { margin-bottom: 20px; padding-left: 20px; } .sofr-article li { margin-bottom: 8px; } @media (max-width: 600px) { .sofr-row { flex-direction: column; } .sofr-col { min-width: 100%; } }
$
%
%
Days
Actual/360 (Standard USD) Actual/365 (Standard GBP) 30/360 (Fixed)
All-In Rate (SOFR + Spread):
Daily Interest Accrual:
Total Interest Due:
Total Payment (Principal + Interest):

Understanding the SOFR Rate Calculator

The Secured Overnight Financing Rate (SOFR) is the benchmark interest rate for dollar-denominated derivatives and loans, replacing the legacy LIBOR rate. Unlike LIBOR, which was based on bank estimates, SOFR is based on actual transactions in the Treasury repurchase market, making it a "risk-free" rate.

This calculator helps borrowers, lenders, and financial analysts estimate the interest payable on a floating-rate loan tied to SOFR. Commercial loans typically calculate interest by taking the daily SOFR rate and adding a credit spread (margin) determined by the borrower's creditworthiness.

How to Calculate SOFR Interest

The formula for calculating interest on a SOFR-linked loan typically follows the "Simple Interest" method over a specific accrual period. The standard convention for USD loans is Actual/360, though some jurisdictions or specific bond agreements may use Actual/365.

The core calculation steps used in this tool are:

  • All-In Rate: The sum of the benchmark SOFR rate and your specific Credit Spread.
    Formula: SOFR % + Spread %
  • Daily Accrual: The interest accumulating on the principal every single day.
    Formula: (Notional × All-In Rate) / Day Count Basis
  • Total Interest Due: The accumulated interest over the specified period.
    Formula: Daily Accrual × Number of Days

Why use Actual/360?

In the US money markets, interest rates are traditionally quoted on a 360-day year basis. This means the yearly interest rate is divided by 360 to find the daily factor, but interest accrues for the actual number of calendar days in the period. This results in slightly higher interest payments compared to an Actual/365 basis used in markets like the UK (for SONIA).

Example Calculation

If you borrow $1,000,000 at a SOFR rate of 5.30% with a spread of 2.00% for 30 days using an Actual/360 convention:

  • Total Rate: 5.30% + 2.00% = 7.30%
  • Calculation: $1,000,000 × 0.0730 × (30 / 360)
  • Interest Payable: $6,083.33
function calculateSofr() { // 1. Get DOM elements var notionalInput = document.getElementById('notionalAmount'); var rateInput = document.getElementById('sofrRate'); var spreadInput = document.getElementById('spreadMargin'); var daysInput = document.getElementById('interestPeriod'); var basisSelect = document.getElementById('dayCount'); var resultBox = document.getElementById('sofrResults'); // 2. Parse values var principal = parseFloat(notionalInput.value); var sofr = parseFloat(rateInput.value); var spread = parseFloat(spreadInput.value); var days = parseFloat(daysInput.value); var basisVal = basisSelect.value; // 3. Validation if (isNaN(principal) || isNaN(sofr) || isNaN(spread) || isNaN(days)) { alert("Please enter valid numerical values for all fields."); return; } // 4. Determine Day Basis Denominator var denominator = 360; // Default for Act/360 and 30/360 if (basisVal === '365') { denominator = 365; } // 5. Logic // Total Rate is sum of index + margin var totalRatePercent = sofr + spread; // Annual Interest var annualInterest = principal * (totalRatePercent / 100); // Daily Interest (Annual / Basis) var dailyInterest = annualInterest / denominator; // Total Interest for the period var totalInterest = dailyInterest * days; // Total Payment var totalPayment = principal + totalInterest; // 6. Formatting Helper function formatMoney(amount) { return "$" + amount.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); } // 7. Display Results document.getElementById('displayTotalRate').innerHTML = totalRatePercent.toFixed(2) + "%"; document.getElementById('displayDailyInterest').innerHTML = formatMoney(dailyInterest); document.getElementById('displayTotalInterest').innerHTML = formatMoney(totalInterest); document.getElementById('displayTotalPayment').innerHTML = formatMoney(totalPayment); // Show the box resultBox.style.display = 'block'; }

Leave a Comment