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 datestr
to convert serial date
numbers to formatted date character vectors. ForwardRates
is
the same for any of these input data types.
[
adds optional name-value pair argumentsForwardRates
,CurveDates
] = zero2fwd(___,Name,Value
)
Examples
Compute an Implied Forward Rate Curve Given a Zero Curve and Maturity Dates Using datetime Inputs
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 = 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 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
CurveDates
— Maturity dates
datetime array | string array | date character vector
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
Settle
— Common settlement date for ZeroRates
datetime scalar | string scalar | date character vector
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)
InputCompounding
— Compounding frequency of input zero rates
2
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 12
,
365
, -1
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
InputBasis
— Day-count basis of input zero rates
0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
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
OutputCompounding
— Compounding frequency of output forward rates
2
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 12
,
365
, -1
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
OutputBasis
— Day-count basis of output forward rates
0
(default) | numeric values: 0
,1
,
2
, 3
,
4
, 6
, 7
,
8
, 9
,
10
, 11
,
12
, 13
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
ForwardRates
— Forward curve for investment horizon represented by CurveDates
numeric
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.
CurveDates
— Maturity dates that correspond to ForwardRates
datetime | serial date number
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 R2006aR2022b: Serial date numbers not recommended
Although 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.
R2017b: Support for optional name-value input arguments
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
.
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 bat365 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)