Calculate the fixed swap rate based on the spot rate term structure.
Enter the yield curve spot rates to determine the fair fixed swap rate.
Calculated Fixed Swap Rate (Par Rate):0.00%
Annual Fixed Payment:$0.00
Discount Factor Breakdown
Period (Year)
Spot Rate Input
Discount Factor (DF)
Understanding Swap Fixed Rate Calculations
An Interest Rate Swap is a financial derivative contract in which two parties agree to exchange interest rate cash flows. The most common type is the "plain vanilla" swap, where one party pays a fixed interest rate, and the other pays a floating rate (such as SOFR or LIBOR) on a specific notional principal amount.
The Fixed Swap Rate (often called the Par Swap Rate) is the specific fixed rate that makes the present value (PV) of the fixed leg payments equal to the present value of the floating leg payments at the inception of the swap. In simpler terms, it is the rate that makes the Net Present Value (NPV) of the contract zero.
The No-Arbitrage Principle:
At the start of the deal, neither party should have a financial advantage. The calculator determines the break-even fixed rate based on the current market yield curve (spot rates).
How the Calculation Works
To calculate the fair fixed swap rate, we utilize bootstrapping or direct usage of the Spot Rate (Zero-Coupon) curve. The formula relies on Discount Factors derived from these spot rates.
1. Calculate Discount Factors (DF)
For each year $t$, the discount factor is calculated using the Spot Rate ($r_t$):
$DF_t = \frac{1}{(1 + r_t)^t}$
2. Solve for the Swap Rate (S)
The swap rate is determined by the relationship between the discount factors. For an annual payment swap over $n$ years:
$S = \frac{1 – DF_n}{\sum_{i=1}^{n} DF_i}$
$DF_n$: The discount factor for the final period.
$\sum DF_i$: The sum of discount factors for all periods.
Example Scenario
Imagine a corporation wants to enter a 3-year swap on a $10,000,000 notional amount. The market spot rates are:
Year 1: 2.50%
Year 2: 3.00%
Year 3: 3.50%
Using the calculator above, we determine the Discount Factors for each year and derive a Fixed Swap Rate of roughly 3.48%. This means the corporation would pay $348,000 annually in exchange for receiving the floating rate payments.
Why Use This Calculator?
Financial analysts, corporate treasurers, and students use swap rate calculators to:
Price Derivatives: Determine the fair market price for an Over-the-Counter (OTC) contract.
Hedge Risk: Calculate the cost of converting floating rate debt to fixed rate debt.
Analyze Yield Curves: Understand the relationship between short-term spot rates and the resulting par swap curve.
function calculateSwapRate() {
// 1. Get Inputs
var notionalStr = document.getElementById('sw_notional').value;
var r1Str = document.getElementById('sw_rate1').value;
var r2Str = document.getElementById('sw_rate2').value;
var r3Str = document.getElementById('sw_rate3').value;
// 2. Parse and Validate
var notional = parseFloat(notionalStr);
var r1 = parseFloat(r1Str);
var r2 = parseFloat(r2Str);
var r3 = parseFloat(r3Str);
if (isNaN(notional) || isNaN(r1) || isNaN(r2) || isNaN(r3)) {
alert("Please enter valid numeric values for Notional Amount and all Spot Rates.");
return;
}
if (notional <= 0) {
alert("Notional Amount must be greater than zero.");
return;
}
// 3. Convert percentages to decimals
var z1 = r1 / 100;
var z2 = r2 / 100;
var z3 = r3 / 100;
// 4. Calculate Discount Factors (DF = 1 / (1+r)^t)
// Using annual compounding for this specific calculator example
var df1 = 1 / Math.pow((1 + z1), 1);
var df2 = 1 / Math.pow((1 + z2), 2);
var df3 = 1 / Math.pow((1 + z3), 3);
// 5. Calculate Swap Rate
// Formula: (1 – Final_DF) / Sum(All_DFs) for annual payments
var numerator = 1 – df3;
var denominator = df1 + df2 + df3;
var swapRateDecimal = numerator / denominator;
var swapRatePercent = swapRateDecimal * 100;
// 6. Calculate Payment
var annualPayment = notional * swapRateDecimal;
// 7. Format Output
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('res_swap_rate').innerHTML = swapRatePercent.toFixed(4) + "%";
document.getElementById('res_payment').innerHTML = formatter.format(annualPayment);
// 8. Update Table Breakdown
var tbody = document.getElementById('df_table_body');
tbody.innerHTML = ""; // Clear previous
// Helper to add row
function addRow(period, rate, df) {
var row = "