Zero curve given discount 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.
[
returns a zero curve given a discount curve and its maturity dates. If either
inputs for ZeroRates,CurveDates] = disc2zero(DiscRates,CurveDates,Settle)CurveDates or Settle are
datetime arrays, the output CurveDates is returned as
datetime arrays.
[
adds optional name-value pair argumentsZeroRates,CurveDates] = disc2zero(___,Name,Value)
Given the following discount factors DiscRates over a set of maturity dates CurveDates, and a settlement date Settle:
DiscRates = [0.9996
0.9947
0.9896
0.9866
0.9826
0.9786
0.9745
0.9665
0.9552
0.9466];
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');Set daily compounding for the output zero curve, on an actual/365 basis.
Compounding = 365; Basis = 3;
Execute the function disc2zero which returns the zero curve ZeroRates at the maturity dates CurveDates.
[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates,... Settle, Compounding, Basis)
ZeroRates = 10×1
0.0487
0.0510
0.0523
0.0524
0.0530
0.0526
0.0530
0.0532
0.0549
0.0536
CurveDates = 10×1
730796
730831
730866
730887
730914
730943
730971
731027
731098
731167
For readability, DiscRates and ZeroRates are shown here only to the basis point. However, MATLAB® software computed them at full precision. If you enter DiscRates as shown, ZeroRates may differ due to rounding.
Given the following discount factors, DiscRates, over a set of maturity dates, CurveDates, and a settlement date, Settle, use datetime inputs to return the zero curve, ZeroRates, at the maturity dates, CurveDates.
DiscRates = [0.9996
0.9947
0.9896
0.9866
0.9826
0.9786
0.9745
0.9665
0.9552
0.9466];
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');
[ZeroRates, CurveDates] = disc2zero(DiscRates, CurveDates,...
Settle, Compounding, Basis)ZeroRates = 10×1
0.0487
0.0510
0.0523
0.0524
0.0530
0.0526
0.0530
0.0532
0.0549
0.0536
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
DiscRates — Discount factors Discount factors, specified as a column vector of decimal fractions.
In aggregate, the factors in DiscRates constitute a
discount curve for the investment horizon represented by
CurveDates.
Data Types: double
CurveDates — Maturity datesMaturity dates that correspond to the discount factors in
DiscRates, specified as a column vector using
serial date numbers, date character vectors, or datetime arrays.
Data Types: double | datetime | char
Settle — Common settlement date for discount rates in DiscRatesCommon settlement date for the discount rates in
DiscRates, specified as serial date numbers,
date character vectors, or datetime arrays.
Data Types: double | datetime | char
Specify optional
comma-separated pairs of Name,Value arguments. Name is
the argument name and Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN.
[ZeroRates,CurveDates] =
disc2zero(DiscRates,CurveDates,Settle,'Compounding',6,'Basis',9)'Compounding' — Rate at which output zero rates are compounded when annualized2 (default) | numeric values: 0,1,
2, 3,
4, 6, 12,
365, -1Rate at which the output zero rates are compounded when annualized, specified as a numeric value. Allowed values are:
0 — Simple interest (no
compounding)
1 — Annual
compounding
2 — Semiannual compounding
(default)
3 — Compounding three times
per year
4 — Quarterly
compounding
6 — Bimonthly
compounding
12 — Monthly
compounding
365 — Daily
compounding
-1 — Continuous
compounding
Data Types: double
'Basis' — Day-count basis used for annualizing output zero rates0 (default) | numeric values: 0,1,
2, 3,
4, 6, 7,
8, 9,
10, 11,
12, 13Day-count basis used for annualizing the output zero rates, specified as a numeric value. Allowed values are:
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
ZeroRates — Zero curve for investment horizon represented by CurveDates Zero curve for the investment horizon represented by
CurveDates, returned as a column vector of
decimal fractions. The zero rates are the yields to maturity on
theoretical zero-coupon bonds.
CurveDates — Maturity dates that correspond to ZeroRatesdatetime | fwd2zero | prbyzero | pyld2zero | zbtprice | zbtyield | zero2disc | zero2disc | zero2fwd | zero2pyld
You have a modified version of this example. Do you want to open this example with your edits?