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 zerocoupon 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 zerocoupon 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 streetstandard 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.