Main Content

inflationCashflows

Compute cash flows for InflationBond instrument

Description

example

outCF = inflationCashflows(inpInstrumentObject,Settle,inpInflationCurve) computes cash flows for an InflationBond instrument.

Examples

collapse all

This example shows the workflow to price an InflationBond instrument when you use an inflationcurve object and an Inflation pricing method. The cash flows for the InflationBond instrument are computed using inflationCashflows.

Create ratecurve Object

Create a ratecurve object using ratecurve.

Settle = datetime(2021,1,15);
Type = "zero";
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)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Jan-2021
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Create inflationcurve Object

Create an inflationcurve object using inflationcurve.

BaseDate = datetime(2020,10,1);
InflationTimes = [0 calyears([1 2 3 4 5 7 10 20 30])]';
InflationIndexValues = [100 102 103.5 105 106.8 108.2 111.3 120.1 130.4 150.2]';
InflationDates = BaseDate + InflationTimes;
myInflationCurve = inflationcurve(InflationDates,InflationIndexValues)
myInflationCurve = 
  inflationcurve with properties:

                    Basis: 0
                    Dates: [10x1 datetime]
     InflationIndexValues: [10x1 double]
    ForwardInflationRates: [9x1 double]
              Seasonality: [12x1 double]

Create InflationBond Instrument Object

Use fininstrument to create an InflationBond instrument object.

IssueDate = datetime(2021,1,1);
Maturity = datetime(2026,1,1);
CouponRate = 0.02;

InflationBond = fininstrument("InflationBond",'IssueDate',IssueDate,'Maturity',Maturity,'CouponRate',CouponRate,'Name',"inflation_bond_instrument")
InflationBond = 
  InflationBond with properties:

                  CouponRate: 0.0200
                      Period: 2
                       Basis: 0
                   Principal: 100
    DaycountAdjustedCashFlow: 0
                         Lag: 3
       BusinessDayConvention: "actual"
                    Holidays: NaT
                EndMonthRule: 1
                   IssueDate: 01-Jan-2021
             FirstCouponDate: NaT
              LastCouponDate: NaT
                    Maturity: 01-Jan-2026
                        Name: "inflation_bond_instrument"

Create Inflation Pricer Object

Use finpricer to create an Inflation pricer object and use the ratecurve object with the 'DiscountCurve' name-value pair argument and the inflationcurve object with the 'InflationCurve' name-value pair argument.

outPricer = finpricer("Inflation",'DiscountCurve',ZeroCurve,'InflationCurve',myInflationCurve)
outPricer = 
  Inflation with properties:

     DiscountCurve: [1x1 ratecurve]
    InflationCurve: [1x1 inflationcurve]

Price InflationBond Instrument

Use price to compute the price and sensitivities for the InflationBond instrument.

[Price,outPR] = price(outPricer,InflationBond)
Price = 112.1856
outPR = 
  priceresult with properties:

       Results: [1x1 table]
    PricerData: []

outPR.Results
ans=table
    Price 
    ______

    112.19

Compute Cash Flows for InflationBond Instrument

Use inflationCashflows to compute the cash flows for the InflationBond instrument.

outCF = inflationCashflows(InflationBond,datetime(2021,1,15),myInflationCurve)
outCF=11×1 timetable
       Time        InflationCFAmounts
    ___________    __________________

    15-Jan-2021        -0.077407     
    01-Jul-2021           1.0099     
    01-Jan-2022             1.02     
    01-Jul-2022           1.0275     
    01-Jan-2023            1.035     
    01-Jul-2023           1.0425     
    01-Jan-2024             1.05     
    01-Jul-2024            1.059     
    01-Jan-2025            1.068     
    01-Jul-2025            1.075     
    01-Jan-2026           109.28     

Input Arguments

collapse all

Instrument object, specified using a previously created instrument object for an InflationBond.

Data Types: object

Settlement date for instrument cash flow, specified as a scalar using a datetime, serial date number, date character vector, or date string.

Note

The Settle date you specify must be before the Maturity date for the InflationBond instrument.

Data Types: double | char | datetime | string

Inflation curve, specified using a previously created inflation curve object using inflationcurve.

Data Types: object

Output Arguments

collapse all

Output cash flow, returned as a timetable.

Introduced in R2021a