zero2fwd
Forward curve given zero curve
Syntax
Description
[
returns an implied forward rate curve given a zero curve and its maturity dates. If
either input for ForwardRates,CurveDates] = zero2fwd(ZeroRates,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. Use
the function datetime to convert serial date
numbers to formatted datetime arrays. ForwardRates is the same
for any of these input data types.
[
adds optional name-value pair argumentsForwardRates,CurveDates] = zero2fwd(___,Name,Value)
Examples
Given a zero curve over a set of maturity dates, a settlement date, and a compounding rate, use datetime compute the forward rate curve.
ZeroRates = [0.0458
0.0502
0.0518
0.0519
0.0524
0.0519
0.0523
0.0525
0.0541
0.0529];
CurveDates = [datetime(2000,11,6)
datetime(2000,12,11)
datetime(2001,1,15)
datetime(2001,2,5)
datetime(2001,3,4)
datetime(2001,4,2)
datetime(2001,4,30)
datetime(2001,6,25)
datetime(2001,9,4)
datetime(2001,11,12)];
Settle = datetime(2000,11,3);
InputCompounding = 1;
InputBasis = 2;
OutputCompounding = 1;
OutputBasis = 2;
[ForwardRates, CurveDates] = zero2fwd(ZeroRates, CurveDates,...
Settle,'InputCompounding',1,'InputBasis',2,'OutputCompounding',1,'OutputBasis',2)ForwardRates = 10×1
0.0458
0.0506
0.0535
0.0522
0.0541
0.0498
0.0544
0.0531
0.0594
0.0476
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 rates constitute an implied zero
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
Maturity dates, specified as a
NUMBONDS-by-1 vector using a
datetime array, string array, or date character vectors that correspond to
the ZeroRates.
To support existing code, zero2fwd also
accepts serial date numbers as inputs, but they are not recommended.
Data Types: datetime | string | char
Common settlement date for input ZeroRates,
specified as scalar datetime, string, or date character vector.
To support existing code, zero2fwd 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: [ForwardRates,CurveDates] =
zero2fwd(ZeroRates,CurveDates,Settle,'InputCompounding',3,'InputBasis',5,'OutputCompounding',4,'OutputBasis',5)
Compounding frequency of input zero rates, specified as the
comma-separated pair consisting of 'InputCompounding'
and 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 (semiannual) for both.
Data Types: double
Day count basis of input zero rates, specified as the
comma-separated pair consisting of 'InputBasis' and
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
Compounding frequency of output forward rates, specified as the
comma-separated pair consisting of
'OutputCompounding' and 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
Day count basis of output forward rates, specified as the
comma-separated pair consisting of 'OutputBasis' and
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
Output Arguments
Forward curve for the investment horizon represented by
CurveDates, returned as a
NUMBONDS-by-1 vector of
decimal fractions. In aggregate, the rates in
ForwardRates constitute a forward curve over the
dates in CurveDates.
ForwardRates are ordered by ascending
maturity.
Maturity dates that correspond to the
ForwardRates, returned as a
NUMBONDS-by-1 vector of
maturity dates that correspond to the
ForwardRates.
ForwardRates are expressed as serial date numbers
(default) or datetimes (if CurveDates or
Settle are datetime arrays), representing the
maturity dates for each rate in ForwardRates. These
dates are the same dates as those associated with the input
ZeroRates, but are ordered by ascending
maturity.
Version History
Introduced before R2006aAlthough zero2fwd 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 new optional name-value pair inputs:
InputCompounding, InputBasis,
OutputCompounding, and
OutputBasis.
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)