swaptionbybdt - Price swaption from BDT interest-rate tree

Syntax

[Price, PriceTree] = swaptionbybdt(BDTTree, OptSpec, Strike,
ExerciseDates, Spread, Settle, Maturity,
'Name1', Value1, 'Name2', Value2)

Arguments

BDTTree

Interest-rate tree structure created by bdttree.

OptSpec

NINST-by-1 cell array of strings 'call' or 'put'. A call swaption entitles the buyer to pay the fixed rate. A put swaption entitles the buyer to receive the fixed rate.

Strike

NINST-by-1 vector for strike swap rate values.

ExerciseDates

For a European option: NINST-by-1 vector of exercise dates. Each row is the schedule for one option. For a European option, there is only one ExerciseDate on the option expiry date.

For an American option: NINST-by-2 vector of exercise date boundaries. For each instrument, the option can be exercised on any coupon date between or including the pair of dates on that row. If only one non-NaN date is listed, or if ExerciseDates is NINST-by-1, the option can be exercised between the underlying swap Settle and the single listed ExerciseDate.

Spread

NINST-by-1 vector representing the number of basis points over the reference rate.

Settle

NINST-by-1 vector of dates representing the settle date for each swap.

Maturity

NINST-by-1 vector of dates representing the maturity date for each swap.

    Note   All optional inputs that follow are specified as matching parameter name/value pairs. The parameter name is specified as a character string, followed by the corresponding parameter value. Parameter name/value pairs may be specified in any order; names are case-insensitive and partial string matches are allowed provided no ambiguities exist.

AmericanOpt

(Optional) NINST-by-1 flags options:

  • 0 for European options

  • 1 for American options

SwapReset

(Optional) NINST-by-1 vector representing the reset frequency per year for the underlying swap. Default is 1.

Basis

(Optional) Day-count basis of the instrument. A vector of integers.

  • 0 = actual/actual (default)

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ISMA)

  • 9 = actual/360 (ISMA)

  • 10 = actual/365 (ISMA)

  • 11 = 30/360E (ISMA)

  • 12 = actual/365 (ISDA)

Principal

(Optional) NINST-by-1 vector of the notional principal amounts. Default is 100.

Options

(Optional) Derivatives pricing options structure created with derivset.

Description

[Price, PriceTree] = swaptionbybdt(BDTTree, OptSpec, Strike,ExerciseDates, Spread, Settle, Maturity,'Name1', Value1, 'Name2', Value2) computes the price of a swaption from a BDT interest-rate tree. The swaption may be a call swaption or a put swaption.

A call swaption or payer swaption allows the option buyer to enter into an interest rate swap in which the buyer of the option pays the fixed rate and receives the floating rate.

A put swaption or receiver swaption allows the option buyer to enter into an interest rate swap in which the buyer of the option receives the fixed rate and pays the floating rate.

Price is a NINST-by-1 vector of expected swaption prices at time 0.

PriceTree is a MATLAB® structure of trees containing vectors of swaption instrument prices and a vector of observation times for each node. Within PriceTree:

Examples

Price a 5-year call swaption using a BDT interest-rate tree.

Assume that interest rate and volatility are fixed at 6% and 20% annually between the valuation date of the tree until its maturity. Build a tree with the following data:

Rates = 0.06 * ones (10,1);      
StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';...
'jan-1-2012';'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016'];    

EndDates =['jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';'jan-1-2012';...
'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016';'jan-1-2017'];
ValuationDate = 'jan-1-2007'; 
Compounding = 1; 

Determine the RateSpec:

RateSpec = intenvset('Rates', Rates, 'StartDates', StartDates, 'EndDates', EndDates, ...
'Compounding', Compounding);

Use VolSpec to compute the interest rate volatility:

Volatility = 0.20 * ones (10,1);  VolSpec = bdtvolspec(ValuationDate, EndDates, Volatility);

Use TimeSpec to specify the structure of the time layout for an equal probabilities tree:

TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);

Build the BDT tree:

BDTTree = bdttree(VolSpec, RateSpec, TimeSpec); 

Use the following swaption arguments:

SwapSettlement = 'jan-1-2007';
SwapMaturity   = 'jan-1-2015'; 
Spread = 0;
SwapReset = 1; 
Principal = 100;
OptSpec = 'call';
Strike=.062;
ExerciseDates = 'jan-1-2012';  
Basis=1;

Price the swaption

[Price, PriceTree] = swaptionbybdt(BDTTree, OptSpec, Strike, ExerciseDates, ...
Spread, SwapSettlement, SwapMaturity, 'SwapReset', SwapReset, ...
'Basis', Basis, 'Principal', Principal)

to return

Price =        2.0592      

PriceTree =         
FinObj: 'BDTPriceTree'        
tObs: [0 1 2 3 4 5 6 7 8 9 10]       
PTree: {1x11 cell}

See Also

bdttree, instswaption, swapbybdt

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS