Interest Rate Swap Valuation and Applications › Swap Valuation as a Bond Portfolio

Michael BrenndoerferUpdated January 5, 202610 min read
Quantitative FinanceAll chapters
Part 4 of 15Swaps and Credit Derivatives
Chapter 21Interest Rate Swap Valuation and Applications › Swap Valuation as a Bond Portfolio
Reading section 2 of 17 · Swap Valuation as a Bond Portfolio · 10 minSection 2 of 17 · 10 min

Book contents

Section 2 of 17 · 10 min read

Interest Rate Swap Valuation and Applications › Swap Valuation as a Bond PortfolioOne section · Sections in this chapter2 / 17 ↓
Reading tools Definitions & inline links

Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.

Article links

Make inline references clickable

The most intuitive approach to swap valuation treats each leg of the swap as a bond. This perspective builds on our existing knowledge of bond pricing and allows us to value swaps using familiar present value techniques. Consider a plain vanilla interest rate swap from your perspective if you are receiving fixed and paying floating. This position is economically equivalent to:

  • Being long a fixed-rate bond (receiving fixed coupon payments)
  • Being short a floating-rate bond (making floating-rate payments)

The value of the swap is simply the difference between these two bond values. This decomposition works because the cash flows of the swap exactly replicate the combined cash flows of holding a fixed-rate bond while having borrowed at a floating rate. Understanding this equivalence turns swap valuation from an abstract exercise into a straightforward application of bond mathematics.

Fixed-Rate Bond Valuation

The fixed leg of a swap generates a stream of known cash flows, which makes it the more straightforward component to value. Unlike the floating leg, where future payments depend on interest rates that have not yet been determined, the fixed leg's payments are contractually specified at inception. This certainty allows us to apply standard present value techniques directly.

If the swap has a notional principal NN, a fixed rate KK, and payment dates at times t1,t2,…,tnt_1, t_2, \ldots, t_n, we can calculate the present value of the fixed leg by discounting each cash flow back to today. For the bond-portfolio representation, add a hypothetical principal repayment at maturity. The corresponding fixed-rate bond value is:

Vfixed=∑i=1nK⋅δi⋅N⋅Z(0,ti)+N⋅Z(0,tn)V_{\text{fixed}} = \sum_{i=1}^{n} K \cdot \delta_i \cdot N \cdot Z(0, t_i) + N \cdot Z(0, t_n)

where:

  • VfixedV_{\text{fixed}}: corresponding fixed-rate bond value, including hypothetical principal
  • KK: fixed interest rate
  • δi\delta_i: day count fraction for period ii
  • NN: notional principal amount
  • Z(0,ti)Z(0, t_i): discount factor from today to time tit_i
  • tit_i: payment date for period ii
  • nn: total number of payment periods
  • ∑i=1nK⋅δi⋅N⋅Z(0,ti)\sum_{i=1}^{n} K \cdot \delta_i \cdot N \cdot Z(0, t_i): present value of the coupon payments
  • N⋅Z(0,tn)N \cdot Z(0, t_n): present value of the notional principal repayment

The final term represents the notional principal "repayment" at maturity. Even though no principal exchanges hands in a swap, we include it for the bond equivalence to hold. This might look like an accounting trick, but it's essential: by adding and subtracting the notional principal on both legs, we maintain the mathematical equivalence between the swap and the bond portfolio. The notional terms cancel when we compute the net swap value, but including them allows us to value each leg independently using standard bond pricing formulas.

Recall from our discussion of bond pricing in Part II, Chapter 2 that the discount factor Z(0,t)Z(0, t) represents the present value of receiving one dollar at time tt. These discount factors are derived from the term structure of interest rates and encode all the information we need about the time value of money across different horizons.

Floating-Rate Bond Valuation

The floating leg presents an interesting challenge: we don't know the future floating rates. Future floating coupons are uncertain, so direct cash-flow projection is less straightforward. Replication values them without predicting the realized rates. However, a useful property simplifies the calculation and clarifies how floating-rate instruments behave.

Just after a floating-rate reset, a floating-rate bond trades at par because each future payment will be set to the prevailing market rate. This property is key to understanding floating-rate instruments.

To understand why, consider what happens at a reset date. The floating rate for the upcoming period is set to the current market rate, which by definition represents fair compensation for lending money over that period. At the next reset, the same thing happens: the rate adjusts to whatever the market rate is at that time. Since each coupon payment reflects the market rate at the time it was set, the bond always offers a fair market return. Consequently, investors are willing to pay exactly face value for it, and the bond's value equals its face value at each reset date.

This logic extends to any future reset date as well. Looking forward from today, we know that at each future reset, the bond will be worth par. This recursive property dramatically simplifies our valuation task.

Between reset dates, the corresponding floating-rate bond is worth the present value of the known next coupon plus its par continuation value:

Vfloat=(Lk⋅δk⋅N+N)⋅Z(0,tk)V_{\text{float}} = (L_k \cdot \delta_k \cdot N + N) \cdot Z(0, t_k)

where:

  • VfloatV_{\text{float}}: corresponding floating-rate bond value between resets, including hypothetical principal
  • LkL_k: floating rate set for the current period
  • δk\delta_k: day count fraction for the current period
  • NN: notional principal
  • Z(0,tk)Z(0, t_k): discount factor to the next payment date tkt_k
  • tkt_k: next payment date
  • Lk⋅δk⋅NL_k \cdot \delta_k \cdot N: the fixed coupon payment for the current period
  • Lk⋅δk⋅N+NL_k \cdot \delta_k \cdot N + N: known next coupon plus par continuation value immediately after payment (or principal repayment at final maturity)

The intuition here is straightforward: between reset dates, we know exactly what the next coupon payment will be because the rate has already been fixed. We also know that immediately after that payment, the bond will be worth par because a new rate will be set. Therefore, the current value is simply the present value of the known coupon plus the present value of receiving par at the next reset.

At inception or immediately after a reset, this simplifies to:

Vfloat=NV_{\text{float}} = N

where:

  • VfloatV_{\text{float}}: corresponding floating-rate bond value immediately after coupon payment and a matching reset
  • NN: notional principal amount

The floating-rate bond is worth exactly par. This result means that at reset dates, we do not need to forecast any future interest rates to value the floating leg. We simply know it equals the notional amount.

The Swap Value

Combining these results, the value of a receive-fixed, pay-floating swap is:

Vswap=Vfixed−VfloatV_{\text{swap}} = V_{\text{fixed}} - V_{\text{float}}

where:

  • VswapV_{\text{swap}}: total value of the swap
  • VfixedV_{\text{fixed}}: corresponding fixed-rate bond value including hypothetical principal
  • VfloatV_{\text{float}}: corresponding floating-rate bond value including hypothetical principal

At a matching reset in this model, K above the current par swap rate for the same remaining schedule makes the corresponding fixed-rate bond worth more than par and the receive-fixed swap positive. If K is below that matching par rate, the fixed bond is below par and the receive-fixed swap is negative. Do not compare K directly with an arbitrary zero yield.

For a par swap entered without an upfront value premium, choose the fixed rate KK so that Vswap=0V_{\text{swap}}=0. At that rate, the fixed and floating coupon present values are equal. An off-market coupon can instead have nonzero initial value and an offsetting upfront payment.

Par Swap Rate

The par swap rate is the fixed rate that makes a swap have zero initial value. For matching fixed and floating payment schedules in the single-curve model, it is an accrual- and discount-factor-weighted average of simple forward rates. It is not an unqualified forecast of average future short-term rates.

Let's implement this valuation approach.

In[3]:
Code
import numpy as np

# Define discount factors from a hypothetical yield curve
# These would come from the term structure in practice
maturities = np.array([0.5, 1.0, 1.5, 2.0, 2.5, 3.0])  # Years
zero_rates = np.array(
    [0.035, 0.038, 0.040, 0.042, 0.043, 0.044]
)  # Continuous compounding

# Calculate discount factors
discount_factors = np.exp(-zero_rates * maturities)

# Swap parameters
notional = 10_000_000  # $10 million
fixed_rate = 0.05  # 5% annual fixed rate
payment_frequency = 0.5  # Semiannual payments
n_payments = 6  # 3-year swap with semiannual payments
In[4]:
Code
def value_fixed_leg(notional, fixed_rate, discount_factors, payment_freq):
    """
    Value the fixed leg of a swap as a fixed-rate bond.
    """
    # Fixed payments each period
    fixed_payment = notional * fixed_rate * payment_freq

    # PV of coupon payments
    pv_coupons = np.sum(fixed_payment * discount_factors)

    # PV of notional at maturity
    pv_notional = notional * discount_factors[-1]

    return pv_coupons + pv_notional


def value_floating_leg_at_reset(notional):
    """
    Value the floating leg at a reset date (equals par).
    Between resets, discount the full known next coupon plus par;
    that calculation is not implemented by this reset-date shortcut.
    """
    # At reset, floating-rate bond is worth par
    return notional


# Calculate values
fixed_leg_value = value_fixed_leg(
    notional, fixed_rate, discount_factors, payment_frequency
)
floating_leg_value = value_floating_leg_at_reset(notional)
swap_value = fixed_leg_value - floating_leg_value
Out[5]:
Console
Swap Valuation Using Bond Portfolio Approach
==================================================
Notional Principal:    $10,000,000
Fixed Rate:            5.00%
Swap Tenor:            3.0 years

Fixed Bond Value (incl. hypothetical principal): $10,158,654.57
Floating Bond Value (incl. hypothetical principal): $10,000,000.00
Swap Value (Rec Fix):  $158,654.57
Out[6]:
Visualization
Grouped bar chart comparing nominal and present value cash flows for each of six semiannual payment dates, with the final bar notably taller due to the notional principal repayment.
Nominal and present value of fixed leg cash flows over a 3-year swap tenor. Discounting progressively reduces the present value of later payments, while the final payment dominates the total value due to the inclusion of the notional principal.

The positive swap value indicates that the fixed rate of 5% is favorable compared to current market rates. The receive-fixed party holds a valuable position because they are locked into receiving a higher rate than what the market currently offers for new swaps.