Pricing Constant Maturity Swaps, Swaps and Caps

For pricing constant maturity swaps (CMS), swaps and caps, and especially how convexity adjustment is managed, Finance Active uses the method developed by Patrick Hagan in his article Convexity Conundrums: Pricing CMS Swaps, Caps and Floors.

 

In our notation, today is always t = 0.

Property

Description

Z(t;T)

Value at date t of a zero-coupon bond with maturity T.

D(T)

Today's discount factor for maturity T.

 

Let's consider:

  • A CMS swap leg paying the N year swap rate.
  • j = 1, 2, …, m

Property

Description

t_0.png, t_1.png, …, t_m.png

Dates of the CMS leg specified in the contract.

delta_j.png

Year fraction of interval j.

R_j.png

N year swap rate.

 

For each period j, the CMS leg pays:

delta_j.pngR_j.png paid at t_j.png

 

Property

Description

R_s.png

Reference rate, par rate for a standard swap that starts at date s_0.png and ends N years later at s_n.png.

s_1.png, s_2.png, ..., s_n.png

Payment dates of the swap fixed legs.

a_j.png

Fraction of a year for each fixed leg period j.

 

The level of the swap is defined as:

L_t_.png

 

The forward swap rate is:

R_s_t_.png

 

In particular, today’s level is:

L_0.png

 

And today’s swap rate is:

R_s_0.png

 

We begin with the pricing of a CMS caplet. The payoff of a CMS caplet with a fixing date τ is:

CMScaplet.png

paid at t_p.png

 

From the fundamental formula of the pricing, today’s value of the caplet is (under the level numeraire):

V_cap_CMS_0_.png

 

The ratio Z(τ;t_p.png)/L(τ) is a martingale under the level numeraire, so its average value is today’s value:

E.png

 

By dividing Z(τ;t_p.png )⁄L(τ) by its mean, we get:

V_cap_CMS_0__2.png

 

The first term is the price of a European swaption with the notional D(t_p.png)⁄L_0.png. The last term is the convexity correction.

There are two steps in evaluating the convexity correction. The first step is to model the yield curve movement in a way that allows us to rewrite the level L(τ) and the zero-coupon bond Z(τ;t_p.png) in terms of the swap rate R_s.png. Then we can write:

Z_t_t_p_.png

 

For some G(R_s.png) functions, the convexity correction is just the expected value:

R_s_t_-K.png

 

Property

Description

q

Count of periods per year:

  • 1, if the reference swap is annual.
  • 2, if biannual.
  • Etc.

Delta.png

Fraction of a period between the swap start date s_0.png and the payment date t_p.png.

 

The function we use is called standard model (or street-standard model) in Hagan's article:

G_R_s_.png

 

The second step is to replicate the payoff in terms of payer swaptions. For any smooth functions f(R_s.png) with f(K)=0, we can write:

f__K_.png

 

Choosing:

Capture_d_e_cran_2020-10-05_a__16.55.31.png

 

We get:

Capture_d_e_cran_2020-10-05_a__16.56.15.png

 

So we get for the value of the CMS caplet:

Capture_d_e_cran_2020-10-05_a__16.57.00.png

 

With the value of a payer swaption with strike x:

Capture_d_e_cran_2020-10-05_a__16.57.45.png

 

With similar arguments, we get the value of a CMS floorlet:

Capture_d_e_cran_2020-10-05_a__17.00.34.png

 

With the same as f(x) with the strike K replaced by the swap rate R_S_0.png:

Capture_d_e_cran_2020-10-05_a__17.06.39.png

 

The values C(x) and P(x) are computed with our internal swaption volatility surfaces, built when supposing the forward swap rate is following the SABR model.

Was this article helpful?
0 out of 0 found this helpful