floorbyhjm

Price floor instrument from Heath-Jarrow-Morton interest-rate tree

Syntax

``````[Price,PriceTree] = floorbyhjm(HJMTree,Strike,Settle,Maturity)``````
``````[Price,PriceTree] = floorbyhjm(___,FloorReset,Basis,Principal,Options)``````

Description

example

``````[Price,PriceTree] = floorbyhjm(HJMTree,Strike,Settle,Maturity)``` computes the price of a floor instrument from a Heath-Jarrow-Morton interest-rate tree. `floorbyhjm` computes prices of vanilla floors and amortizing floors.```

example

``````[Price,PriceTree] = floorbyhjm(___,FloorReset,Basis,Principal,Options)``` adds optional arguments.```

Examples

collapse all

This example shows how to price a 3% floor instrument using an HJM forward-rate tree by loading the file `deriv.mat`, which provides `HJMTree`. The `HJMTree` structure contains the time and forward-rate information needed to price the floor instrument.

```load deriv.mat; Strike = 0.03; Settle = '01-Jan-2000'; Maturity = '01-Jan-2004'; Price = floorbyhjm(HJMTree, Strike, Settle, Maturity)```
```Price = 0.0486 ```

Load `deriv.mat` to specify the `HJMTree` and then define the floor instrument.

```load deriv.mat; Settle = '01-Jan-2000'; Maturity = '01-Jan-2004'; Strike = 0.05; FloorReset = 1; Principal ={{'01-Jan-2001' 100;'01-Jan-2002' 80;'01-Jan-2003' 70;'01-Jan-2004' 30}};```

Price the amortizing floor.

`Price = floorbyhjm(HJMTree, Strike, Settle, Maturity, FloorReset, Principal)`
```Price = 2.8215 ```

Input Arguments

collapse all

Interest-rate tree structure, specified by using `hjmtree`.

Data Types: `struct`

Rate at which the floor is exercised, specified as a `NINST`-by-`1` vector of decimal values.

Data Types: `double`

Settlement date for the floor, specified as a `NINST`-by-`1` vector of serial date numbers or date character vectors. The `Settle` date for every floor is set to the `ValuationDate` of the HJM tree. The floor argument `Settle` is ignored.

Data Types: `double` | `char` | `cell`

Maturity date for the floor, specified as a `NINST`-by-`1` vector of serial date numbers or date character vectors.

Data Types: `double` | `char` | `cell`

(Optional) Reset frequency payment per year, specified as a `NINST`-by-`1` vector.

Data Types: `double`

(Optional) Day-count basis representing the basis used when annualizing the input forward rate, specified as a `NINST`-by-`1` vector of integers.

• 0 = actual/actual

• 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 (ICMA)

• 9 = actual/360 (ICMA)

• 10 = actual/365 (ICMA)

• 11 = 30/360E (ICMA)

• 12 = actual/365 (ISDA)

• 13 = BUS/252

Data Types: `double`

(Optional) Notional principal amount, specified as a `NINST`-by-`1` of notional principal amounts, or a `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.

Use `Principal` to pass a schedule to compute the price for an amortizing floor.

Data Types: `double` | `cell`

(Optional) Derivatives pricing options structure, specified using `derivset`.

Data Types: `struct`

Output Arguments

collapse all

Expected price of the floor at time 0, returned as a `NINST`-by-`1` vector.

Tree structure with values of the floor at each node, returned as a MATLAB® structure of trees containing vectors of instrument prices and a vector of observation times for each node:

• `PriceTree.tObs` contains the observation times.

• `PriceTree.PBush` contains the clean prices.

collapse all

Floor

A floor is a contract that includes a guarantee setting the minimum interest rate to be received by the holder, based on an otherwise floating interest rate.

The payoff for a floor is:

$\mathrm{max}\left(FloorRate-CurrentRate,0\right)$

Introduced before R2006a