Financial Toolbox | ![]() ![]() |
Price bonds in a portfolio by a set of zero curves
Syntax
Arguments
Description
BondPrices = prbyzero(Bonds, Settle, ZeroRates, ZeroDates)
computes the bond prices in a portfolio using a set of zero curves.
BondPrices
is a NUMBONDS
-by-NUMCURVES
matrix of clean bond prices. Each column is derived from the corresponding zero curve in ZeroRates
.
Examples
This example uses zbtprice
to compute a zero curve given a portfolio of coupon bonds and their prices. It then reverses the process, using the zero curve as input to prbyzero
to compute the prices.
Bonds
= [datenum('6/1/1998') 0.0475 100 2 0 0;
datenum('7/1/2000') 0.06 100 2 0 0;
datenum('7/1/2000') 0.09375 100 6 1 0;
datenum('6/30/2001') 0.05125 100 1 3 1;
datenum('4/15/2002') 0.07125 100 4 1 0;
datenum('1/15/2000') 0.065 100 2 0 0;
datenum('9/1/1999') 0.08 100 3 3 0;
datenum('4/30/2001') 0.05875 100 2 0 0;
datenum('11/15/1999') 0.07125 100 2 0 0;
datenum('6/30/2000') 0.07 100 2 3 1;
datenum('7/1/2001') 0.0525 100 2 3 0;
datenum('4/30/2002') 0.07 100 2 0 0];
Prices = [ 99.375;
99.875;
105.75 ;
96.875;
103.625;
101.125;
103.125;
99.375;
101.0 ;
101.25 ;
96.375;
102.75 ];
Settle = datenum('12/18/1997');
Set semi-annual compounding for the zero curve, on an actual/365 basis. Derive the zero curve within 50 iterations.
Execute zbtprice
[ZeroRates, ZeroDates] = zbtprice(Bonds, Prices, Settle,... OutputCompounding, OutputBasis, MaxIterations)
which returns the zero curve at the maturity dates.
ZeroRates = 0.0616 0.0609 0.0658 0.0590 0.0648 0.0655 0.0606 0.0601 0.0642 0.0621 0.0627 ZeroDates = 729907 730364 730439 730500 730667 730668 730971 731032 731033 731321 731336
In this example zbtprice
and prbyzero
do not exactly reverse each other. Many of the bonds have the end-of-month rule off (EndMonthRule = 0
). The rule subtly affects the time factor computation. If you set the rule on (EndMonthRule = 1
) everywhere in the Bonds
matrix, then prbyzero
returns the original prices, except when the two incompatible prices fall on the same maturity date.
See Also
![]() | portvrisk | prdisc | ![]() |