Caps and Floors

A company took out a five-year floating-rate loan, paying 3-month SOFR plus a spread every quarter. Rates are low now, but the treasurer loses sleep over what happens if they climb. A swap would lock in a fixed rate — but it also locks in missing out if rates fall. What the treasurer actually wants is insurance: pay a premium up front, and never pay more than some ceiling rate, while still benefiting if rates drop. That instrument is a cap. This lesson builds it out of a bond option-style idea applied not to a bond, but to the interest rate itself.

A cap is a strip of caplets

A cap on a floating-rate loan doesn't cap the rate with one big option — it's built from a whole sequence of small ones, one per reset date. Each individual option is a caplet. If the loan resets quarterly for five years, the cap is a bundle of twenty caplets, each protecting exactly one payment.

Consider the caplet covering the accrual period from t_i to t_{i+1} (length \delta, e.g. 0.25 for quarterly). The floating rate R_i for that period is observed — "reset" — at t_i, but the resulting cash flow isn't paid until t_{i+1}, when the accrual period ends. On notional L and cap rate R_K, the caplet pays, at t_{i+1}:

L\,\delta\,\max(R_i - R_K,\, 0).

Read it exactly like a call option, because it is one: the "asset" is the floating rate observed at reset, the "strike" is the cap rate. If rates finish above R_K, the caplet pays the difference on the notional; if they finish below, it pays nothing and the borrower simply pays the (cheaper) market rate. Own every caplet for every reset date across the loan's life, and the borrower's total interest cost is capped at R_K, no matter how high rates go — while every quarter rates stay low, the borrower keeps paying the low floating rate.

A floor is the mirror image, built from floorlets: each pays

L\,\delta\,\max(R_K - R_i,\, 0),

protecting a lender or a floating-rate investor (a money-market fund, say) against rates falling too far. Buying a cap and selling a floor at the same strike is equivalent, cash flow for cash flow, to entering the underlying pay-fixed swap — the interest-rate version of put–call parity:

For a cap and floor with the same strike R_K, notional, and reset dates:

Pricing a caplet with Black's model

Each caplet is priced exactly like the bond call in the previous lesson, with the floating rate's forward rate F_i for [t_i, t_{i+1}] standing in for the forward bond price:

\text{caplet} = L\,\delta\,P(0, t_{i+1})\big[F_i\,\Phi(d_1) - R_K\,\Phi(d_2)\big], \qquad d_1 = \frac{\ln(F_i/R_K) + \tfrac12\sigma_i^2 t_i}{\sigma_i\sqrt{t_i}}, \quad d_2 = d_1 - \sigma_i\sqrt{t_i}.

Note the time that goes into \sigma_i\sqrt{t_i} is t_i, the reset date — that's when the rate uncertainty actually resolves — while the discounting uses t_{i+1}, the payment date. Add up all the caplets (each typically priced with its own market-implied \sigma_i, since the market's view of rate volatility differs by horizon) and you have the cap.

Worked example: one caplet, two views

Take a caplet on 3-month SOFR, notional L = \$10{,}000{,}000, accrual fraction \delta = 0.25, cap rate R_K = 4\%, forward rate F_i = 4\% (at the money), volatility \sigma = 20\%, reset in t_i = 1 year, and a discount factor to the payment date P(0, t_{i+1}) = 0.96.

The ex-ante price. At the money, \ln(F_i/R_K) = 0, so

d_1 = \frac{\tfrac12(0.20)^2(1)}{0.20\sqrt{1}} = \frac{0.02}{0.20} = 0.10, \qquad d_2 = 0.10 - 0.20 = -0.10.

From tables, \Phi(0.10) = 0.5398 and \Phi(-0.10) = 0.4602. Then

\text{caplet} = 10{,}000{,}000 \times 0.25 \times 0.96 \times \big[0.04 \times 0.5398 - 0.04\times 0.4602\big] = 2{,}400{,}000 \times 0.04 \times 0.0796 \approx \$7{,}642.

The ex-post payoff. Now fast-forward: suppose 3-month SOFR actually resets at 5.5\% instead of the forward-implied 4%. The caplet is deep in the money, and it pays

L\,\delta\,\max(R_i - R_K, 0) = 10{,}000{,}000 \times 0.25 \times \max(0.055 - 0.04,\,0) = 2{,}500{,}000 \times 0.015 = \$37{,}500.

Two very different numbers answering two different questions: $7,642 is what the option was worth today, priced for uncertainty over an outcome that hadn't happened yet; $37,500 is what it actually paid, once the uncertainty resolved in the buyer's favour. That gap — premium paid vs. payoff received — is exactly what makes it insurance rather than a sure thing.

A swap and a cap both protect against rising rates, but they trade away different things. A pay-fixed swap costs nothing up front and completely removes the floating-rate exposure — but it removes it in both directions: if rates fall, the swapped borrower is stuck paying the old fixed rate anyway, and watches a floating-rate competitor enjoy a lower cost of funds. A cap costs a premium up front (the sum of all those caplet prices), but it only ever helps — it caps the downside while leaving the upside (rates falling) fully intact. Treasurers who expect rates to be roughly flat or falling, but want protection against a bad surprise, tend to prefer the cap; those who are confident rates are heading up, and want to lock in savings versus the market's own forecast, prefer the (free) swap. It's the same trade-off between insurance and a forward contract that shows up everywhere in this course.

The single most common mixup with caps: reset in advance, paid in arrears. The rate R_i that determines the caplet's payoff is fixed (observed) at the start of the accrual period, t_i — that is standard for LIBOR/SOFR-type floating loans, since the borrower needs to know the rate before the period begins. But the resulting cash actually changes hands at the end of the period, t_{i+1}, once the interest has genuinely accrued. Discounting the caplet's expected payoff back to t_i instead of t_{i+1} — an easy slip, since that's also when the "randomness" resolves — silently overstates the price by one accrual period's worth of discounting.