capbyhw

Price cap instrument from Hull-White interest-rate tree

Syntax

```[Price, PriceTree] = capbyhw(HWTree, Strike, Settle, Maturity,Reset, Basis, Principal, Options)```

Arguments

 `HWTree` Interest-rate tree structure created by `hwtree`. `Strike` Number of instruments (`NINST`)-by-`1` vector of rates at which the cap is exercised. `Settle` Settlement dates. `NINST`-by-`1` vector of dates representing the settlement dates of the cap. `Maturity ` `NINST`-by-`1` vector of dates representing the maturity dates of the cap. `Reset` (Optional) `NINST`-by-`1` vector representing the frequency of payments per year. Default = `1`. `Basis` (Optional) Day-count basis of the instrument. A vector of integers.0 = actual/actual (default)1 = 30/360 (SIA)2 = actual/3603 = actual/3654 = 30/360 (BMA)5 = 30/360 (ISDA)6 = 30/360 (European)7 = actual/365 (Japanese)8 = actual/actual (ICMA)9 = actual/360 (ICMA)10 = actual/365 (ICMA)11 = 30/360E (ICMA) 12 = actual/365 (ISDA)13 = BUS/252For more information, see basis. `Principal` (Optional) `NINST`-by-`1` of notional principal amounts or `NINST`-by-`1` cell array where each element is a `NumDates`-by-`2` cell array where the first column is dates and the second column is associated principal amount. The date indicates the last day that the principal value is valid. Default is `100`. `Options` (Optional) Derivatives pricing options structure created with `derivset`.

Description

```[Price, PriceTree] = capbyhw(HWTree, Strike, Settle, Maturity,Reset, Basis, Principal, Options)``` computes the price of a cap instrument from a Hull-White interest-rate tree.

`Price` is the expected price of the cap at time 0.

`PriceTree` is the tree structure with values of the cap at each node.

The `Settle` date for every cap is set to the `ValuationDate` of the HW tree. The cap argument `Settle` is ignored.

 Note:   Use the optional name-value pair argument, `Principal`, to pass a schedule to compute price for an amortizing cap.

Examples

collapse all

Price a 3% Cap Instrument Using a Hull-White Interest-Rate Tree

Load the file `deriv.mat`, which provides `HWTree`. The `HWTree` structure contains the time and interest-rate information needed to price the cap instrument.

```load deriv.mat; ```

Set the required values. Other arguments will use defaults.

```Strike = 0.03; Settle = '01-Jan-2004'; Maturity = '01-Jan-2007'; ```

Use `capbyhw` to compute the price of the cap instrument.

```Price = capbyhw(HWTree, Strike, Settle, Maturity) ```
```Price = 2.3090 ```

Compute the Price of an Amortizing and Vanilla Caps Using the HW Model

Define the `RateSpec`.

```Rates = [0.035; 0.042; 0.047; 0.052; 0.054]; ValuationDate = '01-April-2014'; StartDates = ValuationDate; EndDates = {'01-April-2019'}; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding) ```
```RateSpec = FinObj: 'RateSpec' Compounding: 1 Disc: [5x1 double] Rates: [5x1 double] EndTimes: [5x1 double] StartTimes: [5x1 double] EndDates: 737516 StartDates: 735690 ValuationDate: 735690 Basis: 0 EndMonthRule: 1 ```

Define the cap instruments.

```Settle ='01-April-2014'; Maturity = '01-April-2018'; Strike = 0.055; Reset = 1; Principal ={{'01-April-2015' 100;'01-April-2016' 60;'01-April-2017' 40;'01-April-2018' 20}; 100}; ```

Build the HW Tree.

```VolDates = ['01-April-2015';'01-April-2016';'01-April-2017';'01-April-2018']; VolCurve = 0.05; AlphaDates = '01-April-2018'; AlphaCurve = 0.10; HWVolSpec = hwvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RateSpec.ValuationDate, VolDates, Compounding); HWTree = hwtree(HWVolSpec, RateSpec, HWTimeSpec) ```
```HWTree = FinObj: 'HWFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1 2 3] dObs: [735690 736055 736421 736786] CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]} Probs: {[3x1 double] [3x3 double] [3x5 double]} Connect: {[2] [2 3 4] [2 2 3 4 4]} FwdTree: {[1.0350] [1.1252 1.0362 0.9542] [1x5 double] [1x5 double]} ```

Price the amortizing and vanilla caps.

```Basis = 0; Price = capbyhw(HWTree, Strike, Settle, Maturity, Reset, Basis, Principal) ```
```Price = 1.5828 4.3690 ```