Sofr Rate Calculation Example

SOFR Rate Calculation Example body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; max-width: 100%; margin: 0 auto; padding: 0; } .sofr-calculator-wrapper { background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 25px; margin: 20px 0; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .calc-header { text-align: center; margin-bottom: 25px; color: #2c3e50; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #495057; } .input-wrapper { position: relative; display: flex; align-items: center; } .input-wrapper input, .input-wrapper select { width: 100%; padding: 12px; border: 1px solid #ced4da; border-radius: 6px; font-size: 16px; transition: border-color 0.15s ease-in-out; } .input-wrapper input:focus, .input-wrapper select:focus { border-color: #007bff; outline: 0; } .suffix, .prefix { position: absolute; color: #6c757d; font-weight: 500; } .prefix { left: 12px; } .suffix { right: 12px; } .input-with-prefix { padding-left: 30px !important; } .input-with-suffix { padding-right: 35px !important; } .calc-btn { width: 100%; background-color: #0056b3; color: white; border: none; padding: 14px; font-size: 18px; font-weight: 600; border-radius: 6px; cursor: pointer; transition: background-color 0.2s; } .calc-btn:hover { background-color: #004494; } .results-area { margin-top: 25px; background-color: #fff; border: 1px solid #dee2e6; border-radius: 6px; padding: 20px; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #eee; } .result-row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .result-label { color: #6c757d; font-weight: 500; } .result-value { font-weight: 700; color: #2c3e50; font-size: 1.1em; } .highlight-result { color: #28a745; font-size: 1.4em; } .article-content { margin-top: 40px; padding: 20px; background: #fff; } .article-content h2 { color: #2c3e50; border-bottom: 2px solid #0056b3; padding-bottom: 10px; margin-top: 30px; } .article-content h3 { color: #495057; margin-top: 25px; } .formula-box { background: #eef2f7; padding: 15px; border-left: 4px solid #0056b3; font-family: monospace; margin: 15px 0; }

SOFR Interest Calculator

Calculate interest payments based on the Secured Overnight Financing Rate.

$
%
Enter the simple or compounded average SOFR for the period.
%
Additional rate spread above SOFR.
Actual / 360 (Standard USD) Actual / 365 (Standard GBP/AUD)
All-In Rate (SOFR + Spread): 0.00%
Interest Fraction (Time Factor): 0.0000
Total Interest Due: $0.00

SOFR Rate Calculation Explained

The Secured Overnight Financing Rate (SOFR) is a broad measure of the cost of borrowing cash overnight collateralized by Treasury securities. It has replaced LIBOR as the primary benchmark for dollar-denominated derivatives and loans. Unlike LIBOR, which was based on estimated borrowing rates between banks, SOFR is based on actual transaction data from the Treasury repurchase market.

How is SOFR Interest Calculated?

Calculating interest payments using SOFR differs from traditional fixed rates because SOFR fluctuates daily. For most commercial loans and floating rate notes, the interest is calculated using a "Simple Average" or "Compounded Average" of daily SOFR rates over an observation period (often 30 or 90 days), plus a fixed spread (margin).

The general formula for calculating the interest amount for a specific accrual period is:

Interest = Principal × (Average SOFR + Spread) × (Days / Day Count Basis)

Components of the Calculation

  • Principal (Notional Amount): The total amount of the loan or investment.
  • Average SOFR Rate: Since SOFR is an overnight rate, you calculate an average (simple or compounded) of the daily rates published by the NY Fed during the interest period.
  • Spread (Margin): A fixed percentage added to the SOFR benchmark to determine the final interest rate charged to the borrower.
  • Day Count Convention: For USD money markets, the standard is usually Actual/360. This means you take the actual number of days in the period and divide by 360. Some other markets use Actual/365.

Example Calculation

Let's look at a concrete example using realistic numbers:

  • Principal: $1,000,000
  • Average SOFR: 5.30%
  • Spread: 1.50%
  • Period: 30 Days
  • Basis: Act/360

Step 1: Determine the All-In Rate
5.30% + 1.50% = 6.80% (or 0.068 as a decimal)

Step 2: Calculate the Time Factor
30 days / 360 = 0.08333…

Step 3: Calculate Total Interest
$1,000,000 × 0.068 × 0.08333 = $5,666.67

Why use 360 instead of 365?

The "Actual/360" convention is the standard for US money markets, including the commercial paper and LIBOR markets that SOFR replaces. Using 360 days as the denominator effectively increases the interest yield slightly compared to a 365-day basis, as the lender earns a full year's interest in 360 days rather than 365.

function calculateSOFRInterest() { // 1. Get input values by ID var principalInput = document.getElementById('notionalAmount').value; var sofrRateInput = document.getElementById('sofrIndex').value; var spreadInput = document.getElementById('spreadMargin').value; var daysInput = document.getElementById('interestDays').value; var basisInput = document.getElementById('dayCountBasis').value; // 2. Validate inputs if (principalInput === "" || sofrRateInput === "" || daysInput === "") { alert("Please fill in the Principal, SOFR Rate, and Days fields."); return; } var principal = parseFloat(principalInput); var sofrRate = parseFloat(sofrRateInput); var spread = spreadInput === "" ? 0 : parseFloat(spreadInput); var days = parseFloat(daysInput); var basis = parseFloat(basisInput); // 3. Calculation Logic // Calculate All-In Rate var totalRatePercent = sofrRate + spread; // Calculate Time Factor (Days / Basis) var timeFactor = days / basis; // Calculate Interest // Formula: Principal * (Rate/100) * (Days/Basis) var interestAmount = principal * (totalRatePercent / 100) * timeFactor; // 4. Formatting Results // Format Currency var formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 2, maximumFractionDigits: 2 }); // 5. Update HTML Output document.getElementById('allInRate').innerText = totalRatePercent.toFixed(4) + "%"; document.getElementById('timeFactor').innerText = timeFactor.toFixed(6); document.getElementById('totalInterest').innerText = formatter.format(interestAmount); // Show results container document.getElementById('resultDisplay').style.display = "block"; }

Leave a Comment