inflationCashflows
Description
computes cash flows for an outCF = inflationCashflows(inpInstrumentObject,Settle,inpInflationCurve)YearYearInflationSwap instrument object.
Examples
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: [10×1 datetime]
Rates: [10×1 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: [10×1 datetime]
InflationIndexValues: [10×1 double]
ForwardInflationRates: [9×1 double]
Seasonality: [12×1 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: [1×1 ratecurve]
InflationCurve: [1×1 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: [1×1 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: [10×1 datetime]
Rates: [10×1 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: [10×1 datetime]
InflationIndexValues: [10×1 double]
ForwardInflationRates: [9×1 double]
Seasonality: [12×1 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: [1×1 ratecurve]
InflationCurve: [1×1 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
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
Output cash flow, returned as a timetable.
Version History
Introduced in R2021aAlthough inflationCashflows supports serial date numbers,
datetime values are recommended instead. The
datetime data type provides flexible date and time
formats, storage out to nanosecond precision, and properties to account for time
zones and daylight saving time.
To convert serial date numbers or text to datetime values, use the datetime function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y =
2021
There are no plans to remove support for serial date number inputs.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)