zero2disc
Discount curve given zero curve
Syntax
Description
[
returns a discount curve given a zero curve and its maturity dates. If either inputs
for or areDiscRates,CurveDates] = zero2disc(ZeroRates,CurveDates,Settle)CurveDatesSettle a datetime
array, CurveDates is returned as a datetime array. Otherwise,
CurveDates is returned as a serial date number. Use the
function datetime to convert serial date
numbers to formatted datetime arrays. The DiscRates output is the
same for any of these input data types.
[
adds optional name-value pair argumentsDiscRates,CurveDates] = zero2disc(___,Name,Value)
Examples
Given a zero curve over a set of maturity dates and a settlement date, compute a discount curve using datetime inputs.
ZeroRates = [0.0464
0.0509
0.0524
0.0525
0.0531
0.0525
0.0530
0.0531
0.0549
0.0536];
CurveDates = [datetime(2000,11,6)
datetime(2000,12,11)
datetime(2001,1,15)
datetime(2001,4,2)
datetime(2001,4,30)
datetime(2001,6,25)
datetime(2001,9,4)
datetime(2001,11,12)
datetime(2001,2,5)
datetime(2001,3,4)];
% Note, the input CurveDates do not need to be in chronological order, ZERO2DISC automatically sorts
% the output CurveDates by the curve dates.
Settle = datetime(2000,11,3);
Compounding = 365;
Basis = 3;
[DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates, ...
Settle, Compounding, Basis)DiscRates = 10×1
0.9996
0.9947
0.9896
0.9860
0.9824
0.9787
0.9744
0.9669
0.9567
0.9470
CurveDates = 10×1 datetime
06-Nov-2000
11-Dec-2000
15-Jan-2001
05-Feb-2001
04-Mar-2001
02-Apr-2001
30-Apr-2001
25-Jun-2001
04-Sep-2001
12-Nov-2001
Input Arguments
Annualized zero rates, specified as a
NUMBONDS-by-1 vector using
decimal fractions. In aggregate, the zero rates constitute an implied
zero curve for the investment horizon represented by
CurveDates.
Data Types: double
Maturity dates that correspond to the input
ZeroRates, specified as
NUMBONDS-by-1 vector using a
datetime array, string array, or date character vectors.
Note
The input CurveDates does not need to be in
chronological order, zero2disc automatically
sorts the output CurveDates by the curve
dates.
To support existing code, zero2disc also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: datetime | string | char
Common settlement date for ZeroRates, specified
as a scalar datetime, string, or date character vector.
Settle is the settlement date for the bonds from
which the zero curve was bootstrapped.
To support existing code, zero2disc 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: [DiscRates,CurveDates] =
zero2disc(ZeroRates,CurveDates,Settle,'Compounding',4,'Basis',6)
Rate at which the input ZeroRates are
compounded when annualized, specified as the comma-separated pair
consisting of 'Compounding' and allowed numeric
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
Data Types: double
Day-count basis used for annualizing the input
ZeroRates, specified as the comma-separated
pair consisting of 'Basis' and allowed numeric
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
Output Arguments
Discount factors, returned as a
NUMBONDS-by-1 vector of
decimal fractions. In aggregate, the discount factors constitute a
discount curve for the investment horizon represented by
CurveDates.
Maturity dates that correspond to the DiscRates,
returned as a NUMBONDS-by-1 vector
of maturity dates that correspond to the discount factors. This vector
is the same as the input vector CurveDates, but is
sorted by ascending maturity.
If either inputs for CurveDates or
Settle are a datetime array,
CurveDates is returned as a datetime array.
Otherwise, CurveDates is returned as a serial date
number. Use the function datetime to convert serial
date numbers to formatted datetime arrays.
Version History
Introduced before R2006aAlthough zero2disc 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.
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 optional name-value pair inputs: Compounding
and Basis.
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)