InflationBond
Description
Create and price an InflationBond
instrument object for one
or more Inflation Bond instruments using this workflow:
Use
fininstrument
to create anInflationBond
instrument object for one or more Inflation Bond instruments.Use
ratecurve
to specify an interest-rate model for theInflationBond
instrument object.Use
inflationcurve
to specify an inflation curve model for theInflationBond
instrument object.Use
finpricer
to specify anInflation
pricing method for one or moreInflationBond
instruments.Use
inflationCashflows
to compute cash flows for each one of theInflationBond
instruments.
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
InflationBond
instrument, see Choose Instruments, Models, and Pricers.
Creation
Syntax
Description
creates an InflationBond
= fininstrument(InstrumentType
,'CouponRate
',couponrate_value,'Maturity
',maturity_date)InflationBond
object for one or more Inflation
Bond instruments by specifying InstrumentType
and sets
the properties for
the required name-value pair arguments CouponRate
and
Maturity
.
sets optional properties using
additional name-value pairs in addition to the required arguments in the
previous syntax. For example, InflationBond
= fininstrument(___,Name,Value
)InflationBond =
fininstrument("InflationBond",'Maturity',Maturity,'CouponRate',CouponRate,'IssueDate',IssueDate)
creates a InflationBond
option.
Input Arguments
InstrumentType
— Instrument type
string with value "InflationBond"
| string array with values of
"InflationBond"
| character vector with value
'InflationBond'
| cell array of character vectors with values of
'InflationBond'
Instrument type, specified as a string with the value of
"InflationBond"
, a character vector with the
value of 'InflationBond'
, an
NINST
-by-1
string array with
values of "InflationBond"
, or an
NINST
-by-1
cell array of
character vectors with values of 'InflationBond'
.
Data Types: char
| cell
| string
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.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: InflationBond =
fininstrument("InflationBond",'Maturity',Maturity,'CouponRate',CouponRate,'IssueDate',IssueDate)
InflationBond
Name-Value Pair
ArgumentsCouponRate
— InflationBond
coupon rate
scalar decimal | vector of decimals
InflationBond
coupon rate, specified as the
comma-separated pair consisting of 'CouponRate'
and a scalar decimal or an
NINST
-by-1
vector of
decimals for an annual rate.
Data Types: double
Maturity
— InflationBond
maturity date
datetime array | string array | date character vector
InflationBond
maturity date, specified as the
comma-separated pair consisting of 'Maturity'
and
a scalar or an NINST
-by-1
vector using a datetime array, string array, or date character
vectors.
To support existing code, InflationBond
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.
InflationBond
Name-Value Pair
ArgumentsPeriod
— Frequency of payments per year
2
(default) | scalar numeric with value of 0
, 1
, 2
,
3
, 4
, 6
, or
12
| numeric vector with values of 0
,
1
, 2
,
3
, 4
, 6
, or
12
Frequency of payments, specified as the comma-separated pair
consisting of 'Period'
and a scalar integer or an
NINST
-by-1
vector of
integers. Values for Period
are
1
, 2
,
3
, 4
, 6
, or
12
.
Data Types: double
Basis
— Day count basis
0
(actual/actual) (default) | scalar integer from 0
to 13
| vector of integers from 0
to 13
Day count basis, specified as the comma-separated pair consisting
of 'Basis'
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
Principal
— Initial principal amount
100
(default) | scalar numeric | numeric vector
Initial principal amount, specified as the comma-separated pair
consisting of 'Principal'
and a scalar numeric or
an NINST
-by-1
numeric vector.
Data Types: double
DaycountAdjustedCashFlow
— Flag indicating whether cash flow adjusts for day count convention
false
(default) | scalar logical value of true
or
false
| vector of logical values of true
or
false
Flag indicating whether cash flow is adjusted by day count
convention, specified as the comma-separated pair consisting of
'DaycountAdjustedCashFlow'
and a scalar
logical or an NINST
-by-1
vector of logicals with values of true
or
false
.
Data Types: logical
IssueDate
— Bond issue date
NaT
(default) | datetime array | string array | date character vector
Bond issue date, specified as the comma-separated pair consisting
of 'IssueDate'
and a scalar or an
NINST
-by-1
vector using a
datetime array, string array, or date character vectors.
To support existing code, InflationBond
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 IssueDate
property is stored as a
datetime.
Lag
— Indexation lag in months
3
(default) | scalar numeric | numeric vector
Indexation lag in months, specified as the comma-separated pair
consisting of 'Lag'
and a scalar numeric or an
NINST
-by-1
numeric
vector.
Data Types: double
BusinessDayConvention
— Business day conventions for cash flow dates
"actual"
(default) | string | string array | character vector | cell array of character vectors
Business day conventions for cash flow dates, specified as the
comma-separated pair consisting of
'BusinessDayConvention'
and a scalar string
or character vector or an
NINST
-by-1
cell array of
character vectors or string array. The selection for business day
convention determines how nonbusiness days are treated. Nonbusiness
days are defined as weekends plus any other date that businesses are
not open (for example, statutory holidays). Values are:
"actual"
— Nonbusiness days are effectively ignored. Cash flows that fall on nonbusiness days are assumed to be distributed on the actual date."follow"
— Cash flows that fall on a nonbusiness day are assumed to be distributed on the following business day."modifiedfollow"
— Cash flows that fall on a nonbusiness day are assumed to be distributed on the following business day. However, if the following business day is in a different month, the previous business day is adopted instead."previous"
— Cash flows that fall on a nonbusiness day are assumed to be distributed on the previous business day."modifiedprevious"
— Cash flows that fall on a nonbusiness day are assumed to be distributed on the previous business day. However, if the previous business day is in a different month, the following business day is adopted instead.
Data Types: char
| cell
| string
Holidays
— Holidays used in computing business days
NaT
(default) | datetime array | string array | date character vector
Holidays used in computing business days, specified as the
comma-separated pair consisting of 'Holidays'
and
dates using an NINST
-by-1
vector of a datetime array, string array, or date character vectors.
For
example:
H = holidays(datetime('today'),datetime(2025,12,15)); InflationBondObj = fininstrument("InflationBond",'CouponRate',0.34,'Maturity',datetime(2025,12,15),'Holidays',H)
To support existing code, InflationBond
also
accepts serial date numbers as inputs, but they are not recommended.
EndMonthRule
— End-of-month rule flag for generating dates when Maturity
is end-of-month date for month with 30 or fewer days
true
(in effect) (default) | scalar logical values of true
or
false
| vector of logical values with true
or
false
End-of-month rule flag for generating dates when
Maturity
is an end-of-month date for a month
with 30 or fewer days, specified as the comma-separated pair
consisting of 'EndMonthRule'
and a scalar logical
value or an NINST
-by-1
vector
of logical values of true
or
false
.
If you set
EndMonthRule
tofalse
, the software ignores the rule, meaning that a payment date is always the same numerical day of the month.If you set
EndMonthRule
totrue
, the software sets the rule on, meaning that a payment date is always the last actual day of the month.
Data Types: logical
FirstCouponDate
— Irregular first coupon date
NaT
(default) | datetime array | string array | date character vector
Irregular first coupon date, specified as the comma-separated pair
consisting of 'FirstCouponDate'
and a scalar or
an NINST
-by-1
vector using a
datetime array, string array, or date character vectors.
To support existing code, InflationBond
also
accepts serial date numbers as inputs, but they are not recommended.
When FirstCouponDate
and
LastCouponDate
are both specified,
FirstCouponDate
takes precedence in
determining the coupon payment structure. If you do not specify
FirstCouponDate
, the cash flow payment dates
are determined from other inputs.
If you use date character vectors or strings, the format must be
recognizable by datetime
because
the FirstCouponDate
property is stored as a
datetime.
LastCouponDate
— Irregular last coupon date
NaT
(default) | datetime array | string array | date character vector
Irregular last coupon date, specified as the comma-separated pair
consisting of 'LastCouponDate'
and a scalar or an
NINST
-by-1
vector using a
datetime array, string array, or date character vectors.
To support existing code, InflationBond
also
accepts serial date numbers as inputs, but they are not recommended.
If you specify LastCouponDate
but not
FirstCouponDate
,
LastCouponDate
determines the coupon
structure of the bond. The coupon structure of a bond is truncated
at LastCouponDate
, regardless of where it falls,
and is followed only by the bond's maturity cash flow date. If you
do not specify LastCouponDate
, the cash flow
payment dates are determined from other inputs.
If you use date character vectors or strings, the format must be
recognizable by datetime
because
the LastCouponDate
property is stored as a
datetime.
IssueIndex
— Inflation index at issue date
InflationIndexValues
for issue date in inflationcurve
model object (default) | numeric
Inflation index at issue date, specified as the comma-separated
pair consisting of 'IssueIndex'
and a scalar
numeric or an NINST
-by-1
vector of numeric values. For example, the
IssueIndex
for the inflation index depends on
the country and can be from any of the following:
US — CPI (US Consumer Price Index Urban Consumers (CPI-U))
UK — RPI (UK Retail Price Index (RPI)
Canada — CPI (Canada All-Items Consumer Price Index)
European Union (EU) — HICP-ex Tobacco (EU Harmonized Indices of Consumer Prices (HICP) ex Tobacco)
Japan — CPI (Japan Consumer Price Index)
China — CPI (China Consumer Price Index)
Note
If you specify an IssueIndex
, the
Inflation
pricing method overrides the index
value (InflationIndexValues
) for the
issue date (Dates
) in the inflationcurve
model object.
Data Types: double
Name
— User-defined name for instrument
" "
(default) | string | string array | character vector | cell array of character vectors
User-defined name for one of more instruments, specified as the
comma-separated pair consisting of '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
CouponRate
— InflationBond
coupon annual rate
scalar decimal | vector of decimals
InflationBond
coupon annual rate, returned as a scalar
decimal or an NINST
-by-1
vector of
decimals.
Data Types: double
Maturity
— InflationBond
maturity date
datetime | vector of datetimes
InflationBond
maturity date, returned as a scalar
datetime or an NINST
-by-1
vector of
datetimes.
Data Types: datetime
Period
— Frequency of payments per year
2
(default) | scalar integer | vector of integers
Frequency of payments per year, returned as a scalar integer or an
NINST
-by-1
vector of
integers.
Data Types: double
Basis
— Day count basis
0
(actual/actual) (default) | scalar integer from 0
to 13
| vector of integers from 0
to 13
Day count basis, returned as a scalar integer or an
NINST
-by-1
vector of integers.
Data Types: double
Principal
— Initial principal amount
100
(default) | scalar numeric | numeric vector
Initial principal amount, returned as a scalar numeric or an
NINST
-by-1
numeric vector.
Data Types: double
DaycountAdjustedCashFlow
— Flag indicating whether cash flow adjusts for day count convention
false
(default) | scalar logical value of true
or
false
| vector of logical values with true
or
false
Flag indicating whether cash flow adjusts for day count convention,
returned as scalar logical or an
NINST
-by-1
vector of logicals with
values of true
or false
.
Data Types: logical
IssueDate
— Bond issue date
NaT
(default) | datetime | vector of datetimes
Bond issue date, returned as a datetime or an
NINST
-by-1
datetime vector.
Data Types: datetime
Lag
— Indexation lag in months
3
(default) | scalar numeric | numeric vector
Indexation lag in months, returned as a scalar numeric or an
NINST
-by-1
numeric vector.
Data Types: double
BusinessDayConvention
— Business day conventions
"actual"
(default) | string | string array
Business day conventions, returned as a scalar string or an
NINST
-by-1
string array.
Data Types: string
Holidays
— Holidays used in computing business days
NaT
(default) | datetimes
Holidays used in computing business days, returned as an
NINST
-by-1
vector of
datetimes.
Data Types: datetime
EndMonthRule
— End-of-month rule flag for generating dates when Maturity
is end-of-month date for month with 30 or fewer days
true
(in effect) (default) | scalar logical value of true
or
false
| vector of logicals with value of true
or
false
End-of-month rule flag for generating dates when
Maturity
is an end-of-month date for a month having
30 or fewer days, returned as a scalar logical or an
NINST
-by-1
vector of
logicals.
Data Types: logical
FirstCouponDate
— Irregular first coupon date
NaT
(default) | datetime | vector of datetimes
Irregular first coupon date, returned as a scalar datetime or an
NINST
-by-1
vector of datetimes.
Data Types: datetime
LastCouponDate
— Irregular last coupon date
NaT
(default) | datetime | vector of datetimes
Irregular last coupon date, returned as a scalar datetime or an
NINST
-by-1
vector of
datetimes.
Data Types: datetime
IssueIndex
— Inflation index at issue date
InflationIndexValues
for issue date in inflationcurve
model object (default) | numeric
Inflation index at issue date, returned as a scalar numeric or an
NINST
-by-1
vector of numeric
values.
Data Types: double
Name
— User-defined name for instrument
" "
(default) | string | string array
User-defined name for the instrument, returned as a scalar string or an
NINST
-by-1
string array.
Data Types: string
Object Functions
inflationCashflows | Compute cash flows for InflationBond instrument |
Examples
Price InflationBond
Instrument Using inflationcurve
and Inflation
Pricer
This example shows the workflow to price an InflationBond
instrument when you use an inflationcurve
and an Inflation
pricing method.
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 IssueIndex: NaN 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
Price Multiple InflationBond
Instruments Using inflationcurve
and Inflation
Pricer
This example shows the workflow to price multiple InflationBond
instruments when you use an inflationcurve
and an Inflation
pricing method.
Create ratecurve
Object
Create a ratecurve
object using ratecurve
.
Settle = datetime(2020,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-2020 InterpMethod: "linear" ShortExtrapMethod: "next" LongExtrapMethod: "previous"
Create inflationcurve
Object
Create an inflationcurve
object using inflationcurve
.
BaseDate = datetime(2019,8,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 for three Inflation Bond instruments.
IssueDate = datetime([2020,1,1 ; 2019,12,1 ; 2019,11,1]); Maturity = datetime([2026,1,1 ; 2026,2,1 ; 2026,3,1]); CouponRate = 0.02; InflationBond = fininstrument("InflationBond",'IssueDate',IssueDate,'Maturity',Maturity,'CouponRate',CouponRate,'Name',"inflation_bond_instrument")
InflationBond=3×1 InflationBond array with properties:
CouponRate
Period
Basis
Principal
DaycountAdjustedCashFlow
Lag
IssueIndex
BusinessDayConvention
Holidays
EndMonthRule
IssueDate
FirstCouponDate
LastCouponDate
Maturity
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 InflationBond
Instruments
Use price
to compute the prices and sensitivities for the InflationBond
instruments.
[Price, outPR] = price(outPricer, InflationBond)
Price = 3×1
112.8769
113.1022
113.3434
outPR=1×3 priceresult array with properties:
Results
PricerData
outPR.Results
ans=table
Price
______
112.88
ans=table
Price
_____
113.1
ans=table
Price
______
113.34
Price InflationBond
Instrument With Specified IssueIndex
Using inflationcurve
and Inflation
Pricer
This example shows the workflow to price an InflationBond
instrument with a specified IssueIndex
when you use an inflationcurve
and an Inflation
pricing method.
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 With Specified IssueIndex
Use fininstrument
to create an InflationBond
instrument object with a specified issue index by using the IssueIndex
name-value argument. Specifying the IssueIndex
in the InflationBond
instrument overrides the issue index implied by the inflationcurve
object.
IssueDate = datetime(2021, 1, 1); Maturity = datetime(2026, 1, 1); CouponRate = 0.02; Period = 1; IssueIndex = 100.15; InflationBond = fininstrument("InflationBond", ... IssueDate=IssueDate, Maturity=Maturity, IssueIndex=IssueIndex, ... CouponRate=CouponRate, Period=Period)
InflationBond = InflationBond with properties: CouponRate: 0.0200 Period: 1 Basis: 0 Principal: 100 DaycountAdjustedCashFlow: 0 Lag: 3 IssueIndex: 100.1500 BusinessDayConvention: "actual" Holidays: NaT EndMonthRule: 1 IssueDate: 01-Jan-2021 FirstCouponDate: NaT LastCouponDate: NaT Maturity: 01-Jan-2026 Name: ""
Create Inflation
Pricer Object
Use finpricer
to create an Inflation
pricer object and use the ratecurve
object with the DiscountCurve
name-value argument and the inflationcurve
object with the InflationCurve
name-value 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 for the InflationBond
instrument.
Price = price(outPricer,InflationBond)
Price = 112.0263
More About
Inflation-Indexed Bond
An inflation-indexed bond is a security ensuring a return above inflation if held to maturity. Inflation-indexed securities link their capital appreciation, or coupon payments, to inflation rates.
The Inflation-indexed bond principal value and interest payments are linked to an inflation index like the Consumer Price Index (CPI), that adjusts with inflation. This adjustment ensures the bondholder's investment and interest income maintain their purchasing power, providing a return that keeps pace with inflation.
Algorithms
To price an inflation-indexed bond, use an inflation curve and a nominal discount curve (model-free approach), where the cash flows are discounted using the nominal discount curve.
where
Pn is the nominal zero-coupon bond price.
Pr is the real zero-coupon bond price.
k is the fixed inflation rate.
I(0,T) is the breakeven inflation index for period (0,T).
I(0) is the inflation index at (t = 0).
I(T0) is the base inflation index at the issue date (t = T0).
BTIPS(0,TM) is the inflation-indexed bond price.
I(Ti-1) is the inflation index at the start date with some lag (for example, three months).
C is the coupon.
F is the face value.
References
[1] Brody, D. C., Crosby, J., and Li, H. "Convexity Adjustments in Inflation-Linked Derivatives." Risk Magazine. November 2008, pp. 124–129.
[2] Kerkhof, J. "Inflation Derivatives Explained: Markets, Products, and Pricing." Fixed Income Quantitative Research, Lehman Brothers, July 2005.
[3] Treasury Inflation-Protected Securities (TIPS) at: https://www.treasurydirect.gov/.
[4] Zhang, J. X. "Limited Price Indexation (LPI) Swap Valuation Ideas." Wilmott Magazine. no. 57, January 2012, pp. 58–69.
Version History
Introduced in R2021aR2023b: Support for IssueIndex
Property
You can use the name-value argument IssueIndex
to specify the
Consumer Price Index (CPI) at the instrument issue date.
R2022b: Serial date numbers not recommended
Although InflationBond
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.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)