# instfloor

Construct floor instrument

## Syntax

``InstSet = instfloor(Strike,Settle,Maturity)``
``InstSet = instfloor(InstSet,Strike,Settle,Maturity)``
``InstSet = instfloor(___,FloorReset,Basis,Principal)``
``[FieldList,ClassList,TypeString] = instfloor``

## Description

example

````InstSet = instfloor(Strike,Settle,Maturity)` creates a new instrument set containing Floor instruments.```

example

````InstSet = instfloor(InstSet,Strike,Settle,Maturity)` adds Floor instruments to an existing instrument set.```

example

````InstSet = instfloor(___,FloorReset,Basis,Principal)` adds optional arguments.```

example

````[FieldList,ClassList,TypeString] = instfloor` lists field meta-data for the Floor instrument.```

## Examples

collapse all

Define the characteristics of the floor instrument.

```Strike = 0.22; Settle = datenum('15-Mar-2013'); Maturity = datenum('15-Mar-2018'); FloorReset = 4; Basis = 1; Principal = 1000;```

Create the new floor instrument.

`ISet = instfloor(Strike, Settle, Maturity, FloorReset, Basis, Principal)`
```ISet = struct with fields: FinObj: 'Instruments' IndexTable: [1x1 struct] Type: {'Floor'} FieldName: {{6x1 cell}} FieldClass: {{6x1 cell}} FieldData: {{6x1 cell}} ```

Display the floor instrument.

`instdisp(ISet)`
```Index Type Strike Settle Maturity FloorReset Basis Principal 1 Floor 0.22 15-Mar-2013 15-Mar-2018 4 1 1000 ```

## Input Arguments

collapse all

Instrument variable, specified only when adding Floor instruments to an existing instrument set. For more information on the `InstSet` variable, see `instget`.

Data Types: `struct`

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

Data Types: `double`

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

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

Maturity date for the floor, specified as a scalar or an `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 scalar or an `NINST`-by-`1` vector.

Data Types: `double`

(Optional) Day-count basis, specified as a scalar or an `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 scalar or an `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`

## Output Arguments

collapse all

Variable containing a collection of instruments, returned as a structure. Instruments are broken down by type and each type can have different data fields. Each stored data field has a row vector or string for each instrument. For more information on the `InstSet` variable, see `instget`.

Name of each data field for a Floor instrument, returned as an `NFIELDS`-by-`1` cell array of character vectors.

Data class for each field, returned as an `NFIELDS`-by-`1` cell array of character vectors. The class determines how arguments are parsed. Valid character vectors are `'dble'`, `'date'`, and `'char'`.

Type of instrument, returned as a character vector. For a Floor instrument, `TypeString = 'Floor'`.

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)$

## Version History

Introduced before R2006a