pyld2zero
Zero curve given par yield curve
In R2017b, the specification of optional input arguments has changed. While the
previous ordered inputs syntax is still supported, it may no longer be supported in
a future release. Use the new optional name-value pair inputs:
InputCompounding, InputBasis,
OutputCompounding, and
OutputBasis.
Syntax
Description
[
returns a zero curve given a par yield curve and its maturity dates. If either
input for ZeroRates,CurveDates] = pyld2zero(ParRates,CurveDates,Settle)CurveDates or Settle is a
datetime array, CurveDates is returned as a datetime array.
Otherwise, CurveDates is returned as a serial date number.
[
adds optional name-value pair argumentsZeroRates,CurveDates] = pyld2zero(___,Name,Value)
Examples
Define the settlement date, maturity, and zero rates.
Settle = datenum('01-Feb-2013');
CurveDates = datemnth(Settle,12*[1 2 3 5 7 10 20 30]');
ZeroRates = [.11 0.30 0.64 1.44 2.07 2.61 3.29 3.55]'/100;
InputCompounding = 2;
InputBasis = 1;
OutputCompounding = 2;
OutputBasis = 1;Compute par yield curve from zero rates.
ParRates = zero2pyld(ZeroRates, CurveDates, Settle,'InputCompounding',2,... 'InputBasis',1,'OutputCompounding',2,'OutputBasis',1)
ParRates = 8×1
0.0011
0.0030
0.0064
0.0142
0.0201
0.0251
0.0309
0.0330
Compute zero curve from the par yield curve.
ZeroRates = pyld2zero(ParRates, CurveDates, Settle,'InputCompounding',2,... 'InputBasis',1,'OutputCompounding',2,'OutputBasis',1)
ZeroRates = 8×1
0.0011
0.0030
0.0064
0.0144
0.0207
0.0261
0.0329
0.0355
Use datetime inputs to compute the zero curve given the par yield curve.
Settle = datetime(2013,2,1);
CurveDates = [datetime(2014,2,1)
datetime(2015,2,1)
datetime(2016,2,1)
datetime(2018,2,1)
datetime(2020,2,1)
datetime(2023,2,1)
datetime(2033,2,1)
datetime(2043,2,1)];
OriginalParRates = [0.11 0.30 0.64 1.42 2.02 2.51 3.10 3.31]'/100;
InputCompounding = 1;
InputBasis = 0;
OutputCompounding = 1;
OutputBasis = 0;
[ZeroRates Dates] = pyld2zero(OriginalParRates, CurveDates, Settle, ...
'OutputCompounding', OutputCompounding, 'OutputBasis', OutputBasis, ...
'InputCompounding', InputCompounding, 'InputBasis', InputBasis)ZeroRates = 8×1
0.0011
0.0030
0.0064
0.0144
0.0207
0.0261
0.0329
0.0356
Dates = 8×1 datetime
01-Feb-2014
01-Feb-2015
01-Feb-2016
01-Feb-2018
01-Feb-2020
01-Feb-2023
01-Feb-2033
01-Feb-2043
Given the following a par yield curve and its maturity dates, return the ZeroRates.
Settle = datetime(2013,2,1);
CurveDates = [datetime(2014,2,1)
datetime(2015,2,1)
datetime(2016,2,1)
datetime(2018,2,1)
datetime(2020,2,1)
datetime(2023,2,1)
datetime(2033,2,1)
datetime(2043,2,1)];
OriginalParRates = [0.11 0.30 0.64 1.42 2.02 2.51 3.10 3.31]'/100;
InputCompounding = 1;
InputBasis = 0;
OutputCompounding = 1;
OutputBasis = 0;
ZeroRates = pyld2zero(OriginalParRates, CurveDates, Settle, ...
'OutputCompounding', OutputCompounding, 'OutputBasis', OutputBasis, ...
'InputCompounding', InputCompounding, 'InputBasis', InputBasis)ZeroRates = 8×1
0.0011
0.0030
0.0064
0.0144
0.0207
0.0261
0.0329
0.0356
With the ZeroRates, use the zero2pyld function to return the ParRatesOut and determine the roundtrip error.
ParRatesOut = zero2pyld(ZeroRates, CurveDates, Settle, ... 'OutputCompounding', OutputCompounding, 'OutputBasis', OutputBasis, ... 'InputCompounding', InputCompounding, 'InputBasis', InputBasis)
ParRatesOut = 8×1
0.0011
0.0030
0.0064
0.0142
0.0202
0.0251
0.0310
0.0331
max(abs(OriginalParRates - ParRatesOut)) % Roundtrip errorans = 1.2750e-16
Input Arguments
Annualized par yields (coupon rates), specified as a
NUMBONDS-by-1 vector using
decimal fractions. In aggregate, the rates constitute an implied zero
curve for the investment horizon represented by
CurveDates.
Data Types: double
Maturity dates which correspond to the input
ParRates, specified as a
NUMBONDS-by-1 vector using a
datetime array, string array, or date character vectors.
To support existing code, pyld2zero also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: datetime | string | char
Common settlement date for input ParRates,
specified as a scalar datetime, string, or data character vector.
To support existing code, pyld2zero also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: datetime | string | char
Name-Value Arguments
Specify 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: [ZeroRates,CurveDates] =
pyld2zero(ParRates,CurveDates,Settle,'OutputCompounding',3,'OutputBasis',5,'InputCompounding',4,'InputBasis',5)
Compounding frequency of output ZeroRates,
specified using the allowed values:
0— Simple interest (no compounding)1— Annual compounding2— Semiannual compounding (default)3— Compounding three times per year4— Quarterly compounding6— Bimonthly compounding12— Monthly compounding365— Daily compounding-1— Continuous compounding
Note
If
OutputCompoundingis set to0(simple),-1(continuous), or365(daily), theInputCompoundingmust also be specified using a valid value.If
OutputCompoundingis not specified, thenOutputCompoundingis assigned the value specified forInputCompounding.If either
OutputCompoundingorInputCompoundingare not specified, the default is2(semiannual) for both.
Data Types: double
Day count basis of output ZeroRates,
specified using allowed 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.
Note
If OutputBasis is not specified, then
OutputBasis is assigned the value
specified for InputBasis. If either
InputBasis or
OutputBasis are not specified, the
default is 0 (actual/actual) for both.
Data Types: double
Compounding frequency of input ParRates,
specified using allowed values:
1— Annual compounding2— Semiannual compounding (default)3— Compounding three times per year4— Quarterly compounding6— Bimonthly compounding12— Monthly compounding
Note
If
OutputCompoundingis1,2,3,4,6, or12andInputCompoundingis not specified, the value ofOutputCompoundingis used.If
OutputCompoundingis0(simple),-1(continuous), or365(daily), a validInputCompoundingvalue must also be specified.If either
InputCompoundingorOutputCompoundingare not specified, the default is2(semiannual) for both.
Data Types: double
Day count basis of the input ParRates,
specified using allowed 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.
Note
If InputBasis is not specified, then
InputBasis is assigned the value
specified for OutputBasis. If either
InputBasis or
Outputbasis are not specified, the
default is 0 (actual/actual) for both.
Data Types: double
Output Arguments
Zero rates, returned as a
NUMBONDS-by-1 numeric vector.
In aggregate, the rates in ZeroRates constitute a
zero curve for the investment horizon represented by
CurveDates. ZeroRates are
ordered by ascending maturity.
Maturity dates that correspond to the ZeroRates,
returned as a NUMBONDS-by-1 vector
of maturity dates that correspond to each par rate contained in
ZeroRates. CurveDates are
ordered by ascending maturity.
If either input for CurveDates or
Settle is a datetime array,
CurveDates is returned as a datetime array.
Otherwise, CurveDates are returned as a serial date
numbers. Use the function datetime to convert serial
date numbers to formatted datetime arrays.
More About
Par yield is a financial term that refers to the coupon rate of a bond that is trading at par value, which means it is priced at its face value.
The par yield is the interest rate at which the present value of the bond's future cash flows (coupon payments and the face value at maturity) equals its current market price.
Version History
Introduced before R2006aAlthough pyld2zero 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.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- 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)