zero2disc
Discount curve given zero 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 optional name-value pair inputs:
Compounding
and Basis
.
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
)CurveDates
Settle
a
datetime array, CurveDates
is returned as a datetime array.
Otherwise, CurveDates
is returned as a serial date number.
The DiscRates
output is the same for any of these input data
types.
[
adds optional name-value pair argumentsDiscRates
,CurveDates
] = zero2disc(___,Name,Value
)
Examples
Compute a Discount Curve Given a Zero Curve and Maturity Dates
Given a zero curve over a set of maturity dates and a settlement date.
ZeroRates = [0.0464 0.0509 0.0524 0.0525 0.0531 0.0525 0.0530 0.0531 0.0549 0.0536]; CurveDates = [datenum('06-Nov-2000') datenum('11-Dec-2000') datenum('15-Jan-2001') datenum('05-Feb-2001') datenum('04-Mar-2001') datenum('02-Apr-2001') datenum('30-Apr-2001') datenum('25-Jun-2001') datenum('04-Sep-2001') datenum('12-Nov-2001')]; Settle = datenum('03-Nov-2000');
The zero curve is compounded daily on an actual/365
basis.
Compounding = 365; Basis = 3;
Execute the function zero2disc
which returns the discount curve DiscRates
at the maturity dates CurveDates
.
[DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates,... Settle, Compounding, Basis)
DiscRates = 10×1
0.9996
0.9947
0.9896
0.9866
0.9826
0.9787
0.9745
0.9665
0.9552
0.9466
CurveDates = 10×1
730796
730831
730866
730887
730914
730943
730971
731027
731098
731167
For readability, ZeroRates
and DiscRates
are shown here only to the basis point. However, MATLAB® software computed them at full precision. If you enter ZeroRates
as shown, DiscRates
may differ due to rounding.
Compute a Discount Curve Given a Zero Curve and Maturity Dates Using datetime Inputs
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 = [datenum('06-Nov-2000') datenum('11-Dec-2000') datenum('15-Jan-2001') datenum('05-Feb-2001') datenum('04-Mar-2001') datenum('02-Apr-2001') datenum('30-Apr-2001') datenum('25-Jun-2001') datenum('04-Sep-2001') datenum('12-Nov-2001')]; Settle = datenum('03-Nov-2000'); Compounding = 365; Basis = 3; CurveDates = datetime(CurveDates, 'ConvertFrom', 'datenum','Locale','en_US'); Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US'); [DiscRates, CurveDates] = zero2disc(ZeroRates, CurveDates,... Settle, Compounding, Basis)
DiscRates = 10×1
0.9996
0.9947
0.9896
0.9866
0.9826
0.9787
0.9745
0.9665
0.9552
0.9466
CurveDates = 10x1 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
ZeroRates
— Annualized zero rates
decimal fraction
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
CurveDates
— Maturity dates
serial date number | date character vector | datetime
Maturity dates that correspond to the input
ZeroRates
, specified as
NUMBONDS
-by-1
vector using
serial date numbers, date character vectors, or datetime arrays.
Data Types: double
| datetime
| char
Settle
— Common settlement date for ZeroRates
serial date number | date character vector | datetime
Common settlement date for ZeroRates
, specified
as serial date numbers, date character vectors, or datetime arrays.
Settle
is the settlement date for the bonds from
which the zero curve was bootstrapped.
Data Types: double
| datetime
| 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)
Compounding
— Rate at which input ZeroRates
zero rates are compounded when annualized
2
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 12
,
365
, -1
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
Basis
— Day-count basis used for annualizing input ZeroRates
0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
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
DiscRates
— Discount factors
decimal
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
.
CurveDates
— Maturity dates that correspond to DiscRates
serial date number | date character vector | datetime
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.
Version History
Apri esempio
Si dispone di una versione modificata di questo esempio. Desideri aprire questo esempio con le tue modifiche?
Comando MATLAB
Hai fatto clic su un collegamento che corrisponde a questo comando MATLAB:
Esegui il comando inserendolo nella finestra di comando MATLAB. I browser web non supportano i comandi MATLAB.
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)