Plain Vanilla Version 1.0

Plain Vanilla
Version 1.0
1
Introduction
This plug-in provides Fairmat with the capability to price a plain vanilla swap or
structured product with options like caps/floors, swaption and digital options
using the Black model. Also Fairmat can computes the fair-value of a Cross
Currency Swap or a Basis Cross Currency Swap.
The available standard blocks are
• Floating Leg;
• Fixed Leg;
• Cap;
• Floor;
• Digital (Cash or Nothing);
• Floating Basis Currency;
• Swaption.
2
Inside the Blocks
Within each block there are 3 main tabs with which you can specify all the
specific and market parameters of the contract and specify the discount curve :
• “Contract Specification”
• “Market Data”;
• “Custom Discounting”.
As you see from Figure (1), the panel “Contract Specification” contains two
secondary panels:
the “Parameters” panel defines the contract’s specific parameters (i.e. reset
and payment dates with a specific day count convention)and the “Advanced”
panel allows to specify how many payments evaluate. This may be useful when
the payoff of the contract changes over time and the payment dates vector is
1
2
Inside the Blocks
(a) Parameters
(b) Advance
Figure 1: List of parameters set in tab “Parameters” and the function “Advance” that makes it possible to set (true) or not (false) the evaluation and
by-pass the effective payment dates set in “Parameters”.
unique. “Market Data”, as you see from Figure 2, define the market values
required for the assessment of the contract fair-value (i.e. Zero Rate curve,
volatility surface etc.) at tab “Manual Bindings”. These input can be set
manually, as shown in Figure 3a, or recovered from a market data provider (this
feature is available only with Fairmat Professional), as shown in Figure
3b. To enable you to do this should select the tab Market Data, “Market
Data Provider” on window menu Market Data Input and sub-tab Data Provider
Bindings. The only input to set is Market (sector). The last main tab “Custom
Discounting”, shown on Figure (3), enable you to impose a specific discount
factor to the block, setting the namesake window selected “Use a specific custom
discounting”. After this you need to specify, “Discounting Model” that sets the
form of the discounting curve. It could be a constant value (“Use Constant
Risk Free Rate”) or calculated with a deterministic formula (i.e. continuous or
composite).1 The default setting of the discount factor calculations are managed
in “Discounting”, in the left main toolbar.
These features are common to each block. The following sub-section provides
explanation in detail of the blocks functionality, relative list of parameters and
in brackets, a specification of Fairmat “Parameters and Functions” types.
1 Use Dynamic Term Structure exist only if is set a stochastic process. In any case, the use
in this context, isn’t recommended.
2
2
Inside the Blocks
(a) Manual
(b) Market Data Provider
Figure 2: List of market parameters set in tab “Manual Data Bindings” and
the function “Data Provider Bindings” that makes it possible charge the market parameters through a market data provider (available only with Fairmat
Professional).
Over the fair-value, Plain Vanilla blocks (PV) computes the following Greeks:
∆, Γ, ρ, Θ and v.
Every time and quanto adjustments are estimated internally. All pricing and
adjustment formulas are in [?] and in [?].
3
2
Inside the Blocks
(a) Custom Discounting
(b) Discounting Model
Figure 3: This figures explain the custom discounting.
4
2
Inside the Blocks
2.1
Fixed Rate Leg
The Fixed Rate Leg block computes the value of payments indexed at a fix rate,
that could be a constant or a vector if there’s change during that period. The
evaluation formula is
N
X
Di (t0 )F ixi cvg(ti , ti+1 , dcb);
(1)
i=0
where Di is a discount factor, got from the discounting curve, F ixi is the fix
rate and cvg is the coverage period between ti and ti+1 with day count basis
(30/360, Act360, ActAct, etc.).
The inputs of Fixed Rate Leg block are :
• Contract Parameters :
- Notional : the reference amount of every contract payments (Constant Parameter or Vector values/expression/dates);
- Rate : the fix rate (Constant Parameter or Vector values/expression/dates);
- Payment dates : payment dates of cash flows in annual terms (Vector
values/expression/dates);
- Cvg : the coverage period, in annual terms, of every payments with
the right day count convention adjusted (Dates vector of differences
transformation).
- EndRepayment : identify the last repayment amount (used expecially
for Cross Currency Swap)
• Market Data
- None (The discounting curve has automatically calculated by Fairmat, see also “Custom Discounting” in (2) ).
2.2
Floating Rate Leg
The Floating Rate Leg block computes the value of payments, indexed at the
same floating rate that it could be a Short rate (Euribor, Libor etc.) or a
Constant Maturity Swap rate (CMS) with the follow formula :
N
X
Di (t0 )Ratei (t0 )cvg(ti , ti+1 , dcb);
(2)
i=0
where Di is a discount factor, got from the discounting curve, Ratei is the
forward, or forward swap (if the underlying is CMS), rate and cvg is the coverage
period between ti and ti+1 with day count basis (30/360, Act/360, Act/Act,
etc.).
The evaluation is available for different country and related market convention (day count convention, accrual period etc.).
The contract parameters inputs of the Floating Rate Leg block are :
5
2
Inside the Blocks
- Notional : the reference amount of every contract payments (Constant
Parameter or Vector values/expression/dates);
- Spread : the spread addicted to the float rate (Constant Parameter or
Vector values/expression/dates);
- Payment dates : payment dates of cash flows in annual terms (Vector
values/expression/dates);
- Reset dates : reset dates of underlying, in annual terms, adjusted with
the right convention (Dates Vector Adjust. Transform.);
- Cvg : the coverage period, in annual terms, of every payments with the
right day count convention adjusted (Dates vector of diff. trasf.);
- Tenor : rate index period in annual terms (i.e. Euribor 6m = 0.5; CMS
10y = 10) (Constant Parameter).
- Rate type : identify underlying type Short Rate (==0 or null) or Constant
Maturity Swap rate (==1) or Quanto rate (==2);
- Reset type : identify the right rate reset time Advance (==0 or null) or
Arrears (==1);
- End Repayment : identify the last repayment amount (used expecially for
Cross Currency Swap)
The Market Data inputs to set is :
- Forwarding Curve : the zero rate curve that Fairmat use to compute the
forward rate.
If the Reset rate is in − arrears or there is an underlying CMS Rate or a quanto
rate adjustment to Market Data you have to set:
- ATM Volatilities : are the cap or swaption ATM volatilities (Flat if are
quoted in the market, Spot if are already estimate) (Vector or Matrix
values/expression/dates);
- Maturity : are standard cap or swaption maturity, in annual terms (Vector
values/expression/dates);
- ATM Strikes : the ATM strikes rate of ATM Caps usually the forward
rate. For CMS case these are Tenor Swap underlying the swaption (Vector
values/expression/dates);
- Accrual Period : the standard coverage period of caplets, in annual terms
(Vector values/expression/dates).
- Flat Volatilities : flag to estimate, with the stripping algorithm, spotforward volatilities from the flat volatilities (1 == to estimate; 0 or null
== already estimated);
6
2
Inside the Blocks
- Historical Rate : identify the rate already detected for the first payment
date;
- Quanto Adj : is the adjustment of the Ratei if the underlying is expressed
in a different currency of the notional amount. The theoretical references
are also differential swap in [?] (Vector values/expression/dates).
2.3
Cap/Floor
The Cap and Floor blocks compute the value of a related option on interest rate
with Black’s model ([?]), already defined as Standard Market Model (SMM).
The formulas of Cap-Floor implemented in PV plug-in are
Cap(0)
=
N
X
cvg(ti , ti+1 , dbc)Di (t0 )[Fi (t0 )N (d1 ) − KN (d2 )];
i=0
F loor(0)
=
N
X
cvg(ti , ti+1 , dbc)Di (t0 )[KN (−d2 ) − Fi (t0 )N (−d1 )]; (3)
i=0
where N is the cumulative density of Normal(0,1) of d1 and d2 defined as
d1
d2
log(Fi (t0 )/K) + (σi2 ti )/2
√
,
σi t i
√
= d1 − σi t i .
=
(4)
Cap-floor underlying could be a Short rate (Euribor-Libor) or a CMS rate.
The contract parameters inputs of Cap-Floor Leg blocks are :
- Notional : the reference amount of every contract payments (Constant
Parameter or Vector values/expression/dates);
- Cap/Floor Strike : the cap/floor strike of the contract (Constant Parameter or Vector values/expression/dates);
- Payment dates : payment dates of cash flows in annual terms (Vector
values/expression/dates);
- Reset dates : reset dates of the underlying, in annual terms, adjusted with
the right convention (Dates Vector Adjust. Transform.);
- Cvg : the coverage period in annual terms of every payments with the
right day count convention adjusted (Dates vector of diff. trasf.);
- Tenor : rate index period in annual terms (i.e. Euribor 6m = 0.5; CMS
10y = 10) (Constant Parameter);
- Rate type : identify underlying type Short Rate (==0 or null) or Constant
Maturity Swap rate (==1) or Quanto rate (==2);
7
2
Inside the Blocks
- Reset type : identify the right rate reset time Advance (==0 or null) or
Arrears (==1);
The Market Data to set is the :
- Forwarding Curve : is the zero rate curve to compute the forward rate
Ratei (Interpolation Function);
- Volatilities : are the cap/swaption volatilities (Flat or Spot if are already
estimate) (Matrix values/expression/dates);
- Maturity : are standard cap/swaption maturities, in annual terms (Vector
values/expression/dates);
- Strikes : the strikes rate of caps associated to the different volatilities
curves. For a CMS case are Tenor Swap of swap underlying the swaption
(Vector values/expression/dates);
- Accrual Period : the standard coverage period of caplets, in annual terms
(Vector values/expression/dates).
- Flat Volatilities : flag to estimate, with the stripping algorithm, spotforward volatilities from the flat volatilities (1 == to estimate; 0 or null
== already estimated);
- Historical Rate : identify the rate already detected for the first payment
date;
- Quanto Adj : is the adjustment of the Ratei if the underlying is expressed
in different currency of the notional amount. For the theoretical reference
see also differential swap in [?] (Vector values/expression/dates).
2.4
Digital option
The Digital option (Cash or Nothing) block computes the value of a digital
call/put option that pay 0 if the value of F is under threshold K otherwise an
amount Q. The evaluation formula is obtained from Black’s interest rate model
([?]). The valuation formula of digital call is :
DigCall(0) =
N
X
cvg(ti , ti+1 , dbc)Di (t0 )QKN (d2 )
(5)
i=0
while the formula of Digital floor is
DigP ut(0) =
N
X
cvg(ti , ti+1 , dbc)Di (t0 )QKN (−d2 )
i=0
8
(6)
2
Inside the Blocks
where N is the cumulative density of Normal(0,1) d2 defined as
d2
=
log(Fi (t0 )/K) − (σi2 ti )/2
√
σi t i
(7)
The contract parameter inputs of a Digital block are
- Notional : the reference amount of every contract payments (Constant
Parameter or Vector values/expression/dates);
- Threshold : is the value of K (Constant Parameter or Vector values/expression/dates);
- Rate : is the value of Q (Constant Parameter or Vector values/expression/dates);
- Type : define the type of option. Is 0== if cap type, 1==floor type
(Constant Parameter);
- Payment dates : payment dates of cash flows in annual terms (Vector
values/expression/dates);
- Reset dates : reset dates of the underlying, in annual terms, adjusted with
the right convention (Dates Vector Adjust. Transform.);
- Cvg : the coverage period in annual terms of every payments with the
right day count convention adjusted (Dates vector of diff. trasf.);
- Tenor : rate index period in annual terms (i.e. Euribor 6m = 0.5; CMS
10y = 10) (Constant Parameter);
- Rate type : you could select input Short Rate (==0 or null) or Constant
Maturity Swap rate (==1) or Quanto rate (==2);
- Reset type : identify the right rate reset time Advance (==0 or null) or
Arrears (==1);
The Market Data inputs can be insert manually selecting the tab Market Data,
“Manual” on window menu Market Data Input and sub-tab Manual Bindings.
The inputs to set are :
- Forwarding Curve : is the zero rate curve to compute the forward rate
Ratei (Interpolation Function);
- Volatilities : are the cap/swaption volatilities (Flat or Spot if are already
estimate) (Matrix values/expression/dates);
- Maturity : are standard cap/swaption maturities, in annual terms (Vector
values/expression/dates);
- Strikes : the strikes rate of caps associated to the different volatilities
curves. For a CMS case are Tenor Swap of swap underlying the swaption
(Vector values/expression/dates);
9
2
Inside the Blocks
- Accrual Period : the standard coverage period of caplets, in annual terms
(Vector values/expression/dates).
- Flat Volatilities : flag to estimate, with the stripping algorithm, spotforward volatilities from the flat volatilities (1 == to estimate; 0 or null
== already estimated);
- Historical Rate : identify the rate already detected for the first payment
date;
- Quanto Adj : is the adjustment of the Ratei if the underlying is expressed
in different currency of a notional amount. For the theoretical reference
see also differential swap in [?] (Vector values/expression/dates).
2.5
Floating Currency Basis Leg
The Floating Currency Basis Leg computes one leg of a cross currency basis
Swap. The Internal Fairmat algorithm implements the procedure described by
[]. The procedure shows a bootstrap technique to give up the right discount
factors adjusted for the Basis Currency Spread to discount the cash flows. The
free arbitrage condition is expressed with the follow equation :
1=
m
X
∗
τi (Ratei + sm )DFi∗ (t0) + DFm
;
(8)
i=0
with m = 1, ..., N . The recursive bootstrapping relation is
Pm
1 − i=0 τi (Ratei + sm )DFi∗ (t0)
∗
;
DFm =
1 + τm (Ratem − sm )
(9)
The contract parameters inputs of Floating Currency Basis Leg block are :
- Notional : the reference amount of every contract payments (Constant
Parameter or Vector values/expression/dates);
- Spread : the spread addicted to the float rate (Constant Parameter or
Vector values/expression/dates);
- Payment dates : payment dates of cash flows in annual terms (Vector
values/expression/dates);
- Reset dates : reset dates of underlying, in annual terms, adjusted with
the right convention (Dates Vector Adjust. Transform.);
- Cvg : the coverage period, in annual terms, of every payments with the
right day count convention adjusted (Dates vector of diff. trasf.);
- Tenor : rate index period in annual terms (i.e. Euribor 6m = 0.5; CMS
10y = 10) (Constant Parameter).
10
2
Inside the Blocks
- Rate type : identify underlying type Short Rate (==0 or null) or Constant
Maturity Swap rate (==1) or Quanto rate (==2);
- Reset type : identify the right rate reset time Advance (==0 or null) or
Arrears (==1);
- End Repayment : identify the last repayment amount (Constant Parameter).
The Market Data inputs can be insert manually selecting the tab Market Data,
“Manual” on window menu Market Data Input and sub-tab Manual Bindings.
The inputs to set are :
- Forwarding Curve : the zero rate curve that Fairmat use to compute the
forward rate.
- ATM Volatilities : are the cap ATM volatilities (Flat if are quoted in the
market, Spot if are already estimate) (Vector values/expression/dates);
- Maturity : are standard cap maturity, in annual terms (Vector values/expression/dates);
- ATM Strikes : the ATM strikes rate of ATM Caps usually the forward
rate (Vector values/expression/dates);
- Accrual Period : the standard coverage period of caplets, in annual terms
(Vector values/expression/dates).
- Flat Volatilities : flag to estimate, with the stripping algorithm, spotforward volatilities from the flat volatilities (1 == to estimate; 0 or null
== already estimated);
- Historical Rate : identify the rate already detected for the first payment
date;
- Spread currency : identify the basis spread of an IR basis currency swap
quoted (es: Eur3 vs Libor3);
- Swap Rate : identify the Swap Rate of local currency necessary for the
forward adjustment calculation.
2.6
Swaption
The Swaption block compute the value of related options on the interest rate
with Black’s model ([?]), already defined as Standard Market Model (SMM).
The formulas of Swaption give to the holder the right to receive a Floating Rate
and to pay a Fixed Rate is
SwaptionP ay(0)
=
N
X
cvg(ti , ti+1 , dbc)Ann(t0 )[F sr(t0 )N (d1 ) − KN (d2 )];
i=0
(10)
11
2
Inside the Blocks
while a Swaption that give to the holder the right to receive a Fix Rate and to
pay a Fixed Rate is
SwaptionRec(0)
=
N
X
cvg(ti , ti+1 , dbc)Ann(t0 )[KN (−d2 ) − F sr(t0 )N (−d1 )];
i=0
(11)
where N is the cumulative density of Normal(0,1) of d1 and d2 defined as
d1
d2
log(F sr(t0 )/K) + (σi2 ti )/2
√
,
σi t i
√
= d1 − σi ti .
=
(12)
Swaption underlying could be a Short rate (Euribor-Libor) or a CMS rate.
The contract parameters inputs of Cap-Floor Leg blocks are :
- Notional : is the reference amount of every contract payments (Constant
Parameter or Vector values/expression/dates);
- Strike : is the Fixed Rate of the swaption (Constant Parameter or Vector
values/expression/dates);
- Maturity Option : is the start date, in annual terms, of the underlying
swap (Constant Parameter).
- Tenor Swap : is the maturity of the underlying swap (Constant Parameter).
- Cvg : the coverage period in annual terms of fixed payments with the
right day count convention adjusted (Dates vector of diff. trasf.);
- Pay/Rec : identify the “point of view” of fix rate -1==pay or 1==receive
(Constant Parameter);
- Rate type : identify underlying type Short Rate (==0 or null) or Constant
Maturity Swap rate (==1) or Quanto rate (==2);
- Reset type : identify the right rate reset time Advance (==0 or null) or
Arrears (==1);
The Market Data to set are :
- Forwarding Curve : is the zero rate curve to compute the forward rate
Ratei (Interpolation Function);
- Volatilities : are the Swaption volatilities (Matrix values/expression/dates);
- Maturity : are standard option maturities, in annual terms (Vector values/expression/dates);
- Tenor Swap : are the maturities (tenor) of the underlying swap associated
to the different volatilities curves (Vector values/expression/dates);
12