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 |
---|---|
, , …, |
Dates of the CMS leg specified in the contract. |
Year fraction of interval j. |
|
N year swap rate. |
For each period j, the CMS leg pays:
paid at
Property |
Description |
---|---|
Reference rate, par rate for a standard swap that starts at date and ends N years later at . |
|
, , ..., |
Payment dates of the swap fixed legs. |
Fraction of a year for each fixed leg period j. |
The level of the swap is defined as:
The forward swap rate is:
In particular, today’s level is:
And today’s swap rate is:
We begin with the pricing of a CMS caplet. The payoff of a CMS caplet with a fixing date τ is:
paid at
From the fundamental formula of the pricing, today’s value of the caplet is (under the level numeraire):
The ratio Z(τ;)/L(τ) is a martingale under the level numeraire, so its average value is today’s value:
By dividing Z(τ; )⁄L(τ) by its mean, we get:
The first term is the price of a European swaption with the notional D()⁄. 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(τ;) in terms of the swap rate . Then we can write:
For some G() functions, the convexity correction is just the expected value:
Property |
Description |
---|---|
q |
Count of periods per year:
|
Fraction of a period between the swap start date and the payment date . |
The function we use is called standard model (or street-standard model) in Hagan's article:
The second step is to replicate the payoff in terms of payer swaptions. For any smooth functions f() with f(K)=0, we can write:
Choosing:
We get:
So we get for the value of the CMS caplet:
With the value of a payer swaption with strike x:
With similar arguments, we get the value of a CMS floorlet:
With the same as f(x) with the strike K replaced by the swap rate :
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.