# EquityIndexFuture

`EquityIndexFuture` instrument object

## Description

Create and price an `EquityIndexFuture` instrument object for one or more Equity Index Future instruments using this workflow:

1. Use `fininstrument` to create an `EquityIndexFuture` instrument object for one or more Equity Index Future instruments.

2. Use `ratecurve` to specify a curve model for the `EquityIndexFuture` instrument object.

3. Use `finpricer` to specify a `Future` pricing method for one or more `EquityIndexFuture` instruments.

4. Use `cashsettle` to compute the cash settlement for the `EquityIndexFuture` instrument and `fairdelivery` to compute the fair delivery price for the underlying asset for the `EquityIndexFuture` instrument.

For more detailed information on this workflow, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.

For more information on the available models and pricing methods for an `EquityIndexFuture` instrument, see Choose Instruments, Models, and Pricers.

## Creation

### Syntax

``EquityIndexFutureObj = fininstrument(InstrumentType,Maturity=maturity_value,QuotedPrice=quoted_price)``
``EquityIndexFutureObj = fininstrument(___,Name=Value)``

### Description

example

````EquityIndexFutureObj = fininstrument(InstrumentType,Maturity=maturity_value,QuotedPrice=quoted_price)` creates an `EquityIndexFuture` object for one or more Equity Index Future instruments by specifying `InstrumentType` and sets the properties for the required name-value arguments `Maturity` and `QuotedPrice`. The `EquityIndexFuture` instrument supports stock index futures such as NASDAQ 100 and Dow Jones index futures. For more information, see Equity Index Futures.```

example

````EquityIndexFutureObj = fininstrument(___,Name=Value)` sets optional properties using additional name-value arguments in addition to the required arguments in the previous syntax. For example, ```EquityIndexFutureObj = fininstrument("EquityIndexFuture",Maturity=datetime(2022,9,1),QuotedPrice=4800,Size=500,Name="equityindexfuture_instrument")``` creates an `EquityIndexFuture` instrument. You can specify multiple name-value arguments.```

### Input Arguments

expand all

Instrument type, specified as a string with the value of `"EquityIndexFuture"`, a character vector with the value of `'EquityIndexFuture'`, an `NINST`-by-`1` string array with values of `"EquityIndexFuture"`, or an `NINST`-by-`1` cell array of character vectors with values of `'EquityIndexFuture'`.

Data Types: `char` | `cell` | `string`

Name-Value Arguments

Specify required and optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: ```EquityIndexFutureObj = fininstrument("EquityIndexFuture",Maturity=datetime(2022,9,1),QuotedPrice=4800,Size=500,Name="equityindexfuture_instrument")```

Required `EquityIndexFuture` Name-Value Arguments

expand all

`EquityIndexFuture` maturity date, specified as `Maturity` and a scalar or an `NINST`-by-`1` vector using a datetime array, string array, or date character vectors.

To support existing code, `EquityIndexFuture` also accepts serial date numbers as inputs, but they are not recommended.

If you use date character vectors or strings, the format must be recognizable by `datetime` because the `Maturity` property is stored as a datetime.

`EquityIndexFuture` quoted delivery index price, specified as `QuotedPrice` and a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Optional `EquityIndexFuture` Name-Value Arguments

expand all

Contract size multiplier, specified as `Size` and a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Annualized dividend yield for the life of the contract, specified as `DividendYield` and a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Compounding frequency for `DividendYield`, specified as `DividendYieldCompounding` and a scalar integer or an `NINST`-by-`1` vector of integers.

Data Types: `double`

Day count basis for `DividendYield`, specified as `DividendYieldBasis` and scalar integer or an `NINST`-by-`1` vector of integers using the following values:

• 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`

User-defined name for one rf more instruments, specified as `Name` and a scalar string or character vector or an `NINST`-by-`1` cell array of character vectors or string array.

Data Types: `char` | `cell` | `string`

## Properties

expand all

`EquityIndexFuture` maturity date, returned as a scalar datetime or `NINST`-by-`1` vector of datetimes.

Data Types: `datetime`

`EquityIndexFuture` quoted price, returned as a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Contract size multiplier, returned as a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Annualized dividend yield for the life of the contract, returned as a scalar numeric or an `NINST`-by-`1` numeric vector.

Data Types: `double`

Compounding frequency for `DividendYield`, returned as a scalar integer or an `NINST`-by-`1` vector of integers.

Data Types: `double`

Day count basis for `DividendYield`, returned as a scalar integer or an `NINST`-by-`1` vector of integers.

Data Types: `double`

User-defined name for the instrument, returned as a scalar string or an `NINST`-by-`1` string array.

Data Types: `string`

## Object Functions

 `cashsettle` Compute cash settlement for `BondFuture`, `CommodityFuture`, `EquityIndexFuture`, or `FXFuture` instrument `fairdelivery` Compute fair delivery price of underlying asset for `BondFuture`, `CommodityFuture`, `EquityIndexFuture`, or `FXFuture` instrument

## Examples

collapse all

This example shows the workflow to price an `EquityIndexFuture` instrument when you use a `ratecurve` object and a `Future` pricing method.

Create `ratecurve` Object

Create a `ratecurve` object using `ratecurve`.

```Settle = datetime(2022,3,1); ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,Compounding=2);```

Create `EquityIndexFuture` Instrument Object

Use `fininstrument` to create an `EquityIndexFuture` instrument object.

`EquityIndexFut = fininstrument("EquityIndexFuture",Maturity=datetime(2022,9,1),QuotedPrice=4800,DividendYield=.03,Name="equityindexfuture_instrument")`
```EquityIndexFut = EquityIndexFuture with properties: Maturity: 01-Sep-2022 QuotedPrice: 4800 Size: 250 DividendYield: 0.0300 DividendYieldCompounding: -1 DividendYieldBasis: 0 Name: "equityindexfuture_instrument" ```

Create `Future` Pricer Object

Use `finpricer` to create a `Future` pricer object and use the `ratecurve` object with the `DiscountCurve` name-value argument.

`outPricer = finpricer("Future",DiscountCurve=ZeroCurve,SpotPrice=4460)`
```outPricer = Future with properties: DiscountCurve: [1x1 ratecurve] SpotPrice: 4460 ```

Price `EquityIndexFuture` Instrument

Use `price` to compute the price and price result for the `EquityIndexFuture` instrument.

`[Price,outPR] = price(outPricer,EquityIndexFut)`
```Price = -9.8598e+04 ```
```outPR = priceresult with properties: Results: [1x4 table] PricerData: [] ```
`outPR.Results`
```ans=1×4 table Price FairDeliveryPrice FairFuturePrice AccruedInterest ______ _________________ _______________ _______________ -98598 1.1011e+06 4404.6 0 ```

This example shows the workflow to price multiple `EquityIndexFuture` instruments when you use a `ratecurve` object and a `Future` pricing method.

Create `ratecurve` Object

Create a `ratecurve` object using `ratecurve`.

```Settle = datetime(2022,3,1); ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates,Compounding=2);```

Create `EquityIndexFuture` Instrument Object

Use `fininstrument` to create an `EquityIndexFuture` instrument object for three Equity Index Future instruments.

`EquityIndexFut = fininstrument("EquityIndexFuture",Maturity=datetime([2022,9,1 ; 2022,10,1 ; 2022,11,1]),QuotedPrice=[4800 ; 5000 ; 5200],DividendYield=.03,Name="equityindexfuture_instrument")`
```EquityIndexFut=3×1 object 3x1 EquityIndexFuture array with properties: Maturity QuotedPrice Size DividendYield DividendYieldCompounding DividendYieldBasis Name ```

Create `Future` Pricer Object

Use `finpricer` to create a `Future` pricer object and use the `ratecurve` object with the `DiscountCurve` name-value argument.

`outPricer = finpricer("Future",DiscountCurve=ZeroCurve,SpotPrice=4460)`
```outPricer = Future with properties: DiscountCurve: [1x1 ratecurve] SpotPrice: 4460 ```

Price `EquityIndexFuture` Instruments

Use `price` to compute the prices and price results for the `EquityIndexFuture` instruments.

`[Price,outPR] = price(outPricer,EquityIndexFut)`
```Price = 3×1 105 × -0.9860 -1.5060 -2.0262 ```
```outPR=1×3 object 1x3 priceresult array with properties: Results PricerData ```
`outPR.Results`
```ans=1×4 table Price FairDeliveryPrice FairFuturePrice AccruedInterest ______ _________________ _______________ _______________ -98598 1.1011e+06 4404.6 0 ```
```ans=1×4 table Price FairDeliveryPrice FairFuturePrice AccruedInterest __________ _________________ _______________ _______________ -1.506e+05 1.0989e+06 4395.7 0 ```
```ans=1×4 table Price FairDeliveryPrice FairFuturePrice AccruedInterest ___________ _________________ _______________ _______________ -2.0262e+05 1.0967e+06 4386.6 0 ```