fwd2zero
Zero curve given forward 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 an implied forward rate curve and its maturity dates.
If both inputs for ZeroRates
,CurveDates
] = fwd2zero(ForwardRates
,CurveDates
,Settle
)CurveDates
and
Settle
are serial date numbers or date character
vectors, CurveDates
is returned as serial date numbers.
However, if either of the inputs for CurveDates
and
Settle
are a datetime array,
CurveDates
is returned as a datetime array.
[
adds optional name-value pair argumentsZeroRates
,CurveDates
] = fwd2zero(___,Name,Value
)
Examples
Compute the Zero Curve Given the Forward Curve
This example shows how to compute the zero curve, given an implied forward rate curve over a set of maturity dates, a settlement date, and a compounding rate.
ForwardRates = [0.0469 0.0519 0.0549 0.0535 0.0558 0.0508 0.0560 0.0545 0.0615 0.0486]; 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'); InputCompounding = 1; InputBasis = 2; OutputCompounding = 1; OutputBasis = 2;
Execute the function fwd2zero
to return the zero-rate curve ZeroRates
at the maturity dates CurveDates
.
[ZeroRates, CurveDates] = fwd2zero(ForwardRates, CurveDates,... Settle,'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)
ZeroRates = 10×1
0.0469
0.0515
0.0531
0.0532
0.0538
0.0532
0.0536
0.0539
0.0556
0.0543
CurveDates = 10×1
730796
730831
730866
730887
730914
730943
730971
731027
731098
731167
Compute the Zero Curve Given the Forward Curve Using datetime Inputs
This example shows how to use datetime
inputs compute the zero curve, given an implied forward rate curve over a set of maturity dates, a settlement date, and a compounding rate.
ForwardRates = [0.0469 0.0519 0.0549 0.0535 0.0558 0.0508 0.0560 0.0545 0.0615 0.0486]; 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'); InputCompounding = 1; InputBasis = 2; OutputCompounding = 1; OutputBasis = 2;CurveDates = datetime(CurveDates,'ConvertFrom','datenum','Locale','en_US'); Settle = datetime(Settle,'ConvertFrom','datenum','Locale','en_US'); [ZeroRates, CurveDates] = fwd2zero(ForwardRates, CurveDates,... Settle,'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)
ZeroRates = 10×1
0.0469
0.0515
0.0531
0.0532
0.0538
0.0532
0.0536
0.0539
0.0556
0.0543
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
ForwardRates
— Annualized implied forward rates
decimal fraction
Annualized implied forward rates, specified as a
(NUMBONDS
)-by-1
vector using
decimal fractions. In aggregate, the rates in
ForwardRates
constitute an implied forward curve
for the investment horizon represented by
CurveDates
. The first element pertains to
forward rates from the settlement date to the first curve date.
Data Types: double
CurveDates
— Maturity dates
serial date number | date character vector | datetime
Maturity dates, specified as a
NUMBONDS
-by-1
vector using
serial date numbers, date character vectors, or datetime arrays, that
correspond to the ForwardRates
.
Data Types: double
| datetime
| char
Settle
— Common settlement date for ForwardRates
serial date number | date character vector | datetime
Common settlement date for ForwardRates
,
specified as serial date numbers, date character vectors, or datetime
arrays.
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: [ZeroRates,CurveDates] =
fwd2zero(ForwardRates,CurveDates,Settle,'InputCompounding',3,'InputBasis',5,'OutputCompounding',4,'OutputBasis',5)
InputCompounding
— Compounding frequency of input forward rates
2
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 12
,
365
, -1
Compounding frequency of input forward rates, specified with 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 InputCompounding
is not specified,
then InputCompounding
is assigned the
value specified for OutputCompounding
.
If either InputCompounding
or
OutputCompounding
are not
specified, the default is 2
Data Types: double
InputBasis
— Day-count basis of input forward rates
0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
Day count basis of input forward 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.
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
OutputCompounding
— Compounding frequency of output zero rates
2
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 12
,
365
, -1
Compounding frequency of output zero rates, specified with 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 OutputCompounding
is not specified,
then OutputCompounding
is assigned the
value specified for InputCompounding
.
If either InputCompounding
or
OutputCompounding
are not specified,
the default is 2
(semiannual) for
both.
Data Types: double
OutputBasis
— Day-count basis of output zero rates
0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
Day count basis of 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.
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
Output Arguments
ZeroRates
— Zero curve for investment horizon represented by CurveDates
numeric
Zero curve for the investment horizon represented by
CurveDates
, returned as a
NUMBONDS
-by-1
vector of
decimal fractions. In aggregate, the rates in
ZeroRates
constitute a zero curve for the
investment horizon represented by
CurveDates
.
CurveDates
— Maturity dates that correspond to ZeroRates
serial date number | date character vector | datetime
Maturity dates that correspond to the ZeroRates
,
returned as a NUMBONDS
-by-1
vector
of maturity dates that correspond to the zero rates in
ZeroRates
. This vector is the same as the input
vector CurveDates
, but is sorted by ascending
maturity.
If both inputs for CurveDates
and
Settle
are serial date numbers or date
character vectors, CurveDates
is returned as serial
date numbers. However, if either of the inputs for
CurveDates
and Settle
are
a datetime array, CurveDates
is returned as a
datetime array.
Version History
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
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)