Main Content

Future

Create Future pricer object for BondFuture, CommodityFuture, EquityIndexFuture, and FXFuture using ratecurve object

Since R2022a

Description

Create and price a BondFuture, CommodityFuture, EquityIndexFuture, and FXFuture instrument object with a ratecurve object and a Future pricing method using this workflow:

  1. Create an interest-rate curve object using ratecurve.

  2. Use fininstrument to create a BondFuture, CommodityFuture, FXFuture, or EquityIndexFuture instrument object.

  3. Use finpricer to specify a Future pricer object for the BondFuture, CommodityFuture, FXFuture, or EquityIndexFuture instrument object.

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

For more information on the available instruments, models, and pricing methods for a BondFuture, CommodityFuture, EquityIncomeFuture, or FXFuture instrument, see Choose Instruments, Models, and Pricers.

Creation

Description

FuturePricerObj = finpricer(PricerType,DiscountCurve=ratecurve_object,SpotPrice=spot_price) creates a Future pricer object by specifying PricerType and the required name-value arguments for DiscountCurve and SpotPrice to set properties. For example, FuturePricerObj = finpricer("Future",DiscountCurve=ratecurve_obj,SpotPrice=125) creates a Future pricer object.

example

Input Arguments

expand all

Pricer type, specified as a string with the value of "Future" or a character vector with the value of 'Future'.

Data Types: char | string

Name-Value Arguments

Specify required 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: FuturePricerObj = finpricer("Future",DiscountCurve=ratecurve_obj,SpotPrice=125)

ratecurve object for discounting cash flows, specified as DiscountCurve and the name of a previously created ratecurve object

Data Types: object

Quoted spot price for underlying asset to be delivered, specified as SpotPrice and a numeric value that depends on the type of future instrument being priced:

  • BondFuture instrument — Clean spot price quoted for $100 face value of underlying bond

  • CommodityFuture instrument — Spot price for underlying commodity quantity specified in contract

  • EquityIndexFuture instrument — Spot equity index value

  • FXFuture instrument — Spot price quoted in domestic currency for one unit of foreign currency

Data Types: double

Properties

expand all

ratecurve object for discounting cash flows, returned as the ratecurve object.

Data Types: object

Quoted spot price for underlying asset to be delivered, returned as a numeric value that depends on the type of future instrument being priced.

Data Types: double

Object Functions

priceCompute price for interest-rate instrument with Future pricer

Examples

collapse all

This example shows the workflow to price a BondFuture 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 Underlying FixedBond Instrument Object

Use fininstrument to create a FixedBond instrument object.

FixB = fininstrument("FixedBond",Maturity=datetime(2032,9,1),CouponRate=0.05,Name="fixed_bond_instrument")
FixB = 
  FixedBond with properties:

                  CouponRate: 0.0500
                      Period: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 01-Sep-2032
                        Name: "fixed_bond_instrument"

Create BondFuture Instrument Object

Use fininstrument to create a BondFuture instrument object.

BondFut = fininstrument("BondFuture",Maturity=datetime(2022,9,1),QuotedPrice=86,Bond=FixB,ConversionFactor=1.43,Name="bondfuture_instrument")
BondFut = 
  BondFuture with properties:

            Maturity: 01-Sep-2022
         QuotedPrice: 86
                Bond: [1x1 fininstrument.FixedBond]
    ConversionFactor: 1.4300
            Notional: 100000
                Name: "bondfuture_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=125)
outPricer = 
  Future with properties:

    DiscountCurve: [1x1 ratecurve]
        SpotPrice: 125

Price BondFuture Instrument

Use price to compute the price and price result for the BondFuture instrument.

[Price,outPR] = price(outPricer,BondFut)
Price = 
-151.9270
outPR = 
  priceresult with properties:

       Results: [1x4 table]
    PricerData: []

outPR.Results
ans=1×4 table
     Price     FairDeliveryPrice    FairFuturePrice    AccruedInterest
    _______    _________________    _______________    _______________

    -151.93       1.2283e+05            85.893                0       

Version History

Introduced in R2022a