cfport
Portfolio form of cash flow amounts
Syntax
Description
[
computes a vector of all cash flow dates of a bond portfolio, and a matrix mapping
the cash flows of each bond to those dates. Use the matrix for pricing the bonds
against a curve of discount factors.CFBondDate
,AllDates
,AllTF
,IndByBond
] = cfport(CFlowAmounts
,CFlowDates
)
Examples
Calculate the Cash Flow Amounts, Cash Flow Dates, and Time Factors for Each of Two Bonds
Use the function cfamounts
to calculate the cash flow amounts, cash flow dates, and time factors for each of two bonds. Then use the function cfplot
to plot the cash flow diagram.
Settle = '03-Aug-1999'; Maturity = ['15-Aug-2000';'15-Dec-2000']; CouponRate= [0.06; 0.05]; Period = [3;2]; Basis = [1;0]; [CFlowAmounts, CFlowDates, TFactors] = cfamounts(CouponRate,... Settle, Maturity, Period, Basis); cfplot(CFlowDates,CFlowAmounts) xlabel('Numeric Cash Flow Dates') ylabel('Bonds') title('Cash Flow Diagram')
Call the function cfport
to map the cash flow amounts to the cash flow dates. Each row in the resultant CFBondDate
matrix represents a bond. Each column represents a date on which one or more of the bonds has a cash flow. A 0 means the bond did not have a cash flow on that date. The dates associated with the columns are listed in AllDates
. For example, the first bond had a cash flow of 2.000
on 730347
. The second bond had no cash flow on this date For each bond, IndByBond
indicates the columns of CFBondDate
, or dates in AllDates
, for which a bond has a cash flow.
[CFBondDate, AllDates, AllTF, IndByBond] = ...
cfport(CFlowAmounts, CFlowDates, TFactors)
CFBondDate = 2×7
-1.8000 2.0000 2.0000 2.0000 0 102.0000 0
-0.6694 0 2.5000 0 2.5000 0 102.5000
AllDates = 7×1
730335
730347
730469
730591
730652
730713
730835
AllTF = 7×1
0
0.0663
0.7322
1.3989
1.7322
2.0663
2.7322
IndByBond = 2×5
1 2 3 4 6
1 3 5 7 NaN
Calculate the Cash Flow Amounts, Cash Flow Dates Using a datetime
Array, and Time Factors for Each of Two Bonds
Use the function cfamounts
to calculate the cash flow amounts, cash flow dates, and time factors for each of two bonds.
Settle = datetime(1999,8,3); Maturity = ['15-Aug-2000';'15-Dec-2000']; CouponRate= [0.06; 0.05]; Period = [3;2]; Basis = [1;0]; [CFlowAmounts, CFlowDates, TFactors] = cfamounts(CouponRate,... Settle, Maturity, Period, Basis);
Call the function cfport
to map the cash flow amounts to the cash flow dates. Each row in the resultant CFBondDate
matrix represents a bond. Each column represents a date on which one or more of the bonds has a cash flow. A 0
means the bond did not have a cash flow on that date. The dates associated with the columns are listed in AllDates
returned as a datetime array.
[CFBondDate, AllDates, AllTF, IndByBond] = ...
cfport(CFlowAmounts, CFlowDates, TFactors)
CFBondDate = 2×7
-1.8000 2.0000 2.0000 2.0000 0 102.0000 0
-0.6694 0 2.5000 0 2.5000 0 102.5000
AllDates = 7x1 datetime
03-Aug-1999
15-Aug-1999
15-Dec-1999
15-Apr-2000
15-Jun-2000
15-Aug-2000
15-Dec-2000
AllTF = 7×1
0
0.0663
0.7322
1.3989
1.7322
2.0663
2.7322
IndByBond = 2×5
1 2 3 4 6
1 3 5 7 NaN
Input Arguments
CFlowAmounts
— Cash flow amounts
matrix
Cash flow amounts, specified as number of bonds
(NUMBONDS
) by number of cash flows
(NUMCFS
) matrix with entries listing cash flow
amounts corresponding to each date in CFlowDates
.
Data Types: double
CFlowDates
— Cash flow dates
serial date numbers | date character vector | datetime array
Cash flow dates, specified as an
NUMBONDS
-by-NUMCFS
matrix with
rows listing cash flow dates using a serial date number, date character
vector, or datetime array, for each bond and padded with
NaN
s. If CFlowDates
is a serial
date number or a date character vector, AllDates
is
returned as an array of serial date numbers. If
CFlowDates
is a datetime array, then
AllDates
is returned as a datetime array.
Data Types: double
TFactors
— Time between settlement and the cash flow date
matrix
(Optional) Time between settlement and the cash flow date, specified as an
NUMBONDS
-by-NUMCFS
matrix with
entries listing the time between settlement and the cash flow date measured
in semiannual coupon periods.
Data Types: double
Output Arguments
CFBondDate
— Cash flows indexed by bond and by date
matrix
Cash flows indexed by bond and by date, returned as an
NUMBONDS
by number of dates
(NUMDATES
) matrix. Each row contains a bond's cash
flow values at the indices corresponding to entries in
AllDates
. Other indices in the row contain
zeros.
AllDates
— List of all dates that have any cash flow from the bond portfolio
matrix
List of all dates that have any cash flow from the bond portfolio,
returned as an NUMDATES
-by-1
matrix.
The AllDates
matrix is expressed in serial date format
(default) or datetime format (if CFlowDates
is in
datetime format).
IndByBond
— Indices by bond
matrix
Indices by bond, returned as an
NUMBONDS
-by-NUMCFS
matrix. The
ith row contains a list of indices into
AllDates
where the ith bond
has cash flows. Since some bonds have more cash flows than others, the
matrix is padded with NaN
s.
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)