Main Content

EquityIndexFuture

EquityIndexFuture instrument object

Since R2022a

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

Description

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.

example

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

For more information, see Basis.

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

cashsettleCompute cash settlement for BondFuture, CommodityFuture, EquityIndexFuture, or FXFuture instrument
fairdeliveryCompute 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 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 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       

More About

expand all

Version History

Introduced in R2022a

expand all