Calibrating time-dependent volatility to swaption prices

We have seen in a previous post how to fit initial discount curves to swap rates in a model-independent way. What if we want to control the volatility parameter to match vanilla rates derivatives as well? Just as we found for vanilla calls and puts, we will need to chose a model, for example the Hull-White extended Vasicek (HWeV) model that we’ve seen before (there are a few reasons why this isn’t a great choice, discussed later).

    \[dr = \Bigl( \theta(t) - ar(t) \Bigr) dt + \sigma(t) dW_t\]

Our next choice is which vanilla rates options we want to use for the calibration. A common choice is the interest rate swaption, which is the right to enter a swap at some future time T with fixed payment dates \{T_i\} > T and a strike X. These are fairly liquid contracts so present a good choice for our calibration. A ‘payer swaption’ is one in which we pay fixed and recieve floating, and a ‘receiver swaption’ is the opposite. For simplicity, for the rest of this post we will assume all payments are annual, so year fractions \tau are ignored.

A reciever swaption can be seen as a call option on a coupon-paying bond with fixed payments equal to X at the same payment dates as the swap. To see this, consider the price of a swap discussed before:

    \[S(t,\{T_i\}, X) = P(t,T_N) - P(t,T_0) + \sum^N_{i=1} X \cdot P(t,T_i)\]

where t is the time now. This is exactly the same as the price of buying a unit of bond at time T_0 for $1, receiving the fixed coupons X at each payment period, and receiving the original notional back at time T_N.

So, the price of a swaption is an option on receiving a portfolio of coupon payments, each of which can be thought of as a zero-coupon bond paid at that time, and the value of the swaption is the positive part of the expected value of these:

    \[C(t, T_0, T_N, K, X) = P(t,T_0) \cdot {\mathbb E}\Bigl[ \Bigl( K - \sum^N_{i=1} X \cdot P(t,T_i) \Bigr)^+ \Bigr]\]

where the cash payments have been replaced by the strike of the option (the only ‘notional’ payment that will be paid)

This isn’t readily tractable, but we make use of Jamshidian’s decomposition (I won’t go further here – this is worth it’s own post!) to re-write this with the max inside the summation:

    \[C(t, T_0, T_N, K, X) = P(t,T_0) \cdot {\mathbb E}\Bigl[ \sum^N_{i=1} \Bigl( K_i - \cdot P(t,T_i) \Bigr)^+ \Bigr]\]

where K_i is the price of a ZCB at time T_0 expiring at T_i if rates at T_0 make the value of the coupon-bearing bond equal to X.

Looking at this expression, we see that each term is simply the present value of an option to buy a ZCB at time T that expires at one of the payment dates T_i with strike K_i. So the price of a swaption has been expressed entirely as the price of a portfolio of options on ZCBs!

For the HWeV model, these are deterministic and depend only on the initial rate, and calibrated time dependent parameters in the model. Since rates are gaussian in HWeV this can be done analytically. Calculating these for time-varying parameters is algebra-intensive and I leave it for a later post, but for constant parameters the calculation is described in Brigo and Mercurio pg 75-76 and gives a price of

    \begin{align*} ZBC(t,T_0,T_i,K) &= P(t,T_0) {\mathbb E}\Bigl[ K - X \cdot P(t,T_i) \Bigr]^+ \nonumber \\ &= P(t,T_i) \cdot \Phi(h) - X \cdot P(t,T_0) \cdot \Phi(h-\sigma_p) \nonumber \end{align*}


    \begin{align*} \sigma_p &= \sigma \sqrt{\frac {1-e^{-2a(T_0 - t)}} {2a}} B(T_0,T_N) \nonumber \\ h &= {\frac 1 {\sigma_p}} \ln{\frac {P(t,T_N)} {X \cdot P(t,T_0)}} + {\frac {\sigma_p} 2} \nonumber \\ B(T_0,T_N) &= {\frac 1 a} \Bigl[ 1 - e^{-a(T_N - T_0)}\Bigr] \nonumber \end{align*}

We can see how we could use the above to calibrate the volatility parameter to match a single market-observed swaption price. When several are visible, the challenge becomes to choose a piecewise continuous function to match several of them. In HWeV this can be done analytically, but for more general models some sort of optimisation would be required.

Since these contracts have an exercise date T when the swap starts and the swaps themselves will have another termination date T_N which define a 2-dimensinal space \{T,T_N\}, it will not be possible to fit all market-observable swaptions with a one factor model. Many alternatives are discussed in the literature to deal with this concern, but the general procedure is the same. Practically, we should choose the most liquid swaptions and bootstrap to these, and only a few (5Y, 10Y etc) will practically be tradable in any case.

Bootstrapping the Discount Curve from Swap Rates

Today’s post will be a short one about calculation of discount curves from swap rates. I’ve discussed both swaps and discount curves in previous posts, you should read those before this one or it might not make much sense!

Although bonds can be used to calculate discount bond prices, typically swaps are the most liquid products on the market and will go to the longest expiry times (often 80+ years for major currencies), so these are used to calculate many of the points on the discount curve [and often both of these can be done simultaneously to give better reliability].

In the previous post on swaps, I calculated the swap rate X that makes swaps zero-valued at the current time

    \[X = {Z(0,t_0) - Z(0,t_N) \over \sum_{n=0}^{N-1} \tau \cdot Z(0,t_{n+1})}\]

where the t‘s here represent the fixing dates of the swap (although payment is made at the beginning of the following period, so the n‘th period is received at t_{n+1}.

Consider the sequence of times \{t_0 = 0, t_1, t_2, \dots , t_n\} for which a sequence of swaps are quoted on the markets, with swap rates X_i for the swap running from t_0 up to t_i. We can back out the discount factor at each time as follows:

    \[X_0 = {Z(0,0) - Z(0,t_1) \over \tau \cdot Z(0,t_1)}\]

    \[\Rightarrow Z(0,t_1) = {1 \over 1 + \tau X_0 }\]

    \[X_1 = {Z(0,0) - Z(0,t_2) \over \tau \big(Z(0,t_1) + Z(0,t_2)\big) }\]

    \[\Rightarrow Z(0,t_2) = {1 - \tau \cdot X_1 \cdot Z(0,t_1) \over 1 + \tau X_1}\]

and we can see from this the general procedure, calculating another ZCB from each successive swap rate using the expression

    \[Z(0,t_i) = {1 - \sum_{i=1}^{i-1} \big(\tau \cdot X_i \cdot Z(0,t_i) \big) \over 1 + \tau X_{i-1}}\]

These swaps and ZCBs are called co-initial because they both started at the same time t_0.

Now imagine that instead the swaps X_i have the first fixing at time t_i and their final fixing at time t_n for 0 \leq i < n – such swaps are called co-terminal swaps as they start at different times but finish at the same one. Once again we can calculate the discount factors up to a constant factor, this time by working backwards:

    \[X_{n-1} = {Z(0,t_{n-1}) - Z(0,t_n) \over \tau \cdot Z(0,t_n)}\]

    \[\Rightarrow Z(0,t_{n-1}) = Z(0,t_n)\cdot\big( { 1 + \tau X_{n-1} }\big)\]

    \[X_{n-2} = {Z(0,t_{n-2}) - Z(0,t_n) \over \tau \big(Z(0,t_{n-1}) + Z(0,t_n)\big) }\]

    \[\Rightarrow Z(0,t_{n-2}) = Z(0,t_{n})\big( 1 + \tau X_{n-2} ( 1 + \tau X_{n-1}) \big)\]

and so on, the dcfs can be backed out.

To specify the exact values of co-terminal swaps, we need to know at least one dcf exactly. In general the co-initial case will also require this – I implicitly assumed that they started fixing at t=0 where we know Z(0,0) = 1, but for general co-initial swaps we would also have this issue.

Forward Rate Agreements and Swaps

For calibration of discount curves from swap rates, see my post on Bootstrapping the Discount Curve from Swap Rates.

In this post I’m going to introduce two of the fundamental interest rate products, Forward Rate Agreements (FRAs) and Swaps. FRAs allow us to ‘lock in’ a specified interest rate for borrowing between two future times, and Swaps are agreements to exchange a future stream of fixed interest payments for floating ones, or visa-versa. Both are model independent, which means we can statically hedge them today using just Zero Coupon Bonds (ZCBs) – so their prices won’t depend on our models for interest rates or underlying prices etc. ZCBs really are fundamental here – if you haven’t read my earlier post on them yet I recommend starting there!

First, a note about conventions. In other contexts, I’ve used r to be the continuously-compounding rate, such that if I start with $1, by time t it will be worth \exp \bigl( \int_0^t r(t')dt' \bigr) . In the rates world, this would be very confusing, and rates are always quoted as simple annualised rates, so that $1 lent for half a year at 5% would return $1.025 exactly in half a year’s time (note the additional factor of 0.5 coming from the year-fraction of the deposit), and this rates convention will be used throughout this post.

Each ZCB gives us a rate at which we can put money on deposit now for expiry at a specific time, and we can construct a discount curve from the collection of all ZCBs that we have available to us. In the case of a ZCB, we deposit the money now and receive it back at expiry. A Forward Rate Agreement extends the idea of putting money on deposit now for a fixed period of time to putting it on deposit at a future date for a specific period of time. We’ve picked up an extra variable here – our rate r(T) for deposit starting now depends only on time of expiry T, while the FRA rate f(t,T) will depend on the time that we put the money on deposit t as well as the time of expiry T.

An FRA, just like a deposit, involves two cash flows. We pay the counterparty a notional M at time t, and receive our notional M plus interest of (T-t)\cdot f(t,T) \cdot M at time T; where the first term is the Year Fraction, the second is the Forward Rate, and the final is the Notional. Since f will be fixed when we sign the contract, we can hedge these two cash flows exactly at t=0 using ZCBs. The value of the FRA is the value of receiving the second sum minus the cost of making the first payment:

    \[{\rm FRA}_{price} = Z(0,T)\cdot \Bigl[ (T - t)\cdot f(t,T) + 1\Bigr]\cdot M - Z(0,t)\cdot M\]

This agreement is at ‘fair value’ if the forward rate f(t,T) makes {\rm FRA}_{price} = 0, and re-arranging gives

    \[f(t,T) = {1 \over T-t}\ \Bigr( {Z(0,t) \over Z(0,T)} - 1 \Bigl)\]

An FRA allows us to ‘lock-in’ a particular interest rate for some time in the future – this is analogous in rates markets to the forward price of a stock or commodity for future delivery, which was discussed in an earlier post. Note that the price of all FRAs is uniquely determined from the discount curve [although in reality our discount curve will be limited in both temporal resolution and maximum date by the ZCBs or other products available on the market which we can use to build it].

A Swap is an agreement to exchange two cash flows coming from assets, but not the assets themselves. By far the most common is the Interest Rate Swap, in which two parties agree to swap a stream of fixed rate interest rate payments on a notional M of cash for a stream of floating rate payments on the same notional. Although the notional might be quite large, usually only the differences between the payments at each time are exchanged, so the actual payments will be very much smaller. The mechanics are probably best demonstrated by example:

A swap is written on a notional $100Mn, with periods starting in a year and continuing for three years and with payments at the end of each three month period; to pay fixed annualised 5% payments, and floating payments at the three-month deposit rate (fixed at the beginning of each period). What payments actually get made?

The swap starts in a year’s time, but the first payment is made at the end of the first 3-month period, in 15 months time. At this time, the fixed payment will be 5\% \cdot M \cdot (3{\rm m} / 12{\rm m}). The floating payment will be whatever the three-month deposit rate was at 1 year, multiplied by the same prefactors, r_{\rm 1 yr}(0,3{\rm m}) \cdot M \cdot (3{\rm m} / 12{\rm m}) – let’s say that r_{\rm 1 yr}(0,3{\rm m}) is 4% (although of course we won’t know what it is until the beginning of each period, and the payment will be delayed until the end of the period) – then the net cash flow will be $250,000, paid by the person paying fixed to the person paying floating.

The same calculation happens at each time, and a payment is made equal to the difference between the fixed and the floating leg cash flow. Although the notional is huge, we can see that the actual payments are much, much smaller [be alert for newspapers quoting ‘outstanding notional’ to make positions seem large and unsteady!]. The convention for naming Swaps is that if we are receiving fixed payments, we have a receiver’s swap; and if we are receiving floating payments, it is a payer’s swap.

What is the point of this product? Well, if we have a loan on which we are having to pay floating rate interest, using a swap we can exchange that to a fixed rate of interest by making fixed rate payments to the counterparty and receiving floating rate payments back, which match the payments that we’re making on the loan. This is of use to companies, who need to handle interest rate risk and might not want to be exposed to rates rising heavily on money they’re borrowing. A bank holding a large portfolio of fixed rate mortgage loans but required to pay interest to a central bank at floating rate might engage in a swap in the reverse direction to hedge it’s exposure.

How can we price this product? It’s easy to price the fixed payments – since each is known exactly in advance, we can hedge these out using ZCBs. The value of the sum of the fixed payments is

    \[V_{\rm fixed} = M \sum_{n=0}^{N-1} x \cdot Z(0,t_{n+1}) \cdot \tau\]

where x is the fixed rate (5% in our example above), and \tau is the relevant year-fraction for each payment (0.25 in our example about). What about the floating payments? We have to think a little harder here, but it turns out we can use FRA agreements to hedge these exactly as well. The problem is that we don’t know what the three-month deposit rate will be in a year’s time. But we can replicate it: if we borrow an amount N in a year’s time, and put that on deposit for three months, we’ll receive back M \cdot(r_{1 yr}(0,3{\rm m}) + 1)\cdot (3{\rm m}/12{\rm m}) in 15 months. We know from our discussion above that we can enter an FRA to borrow N in a year’s time, and we’ll need to pay M \cdot (f(12{\rm m},15{\rm m})+1) \cdot (3{\rm m}/12{\rm m}) in 15 months time – so we can guarantee to match the payment profile of the floating leg using the forward rates for the periods in question. The value of the floating payments is therefore

    \[V_{\rm floating} = M \sum_{n=0}^{N-1} f(t_n,t_{n+1}) \cdot Z(0,t_{n+1}) \cdot \tau\]

    \[= M \sum_{n=0}^{N-1} Z(0,t_{n+1}) \cdot ({Z(0,t_n)\over Z(0,t_{n+1})} - 1)\]

    \[= M \sum_{n=0}^{N-1} (Z(0,t_n) - Z(0,t_{n+1}))\]

    \[= M \bigl(Z(0,t_0) - Z(0,t_N)\bigr)\]

Since we can fix the price of the two legs exactly by arbitrage right now, we can value the swap by comparing the present value of each leg

    \[V_{\rm swap} = V_{\rm fixed} - V_{\rm floating}\]

    \[= M \sum_{n=0}^{N-1} (x - f(t_n,t_{n+1}))\cdot Z(0,t_n) \cdot\tau\]

    \[= M \Bigl( Z(0,t_N) - Z(0,t_0) + \sum_{n=0}^{N-1} x \cdot Z(0,t_{n+1})\cdot \tau \Bigr)\]

As with FRAs, swaps are said to be at fair value when the values of the fixed and the floating rate match, and the overall value is zero. This is the fixed rate at which we can enter a Swap for free, and occurs when x = X such that

    \[X = { Z(0,t_0) - Z(0,t_N) \over \sum_{n=0}^{N-1} \tau\cdot Z(0,t_{n+1}) }\]

This is called the Swap Rate. It is fully determined by the discount curve, and as we shall see the reverse is also true – the Swap Rate is in 1-to-1 correspondence with discount curve. Of course, after a swap is issued the Swap Rate will change constantly, in which case the actual fixed payment will no longer match X and the swap will have non-zero value. If K is the swap fixed coupon payment and X is the current swap rate, then

    \[V_{\rm swap}= M \Bigl( Z(0,t_N) - Z(0,t_0) + \sum_{n=0}^{N-1} K \cdot Z(0,t_{n+1})\cdot \tau \Bigr)\]

    \[= M \Bigl( {Z(0,t_N) - Z(0,t_0)\over \sum_{n=0}^{N-1} \cdot Z(0,t_{n+1})\cdot \tau} + K \Bigr) \cdot \sum_{n=0}^{N-1} \cdot Z(0,t_{n+1})\cdot \tau\]

    \[V_{\rm swap}= M \cdot (K - X)\cdot \sum_{n=0}^{N-1} Z(0,t_{n+1})\cdot \tau\]

    \[V_{\rm swap}= M \cdot (K - X)\cdot B\]

where B = \sum_{n=0}^{N-1} Z(0,t_{n+1})\cdot \tau is called the annuity of the swap. The value is proportional to the difference between the swap rate and the swap fixed coupon.

Because of the number of institutions that want to handle interest rate risk resulting from loans, IR Swaps are one of the most liquidly traded financial products. Although we’ve derived their price here from the Discount Curve, in practice it is often done the other way around – Swaps often exist up to much higher maturity dates than other products, and Discount Curves at long maturities are instead constructed from the swap rates quoted on the market at these dates. This is a very important procedure, but financially rather trivial. I’m not going to cover it here but will probably come back to it in a short post in the near future.

As well as being important in their own right, FRAs and Swaps (along with ZCBs, of course) are the foundation of the rich field of interest rate derivatives. The right (but not obligation) to enter into an FRA – a call option on an FRA – is called a caplet, and a portfolio of such options on FRAs across different time periods is called a cap, since you have guaranteed a cap on the maximum interest you will have to pay over the whole period to borrow money (a put on an FRA is called a floorlet, and a sequence of these forms a floor, for similar reasons). An option to enter a swap is called a swaption, and these are also heavily traded wherever a borrower might want to re-finance a loan at a later date if interest rates move sharply. The pricing of these products becomes dependent on the underlying model that we assume for interest rates, and I’ll start to deal with them in later posts.