inflationCashflows

Compute cash flows for `YearYearInflationSwap` instrument

Since R2021a

Syntax

``outCF = inflationCashflows(inpInstrumentObject,Settle,inpInflationCurve)``

Description

example

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

Examples

collapse all

This example shows the workflow to price a `YearYearInflationSwap` instrument when you use an `inflationcurve` object and an `Inflation` pricing method. Then use `inflationCashflows` to compute the cash flows for the `YearYearInflationSwap` instrument.

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 `YearYearInflationSwap` Instrument Object

Use `fininstrument` to create a `YearYearInflationSwap` instrument object.

```Maturity = datetime(2025,1,1); FixedInflationRate = 0.015; Notional = 2000; YYInflationSwap = fininstrument("YearYearInflationSwap",'Maturity',Maturity,'FixedInflationRate',FixedInflationRate,'Notional',Notional,'Name',"YYInflationSwap_instrument")```
```YYInflationSwap = YearYearInflationSwap with properties: Notional: 2000 FixedInflationRate: 0.0150 Basis: 0 Lag: 3 Maturity: 01-Jan-2025 IssueIndex: NaN Name: "YYInflationSwap_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 `YearYearInflationSwap` Instrument

Use `price` to compute the price and sensitivities for the `YearYearInflationSwap` instrument.

`[Price,outPR] = price(outPricer,YYInflationSwap,"all")`
```Price = 12.5035 ```
```outPR = priceresult with properties: Results: [1x1 table] PricerData: [] ```
`outPR.Results`
```ans=table Price ______ 12.504 ```

Compute Cash Flows for `YearYearInflationSwap` Instrument

Use `inflationCashflows` to compute the cash flows for the `YearYearInflationSwap` instrument.

`outCF = inflationCashflows(YYInflationSwap,datetime(2021,1,15),myInflationCurve)`
```outCF=4×2 timetable Time Var1 Var2 ___________ ____ ______ 01-Jan-2022 -30 40 01-Jan-2023 -30 29.412 01-Jan-2024 -30 28.986 01-Jan-2025 -30 34.286 ```

This example shows the workflow to price multiple `YearYearInflationSwap` instrument when you use an `inflationcurve` object and an `Inflation` pricing method. Then use `inflationCashflows` to compute the cash flows for the `YearYearInflationSwap` instruments.

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(2019,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 `YearYearInflationSwap` Instrument Object

Use `fininstrument` to create a `YearYearInflationSwap` instrument object for three Year-on-Year Inflation-Indexed Swap instruments.

```Maturity = datetime([2024,1,1 ; 2024,11,1 ; 2024,12,1]); FixedInflationRate = 0.015; Notional = [20000 ; 30000 ; 40000]; YYInflationSwap = fininstrument("YearYearInflationSwap",'Maturity',Maturity,'FixedInflationRate',FixedInflationRate,'Notional',Notional,'Name',"YYInflationSwap_instrument")```
```YYInflationSwap=3×1 YearYearInflationSwap array with properties: Notional FixedInflationRate Basis Lag Maturity IssueIndex Name ```

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 `YearYearInflationSwap` Instruments

Use `price` to compute the prices and sensitivities for the `YearYearInflationSwap` instruments.

`[Price,outPR] = price(outPricer,YYInflationSwap,"all")`
```Price = 3×1 26.0701 18.1540 1.3201 ```
```outPR=1×3 priceresult array with properties: Results PricerData ```
`outPR.Results`
```ans=table Price _____ 26.07 ```
```ans=table Price ______ 18.154 ```
```ans=table Price ______ 1.3201 ```

Compute Cash Flows for `YearYearInflationSwap` Instruments

Use `inflationCashflows` to compute the cash flows for the `YearYearInflationSwap` instruments.

`outCF = inflationCashflows(YYInflationSwap(1),datetime(2021,1,15),myInflationCurve)`
```outCF=3×2 timetable Time Var1 Var2 ___________ ____ ______ 01-Jan-2022 -300 294.12 01-Jan-2023 -300 289.86 01-Jan-2024 -300 342.86 ```
`outCF = inflationCashflows(YYInflationSwap(2),datetime(2021,1,15),myInflationCurve)`
```outCF=4×2 timetable Time Var1 Var2 ___________ ____ ______ 01-Nov-2021 -450 467.39 01-Nov-2022 -450 435.85 01-Nov-2023 -450 500.98 01-Nov-2024 -450 413.63 ```
`outCF = inflationCashflows(YYInflationSwap(3),datetime(2021,1,15),myInflationCurve)`
```outCF=4×2 timetable Time Var1 Var2 ___________ ____ ______ 01-Dec-2021 -600 605.42 01-Dec-2022 -600 580.41 01-Dec-2023 -600 676.99 01-Dec-2024 -600 537.7 ```

Input Arguments

collapse all

Instrument object, specified using a previously created instrument object for a `YearYearInflationSwap`.

Note

If the `inpInstrumentObject` is a vector of instruments, you must use `inflationCashflows` separately with each instrument.

Data Types: `object`

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

Note

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

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

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.

Version History

Introduced in R2021a

expand all